{"version":3,"file":"main.b18a7af8b617c302.js","mappings":";AAAA,aAAa,kBAAkB,wBAAwB,sCAAsC,sDAAsD,kBAAkB,qBAAqB,wFAAwF,yBAAyB,SAAS,4rBAA4rB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,gBAAgB,0HAA0H,gVAAgV,yH;0JCGl+C,MAAMA,EAAiB,CACrB,CACEC,KAAM,SACNC,aAAc,IAAMC,4BAAyCC,KAAMC,GAAMA,EAAEC,gBAQxE,IAAMC,EAAb,MAAM,sDAAOA,4DAHF,CAACC,cAAsBR,IACtBQ,QAECD,GAAb,EAAaA,8GCRb,MAAME,EACJC,OAAOC,UAAUC,UAAUC,QAAQ,UAAW,GAC9CH,OAAOC,UAAUC,UAAUC,QAAQ,aAAc,EAEtCC,EAAc,CACzBC,MAAO,CACLC,eAAgB,wBAChBC,YAAa,qBACbC,kBAAmB,2BACnBC,0BAA2B,oCAE7BC,YAAa,CACXJ,eAAgB,CACdK,UAAW,WAAWC,kBAA0BA,wDAElDL,YAAa,CACXI,UAAW,WAAWC,kBAA0BA,sDAGpDC,gBAAiBD,gBAGNE,EAA4B,CACvCC,KAAM,CACJC,SAAUJ,iBACVD,UAAWP,EAAYM,YAAYJ,eAAeK,UAClDM,iBAAkB,CAACb,EAAYS,iBAC/BK,2BAA2B,EAC3BC,sBAAuB,KAEzBC,MAAO,CACLC,cAAeC,kBACfC,uBAAwBxB,GAE1ByB,OAAQ,CACNC,uBAAuB,EACvBC,cAAe,CACbC,eAAgB,OAChBC,mBAAmB,KAqCZC,EAAe,CAC1BC,OAAQ,CAAC,mBAeL,WAAuBC,EAAoBC,EAAkBC,GACjE,MAAO,WAAWrB,kBAChBA,0CAC0BmB,eAC1BnB,oDAEkCqB,kEAA2EC,OAC7GF,6GCrGEG,iBAGC,SAQGA,iBACFA,oKCLD,IAAMC,EAAb,MAAM,QAGJC,cADSC,aAAU1B,YAKnB2B,WACED,KAAKE,aAAc,IAAIC,MAAOC,4DARrBN,8BAAqBO,2GDiBcC,0CAAAA,GAlB1BA,wBAAAA,grBATtBT,eAAuD,UAAvDA,CAAuD,WAGjDA,uBAeAA,iBAEAA,iBAOEA,SAA6BA,2BAAmDA,uBA3BnFA,mDAIIA,6CAiBDA,iFAMAA,q9gCCjBKC,GAAb,EAAaA,4ECFN,IAAMS,EAAb,MAAM,QACJR,6DADWQ,8BAAwBF,oLCRrCR,iBACEA,SACFA,0CDMaU,GAAb,EAAaA,gMEPXV,SACEA,eAEEA,yDAASW,iCAITX,SACFA,QACFA,gCALIA,sCAAqB,oCAGrBA,8EAGJA,SACEA,eAEEA,yDAASY,iCAKTZ,SACFA,QACFA,gCANIA,sCAAqB,mCAArBA,CAAqB,qCAIrBA,+DAGJA,SACEA,eACEA,SACFA,QACFA,8BAHiDA,wCAC7CA,+DAGJA,SACGA,eAAsDA,SAAgBA,QAAIA,8BAA1CA,wCAAsBA,8BCfpD,IAAMa,EAAb,MAAM,QAuBJX,YAC6BL,EACnBiB,GADmBX,gBACnBA,cAtBDA,gBAAiC,SAEjCA,YAAS,CAChBY,gBAAiBC,qBACjBC,SAAUC,eAoBVf,KAAKgB,aAAehB,KAAKW,OAAOM,OAC7BC,MACCC,OAAU,IAAIC,KAAc,EAAG1D,OAAO2D,SAASC,SAAU5D,OAAO2D,SAASC,YACzEC,OAAQC,GAAMA,aAAaJ,OAE5BK,UAAWD,IACVxB,KAAK0B,MAAQF,EAAEG,IAAIC,QAAQ,IAAI5B,KAAKN,WAAY,IAAImC,MAAM,KAAK,KApB1DC,gBACT,MAAO,GAAG9B,KAAK+B,WAAa,WAAa,cACvC/B,KAAKgC,YAAc,YAAc,YAIzBD,uBACV,OAAuC,QAAhCE,OAAKC,KAAKP,IAAIQ,WAAW,eAAOC,QAAI,CAgB7CC,cACErC,KAAKgB,aAAasB,cAGpBC,aAAaZ,GACX,OAAIA,IAAQ,IAAI3B,KAAKwC,OAAO5B,mBAClBZ,KAAK0B,QACN,IAAI1B,KAAKwC,OAAO1B,UAOhB,CAIX2B,qBAAqBP,GACfA,EAAKP,IAAIQ,WAAW,OACtBO,uDAxDOhC,GAAmBb,MAwBpB8C,OAAS9C,sCAxBRa,EAAmBL,0YDbhCR,WACEA,gCAUAA,gCAWAA,gCAKAA,gCAGFA,eA9BcA,8BACGA,kDAUAA,oDAWAA,kDAKAA,mngBCdJa,GAAb,qECVMb,gBAKEA,4BAMFA,4CATEA,0CAKEA,0CAAyB,SAAzBA,CAAyB,8BCC5B,IAAM+C,EAAb,MAAM,QAMJ7C,cAHSC,kBAAuB,gDAHrB4C,8BAAoBvC,idDXjCR,eAAgE,UAAhEA,CAAgE,UAG1DA,uCAYFA,mBAfCA,4DAIoBA,0giCCOZ+C,GAAb,EAAaA,sGCLH/C,SACEA,iBAAiB,WACfA,WACkBA,kBAAkCA,gBAEpDA,kBAAkD,UAO9CA,kBACFA,QACAA,gBAMEA,kBACFA,QACAA,iBAMEA,mBACFA,QACAA,iBAMEA,mBACFA,QACAA,iBAMEA,mBACFA,YAGNA,kCAGAA,gBAMC,UACCA,YAA8BA,QAC9BA,gBACFA,8BAJEA,6CCpDL,IAAMgD,EAAb,MAAM,QAIJ9C,YAAuCL,mBAF9BM,aAAU1B,YAInBwE,sBACE,MAAO,GAAGxE,4BAAoC0B,KAAKN,0DAP1CmD,GAAkBhD,MAIT8C,iCAJTE,EAAkBxC,wGDF2CC,+EACjB,GAuDlCA,qBAAAA,whDAhEvBT,eAAoD,UAApDA,CAAoD,UAApDA,CAAoD,WAI5CA,iBACAA,iBACEA,iCAiDFA,QACAA,iBACEA,qBAUFA,uBAnEHA,gDAMoBA,8CAoDZA,owiCChDAgD,GAAb,EAAaA,4ECFN,IAAME,EAAb,MAAM,QACJhD,6DADWgD,8BAAwB1C,mJCRrCR,iBACEA,SACFA,mGDMakD,GAAb,EAAaA,oLEGTlD,oBAKEA,2DAASmD,EAATC,OAASD,yBAGTnD,SACFA,+CAPEA,qDAMAA,2EAnBNA,iBAA+D,cAQ3DA,eACFA,QACAA,iBACEA,0BAUFA,gCATqBA,uCCDhB,IAAMqD,EAAb,MAAM,QAKJnD,YAAsCL,mBAHtCM,YAASmD,IAIPnD,KAAKoD,UAAY9E,cACjB0B,KAAKqD,cAAgB3D,EAGvB4D,oBAAoBC,GAClB,MAAM5B,EAAM,IAAI6B,IAAI9F,OAAO2D,SAASoC,MAC9BC,EAAc/B,EAAIgC,aACxBD,EAAYE,IAAI,MAAOL,EAASM,IAAIC,YACpCnC,EAAIoC,OAASL,EAAYI,WACzBpG,OAAO2D,SAASoC,KAAO9B,EAAImC,yDAflBZ,GAAyBrD,MAKhB8C,iCALTO,EAAyB7C,sFDNtBC,iBAAAA,6XALhBT,4BAAMA,0NCWOqD,GAAb,EAAaA,iNCKN,IAAMc,EAAb,MAAM,SAIJjE,YACUkE,GACAtD,IADAX,eACAA,eAGVC,WACED,KAAKkE,OAASlE,KAAKiE,OAAOE,OAAOC,MAGnCC,OACErE,KAAKsE,MAAMD,OAGbE,aACEvE,KAAKiE,OAAOO,UAASC,WACrBzE,KAAKW,OAAO+D,SAAS,CAACC,2EAnBbX,IAAwBnE,mDAAxBmE,GAAwB3D,qMCb5BC,aAAAA,IAIEA,sBAAAA,IACCA,aAAAA,IAGRA,2fAO2E,sOAlB/ET,iCAIEA,mCAAY+E,kBAMZ/E,4BACEA,eAEEA,mCAAwFA,QAE1FA,aACEA,eACFA,QACAA,aACFA,6LDHWmE,IAAb,sEEdInE,iBAAiD,SAC5CA,0CAASW,EAATyC,MAASzC,mBAAkBX,SAAqBA,oCAArBA,0DAEhCA,iBAAiF,SAC/EA,WAAsEA,kCAAnEA,wDCUF,IAAMgF,EAAb,MAAM,SAQJ9E,YAAoBkE,mBAJpBjE,wBAAqB2E,wBAMrB1E,WACED,KAAKkE,OAASlE,KAAKiE,OAAOE,OAAOC,MACjCpE,KAAK8E,iBAAmB9E,KAAKiE,OAC1BE,OAAOY,MACP7D,MAAK8D,OAAKC,OAAqB,MAAPA,QAAO,EAAPC,GAASC,UAGtCC,iBACEpF,KAAKqF,WAAWhB,wDAlBPQ,IAAoBhF,uCAApBgF,GAAoBxE,2LDVqBC,wBAAAA,+NANtDT,iBAAiD,WAE7CA,wCAGAA,yDAGFA,UAGFA,gDATUA,4CAGAA,uVCWGgF,IAAb,+BCUUhF,SACEA,kBACAA,gBAA4EA,SAE1EA,QACJA,4CAHuBA,sEAAuDA,0DAK5EA,4BAA2DA,qCAR/DA,SACEA,kDAMAA,4CAGFA,4CATiBA,wDAAiC,gBCXnD,IAAMyF,EAAb,MAAM,SAMJvF,YAAoBkE,mBALXjE,aAAU1B,YACV0B,sBAAmB2E,KAC5B3E,wBAA6CA,KAAKiE,OAAOE,OAAOoB,MAChEvF,iCAAmDA,KAAKiE,OAAOE,OAAOqB,MAItEC,OAAOC,IACL,MAAMC,GAA2BC,SAASC,cAAcH,IAExDC,GAAYG,iBACZH,GAAYI,aAAa,WAAY,MACrCJ,GAAYK,yDAbHV,IAAkBzF,uCAAlByF,GAAkBjF,2FDPtBC,MAAAA,IAOAA,MAAAA,IAOAA,gBAAAA,IAW2CA,mBAAAA,imBAjCpDT,iBAAqC,UAArCA,CAAqC,UAArCA,CAAqC,cAK7BA,gCAAS+E,UAAO,iBAFlB/E,WAKqBA,QAErBA,oBAEEA,gCAAS+E,UAAO,kBAFlB/E,WAKuBA,QAEvBA,oBAEEA,gCAAS+E,UAAO,aAFlB/E,WAKiBA,QAEjBA,iBACEA,iCAWFA,QACAA,kBACEA,kCACFA,cAINA,qCAlBuBA,mkiBCVVyF,IAAb,8FCDO,IAAMW,GAAb,MAAM,SAIJlG,YAAoBY,GAAwBsD,IAAxBjE,eAAwBA,eAH5CA,gBAAqB,GAKrBC,WACED,KAAKkG,SAAWlG,KAAKiE,OAAOE,OAAOgC,OAIrCC,gBAAgBC,IACd,GAAkBA,GAAMC,OAAQC,QAAQ,SACtC,OAEFF,GAAMG,iBACN,MAAMb,GAA2BC,SAASC,cAAc,YAExDnD,UACAiD,GAAYK,QAGdjC,SACM/D,KAAKyG,WAAWtB,SAClBnF,KAAKW,OAAO+D,SAAS,CAAC,SAAU1E,KAAKyG,aACrCzG,KAAKyG,WAAa,qDAzBXR,IAAkBpG,mDAAlBoG,GAAkB5F,wGAAlBuE,yBAAuB,kECbyBtE,QAAAA,IAI5CA,QAAAA,IASCA,QAAAA,2aAdlBT,iBAAyB,aACvBA,WAAiEA,QACjEA,mBAMEA,6DAAwB,gCACT+E,+BAPjB/E,QAUAA,iBAAgC,cAM5BA,gCAAS+E,+BAGT/E,eACDA,oBAdDA,wCAAwB,mCAWtBA,y8gBDLOoG,IAAb,gCEDIpG,kBACEA,SACFA,qCADEA,sDAGAA,kBAA6CA,eAAGA,sCARpDA,iBAIEA,yBAGAA,2CAGFA,4CANgDA,8BAA2B,qGCJtE,IAAM6G,GAAb,MAAM,SAKJ3G,cAFSC,uBAAoBe,mEAHlB2F,iCAAiBrG,mhBDT9BR,gCAQEA,iBACAA,yCAWFA,gBAnBEA,6CAAsC,wDAUnCA,mRCFQ6G,IAAb,+BCkBQ7G,mDAEEA,wEAGAA,eAAmD,UAE/CA,kBACFA,mCAFGA,8IAKHA,4BAKUA,iCAFRA,yCADAA,gFATNA,SACEA,0CAKAA,4CASFA,4CAdQA,sDAAgC,gBCLzC,IAAM8G,GAAb,MAAM,SAYJ5G,YACUkE,GACmBvE,GACpBkH,GACAC,IAHC7G,eACmBA,iBACpBA,2BACAA,wBAfAA,oBAAyB,EACxBA,gBAAa,IAAI8G,MAElB9G,aAAU1B,YACV0B,oBAAiB+G,eACjB/G,gBAAagH,WAatB/G,WACED,KAAKiH,iBAAmBjH,KAAKiE,OAAOE,OAAO+C,OAC3ClH,KAAKmH,eAAiBnH,KAAKiE,OAAOE,OAAOiD,MAAYlG,MACnDmG,QACE,CAACC,GAAGC,KAAMC,KAAKC,UAAW,MAADH,QAAC,EAADpC,GAAGwC,cAAgBF,KAAKC,UAAW,MAADF,QAAC,EAADI,GAAGD,cAEhE1C,OAAK4C,KACF,MAAD1C,QAAC,EAADA,GAAGwC,WAAWvC,QACT,MAADyC,QAAC,EAAD1C,GAAGwC,WAAW1C,IAAK6C,IAAcA,GAAUC,UAAUC,OAAO,CAACC,GAAKC,KAAOD,GAAMC,IAC/E,IAGRjI,KAAKkI,oBAAsBlI,KAAKN,SAASyI,SAAS,uDA/BzCxB,IAAsB9G,kBAcvB8C,OAAS9C,mDAdR8G,GAAsBtG,+JDgBpBC,SAAAA,o9BA3CfT,iBAAyC,UAAzCA,CAAyC,UAAzCA,CAAyC,UAAzCA,CAAyC,cAO/BA,gCAAS+E,uBAKT/E,iBACFA,QACAA,iBACEA,0BACFA,UAEFA,iBAAwE,SAKpEA,kBACFA,UAEFA,mBACEA,sDAIAA,qDAgBFA,sBAnBKA,6EAGYA,w2iBCJV8G,IAAb,qJCSc9G,iBAAgD,aAC9CA,YAMOA,kCAJLA,yFA0BJA,iBACG,sBACgBA,wDAYnBA,iBAAyD,UACMA,0CAASW,EAATyC,MAASzC,WAAtEX,YACSA,WC/ClB,IAAMuI,GAAb,MAAM,SAcJrI,YAC6BL,GACnBuE,GACAtD,GACD0H,GACAC,GACCC,IALmBvI,iBACnBA,eACAA,eACDA,uBACAA,sBACCA,oBAnBDA,oBAAyB,EACxBA,gBAAa,IAAI8G,MAGlB9G,8BAA2BwI,KAC3BxI,mBAAgByI,KAChBzI,8BAA2B1B,4BAC3B0B,aAAU1B,YAIX0B,mBAA8B,IAAI0I,KAW1CzI,WACED,KAAKiH,iBAAmBjH,KAAKiE,OAAOE,OAAO+C,OAC3ClH,KAAK2I,mCACH3I,KAAKqI,eAAeO,SAASC,GAAGC,+BAGpCzG,cACErC,KAAK+I,cAAczG,cAGrB0G,SACEhJ,KAAKuI,YAAYU,SACjBjJ,KAAKW,OAAO+D,SAAS,CAAC,MAGxBwE,UACElJ,KAAKmJ,aAAaC,cAAcpD,QAGlCqD,SACErJ,KAAKsJ,WAAWC,OAEhBC,SADgD3D,cAAc,sBAC5CG,QAGpByD,2BACEzJ,KAAK+I,cAAcW,IACjB1J,KAAKiE,OACFE,OAAOoB,MACPrE,MAAKyI,QAAK,IACVlI,UAAWmI,KACV,GAAI5J,KAAK2I,mCAAoC,CAC3C,IAAIkB,GAOAC,GANA9J,KAAKN,WAAaqK,SAAa/J,KAAKN,WAAaqK,UACnDF,GAAmB,EACV7J,KAAKN,WAAaqK,YAC3BF,GAAmB,GAMnBC,GAFEpM,OAAO2D,SAASoC,KAAK0E,SAAS6B,WAA0BJ,GAEnC,GAAG5J,KAAKiK,2BAA2BL,GAAWM,kBAAkBL,KAEhE,GAAG7J,KAAKiK,gCAAgCJ,KAGzCM,MAAxBxC,GACEjK,OAAO2G,KAAKyF,GAAsB,UAElC9J,KAAKsI,cAAc8B,MAAM,sCAG3BpK,KAAKW,OAAO0J,cAAc,IAAM7B,4EA5E/BJ,IAAyBvI,MAe1B8C,OAAS9C,uFAfRuI,GAAyB/H,kSDxBhBC,iBAAAA,IAeQA,OAAAA,IA4BXA,qBAAAA,IASAA,MAAAA,IAcAA,WAAAA,IAjCAA,MAAAA,IAwBAA,gBAAAA,IAcAA,SAAAA,y6BAjFnBT,iBAAwB,UAAxBA,CAAwB,UAAxBA,CAAwB,UAAxBA,CAAwB,WAKdA,0BACFA,QACAA,iBAKEA,uCAAgB+E,cAEhB/E,iBAIEA,gCAAS+E,eAET/E,iBAA2B,UAA3BA,CAA2B,eAIrBA,gCAAS+E,cAGV/E,YAGLA,kBAEEA,gCAAS+E,cAIT/E,yBAUAA,kBACG,WAGCA,gCAAS+E,gCAHV/E,aAMqBA,UAGxBA,kBACG,wBAKMA,UAGTA,yBAKAA,kBACG,wBAKWA,UAGdA,2CAKFA,4BAnEAA,+CAmBOA,0CAuBDA,uEAMCA,qEAQDA,mEAMCA,iwkBC7CNuI,IAAb,GClCO,IAAKkC,GAIX,MAJD,OAAYA,WAAuB,KACjCA,kBACAA,6CACAA,6CAHUA,GAAZ,IAAYA,IAIX,8DCoCSzK,gBAIC,aACCA,YAAiDA,QACjDA,gBACFA,mCACAA,gBAIC,aACCA,YAAkDA,QAClDA,gBACFA,sCACAA,gBAIC,aACCA,YAAmDA,QACnDA,gBACFA,iCALEA,kFA1DZA,SACEA,iBAA2C,UAA3CA,CAA2C,UAA3CA,CAA2C,WAInCA,iBAIFA,UAGFA,iBAA0C,QAA1CA,CAA0C,YAEDA,SAA4BA,UAEnEA,gBAAK,aACHA,kCAEAA,UAEFA,mBAAkB,UAEdA,eACFA,QACAA,mBAA2C,cACzCA,aAA6CA,QAC7CA,oBAAiC,cACTA,kBAAKA,QAC3BA,iBACFA,UAEFA,gBACEA,mBACAA,8BAA2DA,cAIjEA,mBAA+C,aAE3CA,wBAQAA,wBAQAA,wBAQFA,cAIRA,2CA9DYA,kGAAwD,8DAQrBA,+BAKrCA,oCAAO0K,UAAP1K,UAcOA,0EAQJA,+DAQAA,uCAQAA,wCC1CN,IAAM2K,GAAb,MAAM,SASJzK,YAAoBkE,mBARXjE,YAAS,CAChByK,sBAAuB5J,4BAIzBb,sBAAmB0K,MACnB1K,aAAU1B,YAIV2B,WACED,KAAK2K,YAAc3K,KAAKiE,OAAOE,OAAOoB,uDAZ7BiF,IAAyB3K,uCAAzB2K,GAAyBnK,uGDEgBC,iEACO,IAQtBA,mBAAAA,IAQuBA,WAAAA,IAWhBA,iBAAAA,IAQAA,eAAAA,IAQAA,mBAAAA,8jCA7D9CT,2DAAeA,+wiBCeF2K,IAAb,6ECfA3K,SACEA,iBAA8C,UAA9CA,CAA8C,WAGxCA,iBAIFA,QACAA,iBAA+C,UAA/CA,CAA+C,WAEpBA,SAA4BA,UAErDA,iBAA6C,YAC3CA,aAEAA,QACAA,mBACEA,aAIFA,gBAKVA,uDAtBUA,kGAAwD,8DAMjCA,+BAKvBA,wBAAM+K,UAAN/K,UAGIA,sCAA4B,wEAYxCA,gBAaEA,gBACFA,2CAZEA,2CAAyC,8HAa3CA,gBACEA,gBACFA,2CAF4BA,qEAG5BA,gBACEA,gBACFA,2CAFkDA,iEAnBlDA,+BAAuDA,QACvDA,uBAeAA,uBAGAA,qDAjBGA,sCAcCA,gCAGAA,uCCpCC,IAAMgL,GAAb,MAAM,SAIJ9K,YAAoBkE,mBAHpBjE,sBAAmB0K,MAKnBzK,WACED,KAAK2K,YAAc3K,KAAKiE,OAAOE,OAAOoB,uDAP7BsF,IAAsBhL,uCAAtBgL,GAAsBxK,yFDCcC,iEACA,IAeXA,qBAAAA,ozBA9BtCT,mDA6BAA,kDA7BeA,+6gBCaFgL,IAAb,6BCRUhL,SACEA,iCACFA,mCAEAA,SACEA,+BACFA,sCATNA,iBAA8D,WAE1DA,WACEA,iCAIAA,iCAGFA,QACFA,kCATgBA,6DACGA,2EAIAA,4ECMlB,IAAMiL,GAAb,MAAM,SAKJ/K,YACUkE,GACmBvE,GACnBiB,IAFAX,eACmBA,iBACnBA,eANVA,oCAA0DsK,QACjDtK,6BAA0BsK,GAOjCtK,KAAKW,OAAOM,OACTC,MACCC,QAAU,IAAIC,KAAc,EAAG1D,OAAO2D,SAASC,SAAU5D,OAAO2D,SAASC,YACzEC,QAAQ8E,IAAUA,cAAiBjF,OAEpCK,UAAW4E,IAAyBrG,KAAK+K,qCAAqC1E,GAAM1E,MAGzF1B,WACED,KAAKgL,6BAA+BhL,KAAKiE,OAAOE,OAAOqB,MAGjDuF,qCAAqCpJ,IAC3C,OAAQA,GAAIC,QAAQ,IAAI5B,KAAKN,WAAY,IAAImC,MAAM,KAAK,QACjD,IAAM8C,0BACN,IAAMA,wBACT3E,KAAKiL,+BAAiCX,oBACtC,cAGAtK,KAAKiL,+BAAiCX,QACtC,kDA/BKQ,IAAyBjL,kBAO1B8C,OAAS9C,uCAPRiL,GAAyBzK,iNDftCR,iBAAkB,WAEdA,yCAaFA,kBAboBA,wkgBCaTiL,IAAb,gCCbIjL,iBAA4E,UAA5EA,CAA4E,WAGtEA,iBACAA,0BAAsFA,YAG1FA,iBAAiD,WAE7CA,kBACAA,4BACkBA,sCAPGA,gEAMAA,kECExB,IAAMqL,GAAb,MAAM,SAOJnL,YACUkE,GACD2C,IADC5G,eACDA,2BARAA,YAAS,CAChByK,sBAAuB5J,2BACvBsK,qBAAsB3C,2BASxBvI,WACED,KAAKgL,6BAA+BhL,KAAKiE,OAAOE,OAAOqB,uDAb9C0F,IAAqBrL,mDAArBqL,GAAqB7K,uFDRmDC,eAAAA,IAOxEA,iBAAAA,0YAbbT,iBAA2B,WAEvBA,0CAgBFA,kBAhByBA,m4hBCYdqL,IAAb,iDCDO,IAAME,GAAb,MAAM,SAOJrL,YAAoBkE,mBANXjE,WAAQqL,IAIjBrL,oBAAyB,EAIzBC,WACED,KAAKsL,mBACLtL,KAAKuL,qBAGPjC,aACEtJ,KAAKwL,eAAiBxL,KAAKwL,cAGrBF,mBACNtL,KAAKyL,cAAgBzL,KAAKiE,OAAOE,OAAOuH,MAGlCH,qBACNvL,KAAK2L,gBAAkB3L,KAAKiE,OAAOE,OAAOyH,uDAvBjCR,IAAsBvL,uCAAtBuL,GAAsB/K,+NCbnCR,iBAAkB,0BAEdA,0BACAA,gCAEEA,qCAAc+E,kBACf/E,QACDA,mCAEEA,qCAAc+E,kBACf/E,QACDA,iCAA+C,uBAEjDA,QAEAA,iBACEA,yBACFA,QAEAA,gCACEA,6BAAwD,wBAAxDA,CAAwD,wBAAxDA,CAAwD,0BAQ1DA,kBAxBIA,iDAIAA,iDAYcA,wCACEA,wCAAsB,0BAEtCA,wCAAsB,2BAAtBA,CAAsB,kBAILA,oMDdVuL,IAAb,EAAaA,gDEXN,MAAMS,EAAgC,UAC1CC,mBAA6CxL,2CAAmDA,+DCD5F,MAAMyL,EAAc,EACxBC,SAAc,OACdA,YAAiB,+ECFb,MAAMC,EAA8E,IAAIC,IAG7F,CACA,CAACC,sBAA8C7L,oBAA6BA,EAC5E,CAAC6L,oBAA4C7L,kBAA2BA,EACxE,CAAC6L,0BAAkD7L,sFAAqCA,EACxF,CACE6L,wCACA7L,sFAAqCA,EAEvC,CACE6L,8CACA7L,sFAAqCA,EAEvC,CACE6L,0CACA7L,sFAAqCA,EAEvC,CAAC6L,wCAAgE7L,qBAA8BA,EAC/F,CACE6L,oCACA7L,sFAAqCA,EAEvC,CAAC6L,uCAA+D7L,iBAA0BA,EAC1F,CAAC6L,4BAAoD7L,4BAAqCA,EAC1F,CAAC6L,uBAA+C7L,0BAAmCA,EACnF,CAAC6L,qBAA6C7L,wBAAiCA,EAC/E,CACE6L,+BACA7L,gCAAyCA,EAE3C,CAAC6L,iBAAyC7L,cAAuBA,EACjE,CAAC6L,YAAoC7L,SAAkBA,EACvD,CACE6L,8BACA7L,sDAA6DA,EAE/D,CACE6L,oCACA7L,qCAA8CA,EAEhD,CAAC6L,qBAA6C7L,mBAA4BA,EAC1E,CAAC6L,qBAA6C7L,8DAA4BA,EAC1E,CAAC6L,wBAAgD7L,qGAA+BA,IAGrE8L,EAA0C9L,kCAAmCA,+CCjDnF,MAAM+L,EAA+B,+DCErC,MAAMC,EAAoB,EAC9BC,cAA0BjM,wBAAiCA,EAC3DiM,iBAA6BjM,iBAA2BA,EACxDiM,WAAuBjM,qCAA6CA,EACpEiM,kBAA8BjM,mCAA4CA,EAC1EiM,eAA2BjM,iEAAiCA,EAC5DiM,eAA2BjM,yBAAkCA,EAC7DiM,gBAA4BjM,qDAA8DA,EAC1FiM,kBAA8BjM,oCAA6CA,EAC3EiM,qBAAiCjM,sCAA+CA,EAChFiM,qBAAiCjM,wCAAiDA,EAClFiM,sBAAkCjM,oCAA6CA,EAC/EiM,SAAqBjM,oCAA2CA,EAChEiM,sBAAkCjM,+CAAyDA,sFCfvF,MAAMkM,EAA6B,yCAE7B9B,EAAuC,4CACvC+B,EAAe,CAC1BC,aAAc,6BACdC,YAAa,8BAEFC,EAAsC,iDACtCC,EAA0C,oFCRhD,MAAM1J,EAAkB,CAC7B2J,GAAIxM,SAAkBA,CACtByM,GAAIzM,SAAkBA,CACtB,QAASA,SAAkBA,CAC3B,QAASA,SAAkBA,CAC3B,QAASA,SAAkBA,kFCHtB,MAAM0M,EAAqB1M,gBAAyBA,CAE9C2M,EAA2B3M,0JAA4GA,CAEvI4M,EAA8B,EACxCC,cAAuB7M,YAAqBA,EAC5C6M,gBAAyB7M,aAAsBA,oECR3C,MAAM8M,EAA2B,IAC3BC,EAAuB,EACvBC,EAAuB,iHCF7B,MAAMC,EAAkB,gEAGlBC,EAA4B,IAAIC,OAC3C,0FAIWC,EAA6B,IAAID,OAC5C,0FAKWE,EAA0CC,MAChDA,GAAaA,EAAY,KAAGA,EAAY,GAEtC,IAAIH,OAET,2FAA2FG,QAMlFC,EAAyC,IAAIJ,OACxD,wFAGWK,EAAmB,IAAIL,OAElC,0JAGWM,EAAmB,IAAIN,OAAO,qBAE9BO,EAAgC,IAAIP,OAAO,iHClCjD,MAAMQ,EAAkB,CAC7BC,SAAU,uCACVC,WAAY,6CACZC,gBAAiB,yCACjBC,iBAAkB,0CAClBC,gBAAiB,yCACjBC,mBAAoB,4CACpBC,uBAAwB,gDACxBC,iBAAkB,0CAClBC,4BAA6B,qDAC7BC,kBAAmB,2CACnBC,eAAgB,wCAChBC,eAAgB,kDAChBC,YAAa,+CACbC,YAAa,+CACbC,KAAM,+BACNC,OAAQ,iCACRC,KAAM,qCAGKC,EAAoD,EAC9DC,gBAA4B9O,YAAqBA,EACjD8O,iBAA6B9O,aAAsBA,EACnD8O,mBAA+B9O,eAAwBA,iDCzBnD,MAAM+O,EAAY,oDCClB,MAAMC,EAAkB,CAC7BC,yBAA0BjP,mBAA4BA,CACtDkP,gCAAiClP,gCAAyCA,CAC1EmP,uBAAwBnP,iBAA0BA,CAClDoP,8BAA+BpP,yBAAkCA,CACjEqP,uBAAwBrP,iBAA0BA,CAClDsP,2BAA4BtP,sBAA+BA,CAC3DuP,0BAA2BvP,4EAAqFA,CAChHwP,4CAA6CxP,yCAAkDA,CAC/FyP,0BAA2BzP,oBAA6BA,CACxD0P,+BAAgC1P,gCAAyCA,CACzE2P,yBAA0B3P,mBAA4BA,CACtD4P,0BAA2B5P,oBAA6BA,CACxD6P,yBAA0B7P,mBAA4BA,CACtD8P,8BAA+B9P,oBAA6BA,CAC5D+P,qCAAsC/P,kCAA0CA,CAChFgQ,gCAAiChQ,2BAAoCA,CACrEiQ,oBAAqBjQ,gCAAyCA,CAC9DkQ,sCAAuClQ,mHAAwEA,CAC/GmQ,oCAAqCnQ,mHAAwEA,CAC7GoQ,oCAAqCpQ,mHAAwEA,CAC7GqQ,kCAAmCrQ,mHAAwEA,CAC3GsQ,sCAAuCtQ,mHAAwEA,CAC/GuQ,sCAAuCvQ,6DAAqCA,CAC5EwQ,sCAAuCxQ,sFAAqCA,CAC5EyQ,8CAA+CzQ,uCAA0CA,CACzF0Q,qCAAsC1Q,sFAAqCA,CAC3E2Q,kBAAmB3Q,wIAAmIA,CACtJ4Q,0BAA2B5Q,4HAAqIA,iDC7B3J,MAAM6Q,EAAgB,mICAtB,MAAMnK,EAAa,CACxBoK,UAAW,aACXC,eAAgB,mBAChBC,gBAAiB,oBACjBC,MAAO,QACPC,cAAe,mBAGJ3Q,EAAa,CACxB4Q,UAAW,aACXC,gBAAiB,oBACjB9Q,gBAAiB,mBACjB+Q,kBAAmB,sBACnBlH,sBAAuB,2BAGZ1J,EAAa,CACxB6Q,aAAc,gBACd9Q,SAAU,YAGC0H,EAA2B,CACtC2C,qBAAsB,yBACtB0G,MAAO,QACPC,kBAAmB,sBACnBC,UAAW,eACXC,MAAO,QACPC,cAAe,kBACfC,cAAe,mBAGJvN,EAAmB,CAC9BwN,iBAAkB,WAClBC,mBAAoB,mBAGTC,EAAqB,CAChCC,aAAc,gBAGH7J,EAAgB,CAC3B8J,SAAU,WACVC,QAAS,UACTC,QAAS,UACTC,OAAQ,SACRC,EAAG,IACHC,SAAU,YAGCC,EAAoB,CAC/BC,YAAa,iBAGF/L,EAAY,CACvBgM,aAAc,eACdC,UAAW,YACXC,QAAS,UACTC,OAAQ,SACRC,eAAgB,kBAChBC,UAAW,YACXC,SAAU,WACVC,QAAS,UACTC,QAAS,UACTC,IAAK,OAGMC,EAAsB,CACjCC,YAAa,eACbJ,QAAS,UACTK,OAAQ,SACRC,MAAO,QACPC,KAAM,OACNnB,OAAQ,yDCxEH,MAAMoB,EAAsB,uFCA5B,MAAMC,EAA0B,GAG1BC,EAAkB,CAC7B,oBAAqB1T,mBAA4BA,CACjD,kBAAmBA,iBAA0BA,CAC7C,qBAAsBA,oBAA6BA,CACnD,sBAAuBA,qBAA8BA,EAG1C2T,EAAkB,CAC7B,oBAAqB3T,SAAkBA,CACvC,kBAAmBA,OAAgBA,CACnC,qBAAsBA,UAAmBA,CACzC,sBAAuBA,UAAmBA,sFCdrC,MAAM4T,EAAsB,CACjCC,MAAO7T,sBAAgCA,CACvC8T,QAAS9T,yBAAkCA,EAGhC+T,EAA0B,CACrCF,MAAO7T,0BAAmCA,CAC1C8T,QAAS9T,yBAAkCA,EAGhCgU,EAAuC,CAClDH,MAAO7T,+BAA6CA,CACpD8T,QAAS9T,mGAA6EA,EAG3EiU,EAA+B,CAC1CJ,MAAO7T,8BAAuCA,CAC9C8T,QAAS9T,mGAA6EA,EAG3EkU,EAA0BlU,4HAAAA,gDCpBhC,MAAMmU,EAAuB,iDCA7B,IAAKC,EAIX,MAJD,OAAYA,QAAW,KACrBA,YACAA,sBACAA,oBAHUA,EAAZ,IAAYA,GAIX,EAJWA,gDCAL,IAAKvH,EAGX,MAHD,OAAYA,QAAW,KACrBA,oBACAA,0BAFUA,EAAZ,IAAYA,GAGX,EAHWA,gDCAL,IAAKwH,EASX,MATD,OAAYA,QAA4B,KACtCA,gCACAA,oCACAA,+BACAA,kDACAA,oDACAA,2CACAA,kBACAA,uBARUA,EAAZ,IAAYA,GASX,EATWA,wDCAL,IAAKC,EAGX,MAHD,OAAYA,QAAoB,KAC9BA,YACAA,kBAFUA,EAAZ,IAAYA,GAGX,GAEWC,EAGX,MAHD,OAAYA,QAAuB,KACjCA,qBACAA,uCAFUA,EAAZ,IAAYA,GAGX,EAHWA,gDCLL,IAAK/I,EAGX,MAHD,OAAYA,QAA0B,KACpCA,YACAA,wBAFUA,EAAZ,IAAYA,GAGX,EAHWA,gDCEL,IAAKgJ,EAsEX,MAtED,OAAYA,QAA6B,KACvCA,YACAA,gFACAA,gDACAA,gDACAA,0DACAA,8EACAA,sEACAA,0CACAA,8CACAA,0CACAA,0CACAA,kCACAA,kCACAA,sCACAA,kDACAA,oDACAA,0CACAA,sCACAA,0CACAA,0CACAA,0CACAA,sCACAA,8BACAA,4CACAA,kDACAA,0BACAA,4CACAA,4BACAA,8BACAA,sCACAA,oCACAA,wDACAA,sCACAA,sCACAA,gDACAA,8CACAA,8BACAA,0BACAA,0CACAA,oCACAA,0CACAA,8BACAA,gCACAA,wCACAA,0CACAA,8BACAA,4CACAA,4CACAA,4CACAA,4CACAA,4BACAA,sCACAA,oCACAA,wCACAA,wCACAA,4CACAA,8BACAA,wCACAA,0BACAA,wCACAA,4CACAA,0DACAA,wCACAA,gDACAA,oDACAA,wDACAA,4DACAA,0DACAA,gBArEUA,EAAZ,IAAYA,GAsEX,EAtEWA,gDCFL,IAAK9I,EAGX,MAHD,OAAYA,QAAO,KACjBA,UACAA,eAFUA,EAAZ,IAAYA,GAGX,EAHWA,gDCAL,IAAKG,EAsBX,MAtBD,OAAYA,QAA0B,KACpCA,YACAA,wCACAA,oCACAA,gDACAA,4EACAA,wFACAA,gFACAA,4EACAA,oEACAA,0EACAA,oDACAA,0CACAA,sCACAA,0DACAA,8BACAA,oBACAA,wDACAA,oEACAA,sCACAA,4CACAA,sCArBUA,EAAZ,IAAYA,GAsBX,EAtBWA,wDCCL,IAAK4I,EAaX,MAbD,OAAYA,QAAgC,KAC1CA,YACAA,4CACAA,kDACAA,8BACAA,8BACAA,0CACAA,sCACAA,0CACAA,0CACAA,0CACAA,oCACAA,gBAZUA,EAAZ,IAAYA,GAaX,GAEWC,EAIX,MAJD,OAAYA,QAA+B,KACzCA,8CACAA,oDACAA,kDAHUA,EAAZ,IAAYA,GAIX,EAJWA,gDChBL,IAAK3J,EAMX,MAND,OAAYA,QAAqB,KAC/BA,qBACAA,uBACAA,uBACAA,uBACAA,uBALUA,EAAZ,IAAYA,GAMX,EANWA,gDCAL,IAAKkB,EAeX,MAfD,OAAYA,QAAc,KACxBA,oBACAA,gBACAA,8BACAA,wBACAA,wBACAA,0BACAA,8BACAA,oCACAA,oBACAA,oCACAA,sCACAA,YACAA,sCACAA,4BAdUA,EAAZ,IAAYA,GAeX,EAfWA,gDCAL,IAAK0I,EAGX,MAHD,OAAYA,QAAiB,KAC3BA,YACAA,8BAFUA,EAAZ,IAAYA,GAGX,EAHWA,gDCAL,IAAKC,EAKX,MALD,OAAYA,QAAe,KACzBA,4CACAA,oBACAA,gCACAA,4CAJUA,EAAZ,IAAYA,GAKX,EALWA,wDCCL,IAAKnL,EAKX,MALD,OAAYA,QAAM,KAChBA,QACAA,eACAA,eACAA,eAJUA,EAAZ,IAAYA,GAKX,GAEM,MAAMoL,EAAY,EACtBpL,EAAOqL,IAAK,KACZrL,EAAOsL,MAAO,KACdtL,EAAOuL,MAAO,KACdvL,EAAOwL,MAAO,oDCZV,IAAKC,EAMX,MAND,OAAYA,QAAQ,KAClBA,mBACAA,mBACAA,qBACAA,mBACAA,iBALUA,EAAZ,IAAYA,GAMX,EANWA,gDCAL,IAAKC,EAIX,MAJD,OAAYA,QAAW,KACrBA,iCACAA,uCACAA,qBAHUA,EAAZ,IAAYA,GAIX,EAJWA,gDCAL,IAAKC,EAiCX,MAjCD,OAAYA,QAAgB,KAC1BA,YACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,cAhCUA,EAAZ,IAAYA,GAiCX,EAjCWA,wDCAL,IAAKC,EAGX,MAHD,OAAYA,QAAkB,KAC5BA,2BACAA,iCAFUA,EAAZ,IAAYA,GAGX,GAEWC,EAIX,MAJD,OAAYA,QAAoB,KAC9BA,mCACAA,iDACAA,+BAHUA,EAAZ,IAAYA,GAIX,EAJWA,gDCLL,IAAKC,EASX,MATD,OAAYA,QAAiB,KAC3BA,uBACAA,6CACAA,6BACAA,+BACAA,yBACAA,yBACAA,yBACAA,mCARUA,EAAZ,IAAYA,GASX,EATWA,gDCAL,IAAKC,EAMX,MAND,OAAYA,QAAmB,KAC7BA,kBACAA,wBACAA,kBACAA,gBACAA,kBALUA,EAAZ,IAAYA,GAMX,EANWA,mECAL,IAAKC,EAMX,MAND,OAAYA,QAAW,KACrBA,sCACAA,kBACAA,wBACAA,oBACAA,8BALUA,EAAZ,IAAYA,GAMX,GAEW3G,EAIX,MAJD,OAAYA,QAAe,KACzBA,wBACAA,wBACAA,8BAHUA,EAAZ,IAAYA,GAIX,GAEW4G,EAGX,MAHD,OAAYA,QAAiB,KAC3BA,kBACAA,kBAFUA,EAAZ,IAAYA,GAGX,EAHWA,gDCbL,IAAKC,EA8BX,MA9BD,OAAYA,QAAoB,KAC9BA,0DACAA,sDACAA,oEACAA,kDACAA,gEACAA,kDACAA,2DACAA,wDACAA,4FACAA,wDACAA,sDACAA,wDACAA,sDACAA,gEACAA,8EACAA,gFACAA,4EACAA,4EACAA,4CACAA,gBACAA,wCACAA,wDACAA,wEACAA,gFACAA,gFACAA,gFACAA,gGACAA,8EACAA,oFA7BUA,EAAZ,IAAYA,GA8BX,EA9BWA,gDCDL,IAAKC,EAKX,MALD,OAAYA,QAAe,KACzBA,YACAA,cACAA,kBACAA,cAJUA,EAAZ,IAAYA,GAKX,EALWA,gDCAL,IAAKC,EAgBX,MAhBD,OAAYA,QAAW,KACrBA,mDACAA,yCACAA,qDACAA,mDACAA,yDACAA,yCACAA,uDACAA,qDACAA,iCACAA,4DACAA,oCACAA,wCACAA,wCACAA,oCACAA,gCAfUA,EAAZ,IAAYA,GAgBX,EAhBWA,gDCAL,IAAKC,EAGX,MAHD,OAAYA,QAAa,KACvBA,eACAA,oBAFUA,EAAZ,IAAYA,GAGX,EAHWA,gDCAL,IAAKpM,EAOX,MAPD,OAAYA,QAAiB,KAC3BA,UACAA,cACAA,oBACAA,kBACAA,UACAA,YANUA,EAAZ,IAAYA,GAOX,EAPWA,wDCCL,IAAKqM,EAKX,MALD,OAAYA,QAAgB,KAC1BA,kBACAA,kBACAA,cACAA,0CAJUA,EAAZ,IAAYA,GAKX,GAEWC,EAKX,MALD,OAAYA,QAAqB,KAC/BA,4CACAA,4CACAA,0CACAA,sCAJUA,EAAZ,IAAYA,GAKX,EALWA,gDCRL,IAAKC,EAIX,MAJD,OAAYA,QAAmB,KAC7BA,0BACAA,gCACAA,8CAHUA,EAAZ,IAAYA,GAIX,EAJWA,gDCAL,IAAKC,EAIX,MAJD,OAAYA,QAAgB,KAC1BA,wBACAA,oBACAA,kBAHUA,EAAZ,IAAYA,GAIX,EAJWA,gDCAL,IAAKC,EAiBX,MAjBD,OAAYA,QAAS,KACnBA,0CACAA,0CACAA,0CACAA,wCACAA,sDACAA,oDACAA,gEACAA,oCACAA,kCACAA,kDACAA,gDACAA,sCACAA,wCACAA,sCACAA,wCACAA,sCAhBUA,EAAZ,IAAYA,GAiBX,EAjBWA,gDCAL,IAAKC,EAKX,MALD,OAAYA,QAAW,KACrBA,iBACAA,6BACAA,+BACAA,qBAJUA,EAAZ,IAAYA,GAKX,EALWA,wECYL,IAAMC,EAAb,MAAM,QAIJ5W,YAKsC6I,mBA4C/BgO,wBACL,OAAO5W,KAAK4I,SAASiO,IAAIC,wBAA0B9W,KAAK4I,SAASiO,IAAIE,4DAtD5DJ,GAAc9W,MASfmX,iCATCL,EAAcM,QAAdN,EAAc,qBAFb,SAEDA,GAAb,EAAaA,sGCDN,IAAMO,EAAb,MAAM,QAIJnX,YACUY,EACAwW,EACA9O,GAFArI,cACAA,uBACAA,sBAERA,KAAKoX,SAAWpX,KAAKmX,gBAAgBE,eAAe,KAAM,MAC1DrX,KAAKsX,cAAgB,IAAIC,KAAgB,GAG3CC,cACE,YAAKC,cACEzX,KAAKsX,cAGdI,kBACE,OAAO1X,KAAKsX,cAAcK,eAG5BC,kCAAkCC,IAC3BA,GAKLna,OAAOoa,QAAQC,SAASF,EAAMG,MAAO,CACnCC,WAAYJ,EAAMG,MAClBE,UAAWL,EAAMK,UACjBC,SAAUN,EAAMM,SAChBC,YAAaP,EAAKO,YAClB9Z,YAAaA,sBAIjB+Z,qCACE3a,OAAOoa,QAAQQ,YAGjBC,MAAMC,EAAmBC,GACvBzY,KAAKqI,eAAeO,SAASC,GAAG6P,kBAC9Bhb,OAAOoa,QAAQS,MAAMC,EAAWC,GAG5BhB,cACN,MAAMkB,EAAS3Y,KAAKoX,SAASwB,cAAc,UAC3CD,EAAOE,OAAS,KACd7Y,KAAK8Y,mBACL9Y,KAAKsX,cAAcyB,MAAK,IAG1BJ,EAAO5S,aAAa,MAAO,sBAAsBzH,oBAEjD0B,KAAKoX,SAAS4B,YAAYpT,SAASqT,KAAMN,GAGnCG,mBACN9Y,KAAKW,OAAOM,OAAOQ,UAAW4E,IACxBA,aAAiBjF,MACnB1D,OAAOoa,QAAQoB,uDA7DVhC,GAAcrX,gEAAdqX,EAAcD,QAAdC,EAAc,qBAFb,SAEDA,GAAb,EAAaA,oLCIb,MAAMiC,EAAgB,CAAC,SAAU,iBAAkB7a,uBAK5C,IAAM8a,EAAb,MAAM,QAGJrZ,YACUsZ,EACApV,EACAqE,EACmB5I,GAHnBM,mBACAA,cACAA,qBACmBA,gBAE3BA,KAAKL,YACHK,KAAKN,WAAaqK,OACd,IAAI/C,uBACJ,IAAIhH,KAAKN,YAAYsH,uBAG7BsS,mBACE,MAAMC,EAAWvZ,KAAKqZ,YAAYG,SAASC,iBACrCC,EAAmB1Z,KAAKqZ,YAAYG,SAASG,mBAE/CJ,EAASpU,SAAWuU,GACtB1Z,KAAKqZ,YAAYG,SAASF,iBAAiBC,EAAS,IAIxDK,MAAMC,EAAkD,IACtD7Z,KAAKqZ,YAAYG,SAASM,cAAc,CACtCta,OAAQ2Z,EACRU,qBAAoBE,eAAIC,YAAYpa,OAAYI,KAAKN,WAAcma,GACnEla,YAAaK,KAAKL,cAItBsa,aACEja,KAAKqZ,YAAYG,SAASM,cAAc,CACtCta,OAAQ2Z,EACRU,qBAAsB,CAAEG,YAAYpa,OAAYI,KAAKN,WACrDC,YAAaK,KAAKL,YAClBtB,UAAWP,yCAIfmL,SACEjJ,KAAKiE,OAAOO,UAASyE,WACrBjJ,KAAKiE,OACFE,OAAO+V,MACPhZ,MACCK,OAAQ4Y,GAAMA,IACdC,UAED3Y,UAAU,IAAMzB,KAAKqZ,YAAYgB,kBACpCC,eAAeC,QAGjBC,eACExa,KAAKqZ,YAAYG,SACdiB,mBAAmB,CAClBjb,OAAQ2Z,IAETuB,MAAOtQ,IACNpK,KAAKsI,cAAcqS,KAAK,+CAAgDvQ,GACxEpK,KAAKiJ,yDA5DAmQ,GAAWvZ,yCAOZ8C,mCAPCyW,EAAWnC,QAAXmC,EAAW,qBAFV,SAEDA,GAAb,EAAaA,+CCpBN,IAAKwB,EAQX,MARD,OAAYA,QAAQ,KAClBA,qBACAA,0BACAA,oCACAA,iCACAA,sBACAA,oCACAA,sCAPUA,EAAZ,IAAYA,GAQX,uBCIM,IAAMC,EAAb,MAAM,QAGJ9a,cAFiBC,2BAAwB,EAIzC8a,mBAAmBC,GACjB/a,KAAKgb,iBACCtd,OAAQud,UAAUC,KAAK,CAC3B7U,MAAOuU,WACPO,UAAWnb,KAAKob,+BAA+BL,KAInDM,UAAUN,GACR/a,KAAKgb,iBACCtd,OAAQud,UAAUC,KAAK,CAC3B7U,MAAOuU,YACPO,UAAWnb,KAAKsb,kCAAkCP,KAItDQ,eAAeR,GACb/a,KAAKgb,iBACCtd,OAAQud,UAAUC,KAAK,CAC3B7U,MAAOuU,iBACPO,UAAWnb,KAAKwb,2BAA2BT,KAI/CU,cAAcC,GACZ1b,KAAKgb,iBACCtd,OAAQud,UAAUC,KAAK,CAC3B7U,MAAOuU,gBACPO,UAAWnb,KAAK2b,sBAAsBD,KAI1CE,SAASC,EAA0BH,EAAYI,GAC7C9b,KAAKgb,iBACCtd,OAAQud,UAAUC,KAAK,CAC3B7U,MAAOuU,WACPO,UAAWnb,KAAK+b,gCAAgCF,EAAkBH,EAAMI,KAI5EE,eAAeN,GACb1b,KAAKgb,iBACCtd,OAAQud,UAAUC,KAAK,CAC3B7U,MAAOuU,iBACPO,UAAWnb,KAAK2b,sBAAsBD,KAI1CO,gBAAgBP,GACd1b,KAAKgb,iBACCtd,OAAQud,UAAUC,KAAK,CAC3B7U,MAAOuU,kBACPO,UAAWnb,KAAK2b,sBAAsBD,KAIlCV,iBACAtd,OAAQud,UAAUC,KAAK,CAAEC,UAAW,OAGpCe,iBAAiBC,GACvB,MAAMC,EAAiB,GACvBD,OAAa,MAAbA,KAAeE,QAAQ,CAACC,EAAGC,KACrBA,EAAQvc,KAAKwc,wBACD,IAAVD,EACFH,EAAeK,cAAmBH,EAElCF,EAAe,gBAAgBG,EAAQ,KAAOD,KAI7CF,EAGDhB,+BAA+BL,GACrC,MAAO,CACL2B,SAAUpe,aACVqe,MAAO5B,EAAQ6B,iBAAmB7B,EAAQ8B,MAC1CC,MAAO,gBAEHC,QAAShC,EAAQiC,IACjBC,UAAWlC,EAAQmC,KACnBL,MAAO9B,EAAQ6B,iBAAmB7B,EAAQ8B,MAC1CM,WAAYpC,EAAQqC,YACjBpd,KAAKkc,iBAAiBnB,EAAQoB,kBAMjCb,kCAAkCP,GACxC,MAAO,CACL2B,SAAUpe,aACVqe,MAAO5B,EAAQ6B,iBAAmB7B,EAAQ8B,MAC1CC,MAAO,gBAEHC,QAAShC,EAAQiC,IACjBC,UAAWlC,EAAQsC,YACnBR,MAAO9B,EAAQ6B,iBAAmB7B,EAAQ8B,MAC1CM,WAAYpC,EAAQqC,YACjBpd,KAAKkc,iBAAiBnB,EAAQoB,kBAMjCX,2BAA2BT,GACjC,MAAO,CACL2B,SAAUpe,aACVqe,MAAO5B,EAAQ6B,iBAAmB7B,EAAQuC,cAC1CR,MAAO,gBAEHC,QAAShC,EAAQiC,IACjBC,UAAWlC,EAAQsC,YACnBR,MAAO9B,EAAQ6B,iBAAmB7B,EAAQuC,cAC1CH,WAAYpC,EAAQwC,gBACjBvd,KAAKkc,iBAAiBnB,EAAQoB,kBAMjCR,sBAAsBD,GAC5B,MAAO,CACLgB,SAAUpe,aACVqe,MAAOjB,EAAK8B,iBACZV,MAAOpB,EAAKhU,WAAW1C,IAAK6C,GAAckS,eACxCgD,QAASlV,EAAUmV,IACnBC,UAAWpV,EAAUwV,YACrBR,MAAOhV,EAAU+U,iBAAmB/U,EAAUyV,cAC9CH,WAAYtV,EAAU0V,eACtBzV,SAAUD,EAAUC,UACjB9H,KAAKkc,iBAAiBrU,EAAUsU,kBAKjCJ,gCACNF,EACAH,EACAI,GAEA,MAAO,CACLY,SAAUpe,aACVqe,MAAOjB,EAAK8B,iBACZC,eAAgB5B,EAChB6B,YAAa,eACbC,IAAKjC,EAAKkC,cACVC,SAAUnC,EAAKoC,iBACfhC,WACAgB,MAAOpB,EAAKhU,WAAW1C,IAAK6C,GAAckS,eACxCgD,QAASlV,EAAUmV,IACnBC,UAAWpV,EAAUwV,YACrBR,MAAOhV,EAAU+U,iBAAmB/U,EAAUyV,cAC9CH,WAAYtV,EAAU0V,eACtBzV,SAAUD,EAAUC,UACjB9H,KAAKkc,iBAAiBrU,EAAUsU,gEAjK9BtB,gCAAU5D,QAAV4D,EAAU,qBAHT,SAGDA,GAAb,EAAaA,8DCPN,IAAMkD,EAAb,MAAM,QAHNhe,cAIUC,kBAAetC,OAAOsgB,aAE9BC,QAAQC,GACN,IACE,OAAO1W,KAAK2W,MAAMne,KAAKge,aAAaC,QAAQC,GAEXA,CAFWA,MAC5CE,GACA,OAAOpe,KAAKge,aAAaC,QAAQC,IAIrCG,QAAQH,EAAavB,GACnB3c,KAAKge,aAAaK,QAAQH,EAAsB,iBAAVvB,EAAqBnV,KAAKC,UAAUkV,GAASA,GAGrF2B,WAAWJ,GACTle,KAAKge,aAAaM,WAAWJ,GAG/BK,eACEve,KAAKge,aAAazD,QAGpBiE,QAAQN,GAEN,QADale,KAAKge,aAAaC,QAAQC,iDAxB9BH,gCAAmB9G,QAAnB8G,EAAmB,qBAFlB,SAEDA,GAAb,EAAaA,sJCIN,QACHhe,YAAY4c,GAAO8B,GACfze,KAAK2c,MAAQA,GACb3c,KAAKye,SAAWA,eCRxB,QACIC,KAAKC,GAAYC,GACb,OAAOA,EAAOnd,UAAU,IAAIod,EAAmBF,MAGvD,gBAAiCG,IAC7B/e,YAAYgf,IACRC,MAAMD,IACN/e,KAAKif,SAAU,EAEnBC,MAAMvC,IACF,IAAIwC,EACAnf,KAAKif,QACLE,EAAO,CAACnf,KAAKof,KAAMzC,IAGnB3c,KAAKif,SAAU,EAEnBjf,KAAKof,KAAOzC,GACRwC,GACAnf,KAAK+e,YAAYhG,KAAKoG,4BChB3B,IAAME,EAAb,MAAM,QAHNtf,cAIWC,gBAAa,QACbA,cAAW,MAEZA,sBAA4C,IAAIkM,IAExD7J,cACMrC,KAAKsf,iBAAiBC,QAAQpa,OAAS,GACzCnF,KAAKsf,iBAAiBjD,QAAS3W,IACxBA,EAAQ8Z,aAAaC,QACxB/Z,EAAQ8Z,aAAaE,WAGvBha,EAAQia,MAAQ,KAChBja,EAAQ1E,aAAasB,gBAK3Bsd,WAAWC,EAAelB,GACxB3e,KAAKsf,iBAAiB1b,IAAIic,EAAO,CAC/BL,aAAc,IAAIM,OAGpB,MAAMpa,GAAU1F,KAAKsf,iBAAiBS,IAAIF,GAC1Cna,GAAQia,MAAQja,GAAQ8Z,aAAate,KF7BlC,WAAsB8e,EAAYC,KACrC,OAAQrB,KAAWsB,OAAM,IACdtB,GAAO1d,MAAKif,OAAK,EAAGC,WAAWzD,KAAW,CAAEA,QAAOyD,QAASJ,EAAUK,MAAOC,KAAMF,IAAY,CAAEA,QAASJ,EAAUK,MAAO1D,WAAOxS,EAAWmW,UAAMnW,KAAcnF,OAAI,EAAGob,UAASE,OAAM3D,YAAY,IAAI4D,EAAa5D,GAAOyD,EAAUE,ME4B9OE,GDjCC,aACH,OAAQ5B,GAAWA,EAAO6B,KAAK,IAAIC,GCiCjCC,IACApf,OACE,EAAE6Y,EAAOwG,MAAYxG,EAAMuC,QAAU3c,KAAK6gB,YAAcD,GAAOjE,QAAU3c,KAAK8gB,WAEhFnX,OAAK,IACL3E,OAAI,EAAC,CAAG4b,KAAYA,EAAOnC,WAE7B/Y,GAAQ1E,aAAe0E,GAAQia,MAAMle,UAAUkd,GAC/CjZ,GAAQ8Z,aAAazG,KAAK/Y,KAAK6gB,YAGjCE,SAASlB,GACP,MAAMna,EAAU1F,KAAKsf,iBAAiBS,IAAIF,GAC1Cna,EAAQ8Z,aAAazG,KAAK/Y,KAAK8gB,UAC/Bpb,EAAQ8Z,aAAaE,yDAzCZL,gCAAYpI,QAAZoI,EAAY,qBAFX,SAEDA,GAAb,GCCa2B,EAAb,MAAM,QACJjhB,YAAoBkhB,uBAEpBC,IAAI9M,EAAiBhK,GACnBpK,KAAKmhB,QAAQ3L,QAAcpB,EAAShK,GAGtCgX,cAAcvB,GACRrK,SAAgBlX,0BAClB+iB,QAAQC,KAAKzB,GAEb7f,KAAKihB,aAAarB,WAAWC,EAAQ0B,IACnCC,QAAc,SAAS3B,UAAc0B,UAK3CE,YAAY5B,GACNrK,SAAgBlX,0BAClB+iB,QAAQK,QAAQ7B,GAEhB7f,KAAKihB,aAAaF,SAASlB,GAI/B8B,KAAKvN,EAAiBhK,GACpBpK,KAAKmhB,QAAQ3L,SAAepB,EAAShK,GAGvCwX,MAAMxN,EAAiBhK,GACrBpK,KAAKmhB,QAAQ3L,UAAgBpB,EAAShK,GAGxCuQ,KAAKvG,EAAiBhK,GACpBpK,KAAKmhB,QAAQ3L,SAAepB,EAAShK,GAGvCA,MAAMgK,EAAiBhK,GACrBpK,KAAKmhB,QAAQ3L,UAAgBpB,EAAShK,GAGhC+W,QAAQU,EAAoBzN,EAAiBhK,IACnD,GAAIyX,GAAYvjB,0BACd,OAAQujB,QACDrM,QAEH,YADA6L,QAAQH,IAAI9M,EAAShK,IACrB,KACGoL,SAEH,YADA6L,QAAQM,KAAKvN,EAAShK,IACtB,KACGoL,UAEH,YADA6L,QAAQO,MAAMxN,EAAShK,IACvB,KACGoL,SAEH,YADA6L,QAAQ1G,KAAKvG,EAAShK,IACtB,KACGoL,UAEH,YADA6L,QAAQjX,MAAMgK,EAAShK,IACvB,QAGA,YADAiX,QAAQH,IAAI9M,EAAShK,SAIzB,OAAQyX,QACDrM,QAEH,YADAgM,QAAcpN,EAAShK,IACvB,KACGoL,SAEH,YADAgM,SAAepN,EAAShK,IACxB,KACGoL,UAEH,YADAgM,UAAgBpN,EAAShK,IACzB,KACGoL,SAEH,YADAgM,SAAepN,EAAShK,IACxB,KACGoL,UAEH,YADAgM,UAAgBpN,EAAShK,IACzB,QAGA,YADAoX,QAAcpN,EAAShK,IACvB,+CAlFG4W,GAAanhB,qCAAbmhB,EAAa/J,QAAb+J,EAAa,qBAFZ,SAEDA,GAAb,EAAaA,gFCTP,WAA4Bc,GAChC,cAAOA,EAAY9J,aACZ8J,EAAYC,oBACZD,EAAYE,kBACZF,EAAYG,uBACZH,EAAY1J,YACZ0J,EAGH,WAAiCI,GACrC,OAAOA,EAAUld,IAAKmd,GAAYC,EAAqBD,IAGnD,WAA+BA,GACnC,cAAOA,EAAQE,gBACRF,EAAQG,gBACRH,EAAQI,gBACRJ,EAAQK,oBACRL,EAAQM,oBACRN,EAAQO,oBACRP,EAAQQ,YACRR,EAAQA,QACRA,0ECJF,IAAMS,EAAb,MAAM,QAMJ7iB,YAAoBsI,yBALHrI,WAAgB,QAChBA,mBAAwB,gBACxBA,mCACf,0CAIeA,0BAAsB6iB,OAAqBrB,IAAW,CACrEsB,gBAAiB,SAAUC,8FACzB,IAAIC,GAAmBC,IAAUF,GACjC,OAAoB,MAAhBC,QAAgB,EAAhBE,GAAkBC,mBACbH,GAAiBG,WAEG,QAAzBlhB,EAAgB,MAAhBihB,QAAgB,EAAhBA,GAAkBE,eAAOhhB,eAAEgW,qBACtB4K,GAAiBI,QAAQhL,aAEd,MAAhB4K,QAAgB,EAAhBE,GAAkBlL,eACbgL,GAAiBhL,OAEN,MAAhBgL,QAAgB,EAAhBE,GAAkBpB,eACpBkB,GAAiBlB,YAAcuB,EAAkBL,GAAiBlB,eAEhD,MAAhBkB,QAAgB,EAAhBE,GAAkBf,WACpBa,GAAiBb,QAAUC,EAAqBY,GAAiBb,WAEnB,QAA5CmB,EAAmC,QAAnCC,EAAgB,MAAhBL,QAAgB,EAAhBA,GAAkBM,yBAAiBC,eAAEC,eAAOC,eAAEC,mBAChDZ,GAAiBQ,kBAAkBE,QAAQE,gBAAkBxB,EAC3DY,GAAiBQ,kBAAkBE,QAAQE,mBAGmB,QAA9DC,EAAmC,QAAnCC,GAAgB,MAAhBZ,QAAgB,EAAhBA,GAAkBM,yBAAiBO,iBAAEC,iCAAyBC,eAAEL,mBAClEZ,GAAiBQ,kBAAkBQ,0BAA0BJ,gBAC3DxB,EACEY,GAAiBQ,kBAAkBQ,0BAA0BJ,mBAGO,QAAtEM,GAAmC,QAAnCC,EAAgB,MAAhBjB,QAAgB,EAAhBA,GAAkBM,yBAAiBY,eAAEC,yCAAiCC,iBAAEV,mBAC1EZ,GAAiBQ,kBAAkBa,kCAAkCT,gBACnExB,EACEY,GAAiBQ,kBAAkBa,kCAAkCT,mBAG3B,QAA5CW,GAAmC,QAAnCC,EAAgB,MAAhBtB,QAAgB,EAAhBA,GAAkBM,yBAAiBiB,eAAEf,eAAOgB,iBAAEC,oBAChD3B,GAAiBQ,kBAAkBE,QAAQiB,iBAAmBvC,EAC5DY,GAAiBQ,kBAAkBE,QAAQiB,oBAGmB,QAA9DV,GAAmC,QAAnCW,GAAgB,MAAhB1B,QAAgB,EAAhBA,GAAkBM,yBAAiBqB,iBAAEb,iCAAyBc,iBAAEH,oBAClE3B,GAAiBQ,kBAAkBQ,0BAA0BW,iBAC3DvC,EACEY,GAAiBQ,kBAAkBQ,0BAA0BW,oBAIK,QAAtEI,GAAmC,QAAnCC,GAAgB,MAAhB9B,QAAgB,EAAhBA,GAAkBM,yBAAiByB,iBAAEZ,yCAAiCa,iBAAEP,oBAExE3B,GAAiBQ,kBAAkBa,kCAAkCM,iBACnEvC,EACEY,GAAiBQ,kBAAkBa,kCAAkCM,oBAG5C,QAA3BQ,GAAgB,MAAhBjC,QAAgB,EAAhBA,GAAkBhB,iBAASkD,iBAAEjgB,UAC/B6d,GAAiBd,UAAYmD,EAAuBrC,GAAiBd,aAElB,QAAjDoD,GAAsC,QAAtCC,GAAyB,QAAzBC,GAAgB,MAAhBtC,QAAgB,EAAhBA,GAAkBQ,eAAO+B,iBAAEC,mBAAWC,iBAAEzD,iBAAS0D,iBAAEzgB,UACrD6d,GAAiBU,QAAQgC,YAAYxD,UAAYmD,EAC/CrC,GAAiBU,QAAQgC,YAAYxD,aAGZ,QAAzB2D,GAAgB,MAAhB3C,QAAgB,EAAhBA,GAAkBQ,eAAOoC,iBAAEhE,eAC7BkB,GAAiBU,QAAQ5B,YAAcuB,EACrCL,GAAiBU,QAAQ5B,eAGA,QAAzB1M,GAAgB,MAAhB8N,QAAgB,EAAhBA,GAAkBQ,eAAOqC,iBAAEC,kBACtBhD,GAAiBU,QAAQsC,SAASC,cAEO,QAA9CC,GAA8B,QAA9BC,GAAgB,MAAhBjD,QAAgB,EAAhBA,GAAkBkD,oBAAYC,iBAAEC,sBAAcC,iBAAEpE,WAClDa,GAAiBoD,aAAaE,eAAenE,QAAUC,EACrDY,GAAiBoD,aAAaE,eAAenE,WAGE,QAA/CqE,GAA8B,QAA9BC,GAAgB,MAAhBvD,QAAgB,EAAhBA,GAAkBkD,oBAAYM,iBAAEC,uBAAeC,iBAAEzE,WACnDa,GAAiBoD,aAAaO,gBAAgBxE,QAAUC,EACtDY,GAAiBoD,aAAaO,gBAAgBxE,WAGhB,QAA9B0E,GAAgB,MAAhB3D,QAAgB,EAAhBA,GAAkBkD,oBAAYU,iBAAEC,mBAClC/D,GAAiBoD,aAAaW,gBAAkB1D,EAC9CL,GAAiBoD,aAAaW,mBAGd,MAAhB/D,QAAgB,EAAhBE,GAAkB8D,kBACpBhE,GAAiBgE,eAAiB5E,EAAqBY,GAAiBgE,kBAEtD,MAAhBhE,QAAgB,EAAhBE,GAAkB+D,2BACbjE,GAAiBiE,iBAAiBC,aAClClE,GAAiBiE,iBAAiBjP,aAClCgL,GAAiBiE,iBAAiBlF,oBAClCiB,GAAiBiE,iBAAiBzE,oBAClCQ,GAAiBiE,iBAAiBxE,oBAClCO,GAAiBiE,iBAAiBvE,oBAClCM,GAAiBiE,iBAAiBtE,OAEd,QAAzBwE,GAAgB,MAAhBjE,QAAgB,EAAhBA,GAAkBQ,eAAO0D,iBAAET,mBAC7B3D,GAAiBU,QAAQiD,gBAAkBvE,EACzCY,GAAiBU,QAAQiD,mBAGA,QAAzBU,GAAgB,MAAhBnE,QAAgB,EAAhBA,GAAkBQ,eAAO4D,iBAAEhB,kBAC7BtD,GAAiBU,QAAQ4C,eAAiBlE,EACxCY,GAAiBU,QAAQ4C,kBAGA,QAAzBiB,GAAgB,MAAhBrE,QAAgB,EAAhBA,GAAkBQ,eAAO8D,iBAAEC,uBAC7BzE,GAAiBU,QAAQ+D,oBAAsBpE,EAC7CL,GAAiBU,QAAQ+D,uBAGM,QAA/BC,GAAgB,MAAhBxE,QAAgB,EAAhBA,GAAkByE,qBAAaC,iBAAEjB,mBACnC3D,GAAiB2E,cAAchB,gBAAkBvE,EAC/CY,GAAiB2E,cAAchB,mBAGN,QAAzBkB,GAAgB,MAAhB3E,QAAgB,EAAhBA,GAAkBQ,eAAOoE,iBAAEC,iBACtB/E,GAAiBU,QAAQqE,SAEL,QAAzBC,GAAgB,MAAhB9E,QAAgB,EAAhBA,GAAkBQ,eAAOuE,iBAAEjQ,eACtBgL,GAAiBU,QAAQ1L,OAEL,QAAzBkQ,GAAgB,MAAhBhF,QAAgB,EAAhBA,GAAkBQ,eAAOyE,iBAAE/P,qBACtB4K,GAAiBU,QAAQtL,aAEd,MAAhB4K,QAAgB,EAAhBE,GAAkBrL,QACpBmL,GAAiBnL,KAAOwL,EAAkBL,GAAiBnL,OAEtDmL,IAEToF,eAAgB,SAAUC,uGACxB,IAAIC,GAAkBrF,IAAUoF,GAC5BE,GACuD,QAAzDhF,EAAiC,QAAjCthB,EAAe,MAAfumB,QAAe,EAAfA,GAAiBC,wBAAgBrmB,eAAEsmB,8BAAsBjF,eAAEC,QACzDsC,GAA6D,QAAlDlC,GAAiC,QAAjCR,EAAe,MAAfkF,QAAe,EAAfA,GAAiBC,wBAAgB9E,eAAEgF,uBAAe5E,iBAAEiC,SAC/DN,GAAgE,QAAlDvB,EAAiC,QAAjCN,EAAe,MAAf2E,QAAe,EAAfA,GAAiBC,wBAAgBxE,eAAE0E,uBAAevE,eAAEsB,YAClE5D,GAAgE,QAAlD0C,EAAiC,QAAjCN,GAAe,MAAfsE,QAAe,EAAfA,GAAiBC,wBAAgBnE,iBAAEqE,uBAAelE,eAAE3C,YAClE8G,GACwE,QAA1E3E,GAAkD,QAAlDW,GAAiC,QAAjCL,GAAe,MAAfiE,QAAe,EAAfA,GAAiBC,wBAAgB/D,iBAAEiE,uBAAe9D,iBAAEgE,8BAAsB/D,iBACtE8D,mBACFE,GAA8B,MAAfR,QAAe,EAAfE,GAAiBM,aAChCC,GAA+B,MAAfT,QAAe,EAAfE,GAAiBO,cACjCC,GAA4B,MAAfV,QAAe,EAAfE,GAAiBQ,WAC9BC,GAA6B,MAAfX,QAAe,EAAfE,GAAiBS,YAC/BC,GAA2B,MAAfZ,QAAe,EAAfE,GAAiBU,UAC7BC,GAA8B,MAAfb,QAAe,EAAfE,GAAiBW,aAEpC,OAAInD,WACKA,GAAS7C,WAEW,MAAzBoF,QAAyB,EAAzBa,GAA2BxF,mBAC7B2E,GAA0B3E,gBAAkBxB,EAC1CmG,GAA0B3E,mBAGD,MAAzB2E,QAAyB,EAAzBa,GAA2BzE,oBAC7B4D,GAA0B5D,iBAAmBvC,EAC3CmG,GAA0B5D,oBAGf,MAAXe,QAAW,EAAX2D,GAAanH,UAAU/c,UACzBugB,GAAYxD,UAAYmD,EAAuBK,GAAYxD,YAEzDJ,KACFA,GAAcuB,EAAkBvB,KAE9B8G,WACKA,GAAmB5Q,OAEF,QAAtBgN,MAAa9C,iBAAS+C,iBAAE9f,UAC1B2jB,GAAa5G,UAAYmD,EAAuByD,GAAa5G,aAEO,QAAlEsD,GAAuC,QAAvCL,GAAoB,QAApBJ,GAAY,MAAZuE,QAAY,EAAZA,GAAcC,cAAMrE,iBAAE1B,yBAAiB4B,iBAAEpB,iCAAyByB,iBAAEd,oBACtEmE,GAAaS,OAAO/F,kBAAkBQ,0BAA0BW,iBAC9DvC,EACE0G,GAAaS,OAAO/F,kBAAkBQ,0BAA0BW,oBAGA,QAAlEkB,GAAuC,QAAvCP,GAAoB,QAApBC,GAAY,MAAZ+D,QAAY,EAAZA,GAAcC,cAAM5D,iBAAEnC,yBAAiBoC,iBAAE5B,iCAAyB8B,iBAAElC,mBACtEkF,GAAaS,OAAO/F,kBAAkBQ,0BAA0BJ,gBAC9DxB,EACE0G,GAAaS,OAAO/F,kBAAkBQ,0BAA0BJ,mBAGvB,QAA3CuC,GAA2B,QAA3B/Q,GAAa,MAAbtI,QAAa,EAAbA,GAAesZ,oBAAYL,iBAAEO,sBAAcD,iBAAElE,WAC/C4G,GAAc3C,aAAaE,eAAenE,QAAUC,EAClD2G,GAAc3C,aAAaE,eAAenE,WAGE,QAA5CsE,GAA2B,QAA3BP,GAAa,MAAbpZ,QAAa,EAAbA,GAAesZ,oBAAYG,iBAAEI,uBAAeD,iBAAEvE,WAChD4G,GAAc3C,aAAaO,gBAAgBxE,QAAUC,EACnD2G,GAAc3C,aAAaO,gBAAgBxE,WAGhB,QAA3BqE,GAAa,MAAb1Z,QAAa,EAAbA,GAAesZ,oBAAYQ,iBAAEG,mBAC/BgC,GAAc3C,aAAaW,gBAAkB1D,EAC3C0F,GAAc3C,aAAaW,mBAIyD,QAAtFM,GAAmD,QAAnDF,GAAgC,QAAhCN,GAAa,MAAb/Z,QAAa,EAAbA,GAAe0c,yBAAiB1C,iBAAEtD,yBAAiB4D,iBAAE/C,yCAAiCiD,iBAClF1D,mBAGJmF,GAAcS,kBAAkBhG,kBAAkBa,kCAAkCT,gBAClFyB,EACE0D,GAAcS,kBAAkBhG,kBAAkBa,kCAC/CT,mBAI+E,QAAtFiE,GAAmD,QAAnDH,GAAgC,QAAhCH,GAAa,MAAbza,QAAa,EAAbA,GAAe0c,yBAAiBhC,iBAAEhE,yBAAiBoE,iBAAEvD,yCAAiCyD,iBAClFnD,oBAGJoE,GAAcS,kBAAkBhG,kBAAkBa,kCAAkCM,iBAClFvC,EACE2G,GAAcS,kBAAkBhG,kBAAkBa,kCAC/CM,oBAG6B,QAAlCqD,GAAa,MAAblb,QAAa,EAAbA,GAAe2c,2BAAmBxB,iBAAEjB,kBACtC+B,GAAcU,oBAAoBzC,eAAiB5E,EACjD2G,GAAcU,oBAAoBzC,kBAGV,QAAxBkB,GAAU,MAAVwB,QAAU,EAAVA,GAAYC,oBAAYxB,iBAAExB,mBAC5BqC,GAAWW,aAAahD,gBAAkBvE,EACxC4G,GAAWW,aAAahD,mBAGA,QAAxBzD,GAAU,MAAVwG,QAAU,EAAVA,GAAYC,oBAAYC,iBAAEtD,kBAC5B0C,GAAWW,aAAarD,eAAiBlE,EACvC4G,GAAWW,aAAarD,kBAGA,QAAxBuD,GAAU,MAAVH,QAAU,EAAVA,GAAYC,oBAAYG,iBAAErC,uBAC5BuB,GAAWW,aAAalC,oBAAsBpE,EAC5C2F,GAAWW,aAAalC,uBAGE,QAA1BsC,GAAW,MAAXC,QAAW,EAAXA,GAAarC,qBAAasC,iBAAEtD,mBAC9BsC,GAAYtB,cAAchB,gBAAkBvE,EAC1C6G,GAAYtB,cAAchB,mBAGjB,MAATuC,QAAS,EAATgB,GAAWrS,QACbqR,GAAUrR,KAAOwL,EAAkB6F,GAAUrR,QAE/B,MAAZsR,QAAY,EAAZgB,GAAcnS,eACTmR,GAAanR,MAEfsQ,MAIX8B,gBACMpqB,KAAKqI,eAAeO,SAASC,GAAGwhB,oBAClC7I,SAAe8I,IAAa,CAE1BC,QAAS,CACPC,iBAAkBxqB,KAAKwqB,iBAAiBC,KAAKzqB,MAC7C0qB,kBAAmB1qB,KAAK0qB,kBAAkBD,KAAKzqB,SAMvD2qB,kBAAkBC,GACZ5qB,KAAKqI,eAAeO,SAASC,GAAGwhB,oBAClC7I,aAAmBoJ,GAIvBC,kBACE,OAAI7qB,KAAKqI,eAAeO,SAASC,GAAGwhB,mBAC3BS,YAAoB,CAAC9qB,KAAK+qB,sBAE5BD,KAGDE,UAAUC,GAChB,IACE,OAAOzjB,KAAK2W,MAAM8M,EAEX,CAFWA,MAClBC,GACA,OAAO,MAIHV,iBAAiBpH,SACvB,IAAsD,IAAlDA,EAAQzhB,IAAIwpB,cAActtB,QAAQmC,KAAKorB,OAG3C,IAAIhI,EAAQ6H,KAAM,CAChB,IAAIA,EAAOjrB,KAAKgrB,UAAU5H,EAAQ6H,MAE9B7H,EAAQzhB,IAAIwG,SAAS,mBAAwB,MAAJ8iB,OAAI,EAAJhpB,EAAMopB,kBAC1CJ,EAAKI,UAEN,MAAJJ,OAAI,EAAJhpB,EAAM+jB,kBACDiF,EAAKjF,SAASC,cAEf,MAAJgF,OAAI,EAAJhpB,EAAM+V,eACDiT,EAAKjT,OAEN,MAAJiT,OAAI,EAAJhpB,EAAM8f,sBACDkJ,EAAKlJ,cAEN,MAAJkJ,OAAI,EAAJhpB,EAAMmW,qBACD6S,EAAK7S,aAEN,MAAJ6S,OAAI,EAAJhpB,EAAMogB,kBACD4I,EAAK5I,UAEN,MAAJ4I,OAAI,EAAJhpB,EAAMqgB,kBACD2I,EAAK3I,UAEN,MAAJ2I,OAAI,EAAJhpB,EAAMsgB,kBACD0I,EAAK1I,UAEN,MAAJ0I,OAAI,EAAJhpB,EAAMugB,sBACDyI,EAAKzI,cAEN,MAAJyI,OAAI,EAAJhpB,EAAMwgB,sBACDwI,EAAKxI,cAEN,MAAJwI,OAAI,EAAJhpB,EAAMygB,sBACDuI,EAAKvI,cAEN,MAAJuI,OAAI,EAAJhpB,EAAM0gB,cACDsI,EAAKtI,MAEN,MAAJsI,OAAI,EAAJhpB,EAAM6f,eACRmJ,EAAKnJ,YAAcuB,EAAkB4H,EAAKnJ,eAEpC,MAAJmJ,OAAI,EAAJhpB,EAAMkgB,WACR8I,EAAK9I,QAAUC,EAAqB6I,EAAK9I,WAEnC,MAAJ8I,OAAI,EAAJhpB,EAAM0kB,mBACRsE,EAAKtE,gBAAkBvE,EAAqB6I,EAAKtE,mBAE9B,QAAjBuE,EAAI,MAAJjpB,OAAI,EAAJA,EAAMyjB,mBAAWtjB,eAAE8f,aACrB+I,EAAKvF,YAAYxD,UAAYmD,EAAuB4F,EAAKvF,YAAYxD,aAE/D,MAAJ+I,OAAI,EAAJhpB,EAAMqkB,kBACR2E,EAAK3E,eAAiBlE,EAAqB6I,EAAK3E,kBAE1C,MAAJ2E,OAAI,EAAJhpB,EAAM8kB,mBACRkE,EAAKlE,gBAAkB1D,EAAkB4H,EAAKlE,mBAExC,MAAJkE,OAAI,EAAJhpB,EAAM0kB,mBACRsE,EAAKtE,gBAAkBvE,EAAqB6I,EAAKtE,kBAEnDvD,EAAQ6H,KAAOA,GAAc7H,EAAQ6H,KAEvC7H,SAAQzhB,IAAMyhB,EAAQzhB,IAAIC,QACxBoM,KACAhO,KAAKsrB,+BAEPlI,EAAQmI,QAAQvrB,KAAKwrB,eAAiB,GAC/BpI,GAGDsH,kBAAkBe,sBACxB,GAAIA,EAASR,KAAM,CACjB,IAAIA,GAAOjrB,KAAKgrB,UAAUS,EAASR,OAC3B,MAAJA,QAAI,EAAJ/G,GAAMwH,qBACDT,GAAKS,aAEN,MAAJT,QAAI,EAAJ/G,GAAMlM,eACDiT,GAAKjT,OAEN,MAAJiT,QAAI,EAAJ/G,GAAM9L,qBACD6S,GAAK7S,aAEG,QAAb8S,EAAI,MAAJhH,QAAI,EAAJA,GAAMR,eAAOthB,eAAEwhB,mBACjBqH,GAAKvH,QAAQE,gBAAkBxB,EAAqB6I,GAAKvH,QAAQE,mBAElD,QAAb3hB,EAAI,MAAJiiB,QAAI,EAAJA,GAAMR,eAAOD,eAAEkB,oBACjBsG,GAAKvH,QAAQiB,iBAAmBvC,EAAqB6I,GAAKvH,QAAQiB,oBAEjD,QAAfpB,EAAI,MAAJW,QAAI,EAAJA,GAAMhC,iBAASyB,eAAExe,UACnB8lB,GAAK/I,UAAYmD,EAAuB4F,GAAK/I,aAEZ,QAA/BoB,EAAI,MAAJY,QAAI,EAAJA,GAAMF,iCAAyBD,eAAEY,oBACnCsG,GAAKjH,0BAA0BW,iBAAmBvC,EAChD6I,GAAKjH,0BAA0BW,oBAGQ,QAAvCb,GAAI,MAAJI,QAAI,EAAJA,GAAMG,yCAAiCJ,iBAAEU,oBAC3CsG,GAAK5G,kCAAkCM,iBAAmBvC,EACxD6I,GAAK5G,kCAAkCM,oBAGR,QAA/Bd,EAAI,MAAJK,QAAI,EAAJA,GAAMF,iCAAyBI,eAAER,mBACnCqH,GAAKjH,0BAA0BJ,gBAAkBxB,EAC/C6I,GAAKjH,0BAA0BJ,mBAGQ,QAAvCO,EAAI,MAAJD,QAAI,EAAJA,GAAMG,yCAAiCC,eAAEV,mBAC3CqH,GAAK5G,kCAAkCT,gBAAkBxB,EACvD6I,GAAK5G,kCAAkCT,kBAG3C6H,EAASR,KAAOA,IAAcQ,EAASR,KAEzC,OAAOQ,gDA/ZE7I,GAAgB/iB,uCAAhB+iB,EAAgB3L,QAAhB2L,EAAgB,qBAFf,SAEDA,GAAb,EAAaA,8GCQN,IAAM+I,EAAb,MAAM,QAKJ5rB,YACU6rB,EACmBlsB,GADnBM,YACmBA,gBAN7BA,aAAkB1B,wBAClB0B,aAAU,CAAE6rB,iBAAiB,GAO3B7rB,KAAK8rB,SAAUC,OAAWrsB,GAG5BssB,oBACE,OAAOhsB,KAAK4rB,KAAK7L,IAA0B,GAAG/f,KAAKisB,mBAAkBlS,+BAChE/Z,KAAKksB,SAAO,CACfC,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,cAKlCQ,sBACE,OAAOtsB,KAAK4rB,KAAK7L,IAA4B,GAAG/f,KAAKisB,sBAAqBlS,+BACrE/Z,KAAKksB,SAAO,CACfC,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,cAKlCS,kBAAkBC,GAChB,OAAOxsB,KAAK4rB,KAAK7L,IAA0B,GAAG/f,KAAKisB,oBAAoBO,IAAW,CAChFL,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlCW,oBAAoBC,GAClB,OAAO1sB,KAAK4rB,KAAK7L,IAA4B,GAAG/f,KAAKisB,uBAAuBS,IAAc,CACxFP,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlCa,iBAAiBvJ,GACf,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,iCAAgClS,+BACnCqJ,GAAO,CAAE7f,SAAUvD,KAAK8rB,UAC7B9rB,KAAKksB,SAITW,2BAA2BzJ,GACzB,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,8BAA6BlS,+BAChCqJ,GAAO,CAAE7f,SAAUvD,KAAK8rB,UAC7B9rB,KAAKksB,SAITY,YAAY1J,GACV,OAAOpjB,KAAK4rB,KAAKgB,KAA0B,GAAG5sB,KAAKisB,0BAA2B7I,EAAOrJ,iBAChF/Z,KAAKksB,UAIZa,oBAAoBP,GAClB,OAAOxsB,KAAK4rB,KAAK7L,IAA4B,GAAG/f,KAAKisB,oCAAqC,CACxFE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEG,eAKpBQ,iBAAiB5J,GACf,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,gCACR7I,EAAOrJ,iBAEF/Z,KAAKksB,UAKde,eAAe7J,GACb,OAAOpjB,KAAK4rB,KAAKgB,KAAU,GAAG5sB,KAAKisB,0CAA2C7I,GAGhF8J,aAAaC,GACXntB,KAAK4rB,KACF7L,IACC,GAAG/f,KAAKisB,6CAA6CkB,aAAuBntB,KAAK8rB,UACjF,CACEsB,aAAc,SAGjB3rB,UAAW4rB,KACVC,YAAOD,EAAK/sB,oBAA4BA,CAAG,UAIjDitB,oBAAoBC,EAAkBhB,GAKpC,IAAIiB,EAAkB,MAAXjB,EAAkB,GAAGgB,IACf,MAAZA,EAAmB,GAAGhB,IAAU,GAAGgB,KAAYhB,IACpD,OACSxsB,KAAK4rB,KAAK7L,IADJ,MAAZyN,EAEA,GAAGxtB,KAAKisB,+BAA+BwB,IAUvC,GAAGztB,KAAKisB,4BAA4BwB,IAVS1T,+BACzC/Z,KAAKksB,SAAO,CACfC,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAUAA,+CA7HzBH,GAAY9rB,kBAOb8C,mCAPCgpB,EAAY1U,QAAZ0U,EAAY,qBAFX,SAEDA,GAAb,EAAaA,wKC+Bb,MAAM+B,EAAwB,CAC5B5gB,GAAI,SACJ,QAAS,SACT,QAAS,SACT,QAAS,UAEL6gB,EAA0B,CAC9B7gB,GAAI,OACJ,QAAS,OACT,QAAS,OACT,QAAS,QAMJ,IAAM8gB,EAAb,MAAM,QAMJ7tB,YACU6rB,EACmBlsB,GADnBM,YACmBA,gBAP7BA,aAAkB1B,0BAShB0B,KAAK8rB,SAAUC,OAAWrsB,GAC1BM,KAAK6tB,kBAAoBH,EAAsB1tB,KAAK8rB,SACpD9rB,KAAK8tB,gBAAkBH,EAAwB3tB,KAAK8rB,SAGtDiC,kBAAkBC,GAChB,OAAOhuB,KAAK4rB,KAAK7L,IAA0B,GAAG/f,KAAKisB,wCAAyC,CAC1FE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACV2B,aAMRC,gCACE,OAAOjuB,KAAK4rB,KAAK7L,IAA2B,GAAG/f,KAAKisB,4BAGtDiC,eAAe9K,WACb,OAAOpjB,KAAK4rB,KAAK7L,IAA4B,GAAG/f,KAAKisB,6BAA8B,CACjFE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACV1J,KAAMS,EAAQT,KACdwL,YAA8B,QAAlBlsB,IAAQksB,kBAAU/rB,eAAE0B,aAAc,IAC9CsqB,UAA0B,QAAhB7K,IAAQ6K,gBAAQ3K,eAAE3f,aAAcuI,eAC1C6L,UAAWkL,EAAQlL,UACnBC,SAAUiL,EAAQjL,SAClBkW,UAAWjL,EAAQiF,MACnBiG,kBAAmBlL,EAAQkL,kBAC3BC,QAASnL,EAAQmL,QACjBC,cAAepY,aAMvBqY,+BAA+BrL,GAC7B,OAAOpjB,KAAK4rB,KAAK7L,IAAmB,GAAG/f,KAAKisB,mCAAoC,CAC9EE,OAAQ,IAAIC,KAAW,CACrBsC,QAAS,IAAIC,IACbtC,WAAUtS,gCACL6U,QAAoBxL,IAAQ,CAC/ByL,aAAc7uB,KAAK8rB,cAM3BgD,wBACE1L,GAEA,OAAOpjB,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,gCAAgC7I,EAAQ2L,UAChD,CACE5C,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACV2C,sBAAuB5L,EAAQ4L,sBAC3B5L,EAAQ4L,sBACRhvB,KAAK8rB,QACTyC,QAASjwB,YACT6vB,WAAY/K,EAAQ+K,WAAWrqB,WAC/BsqB,SAAUhL,EAAQgL,SAAStqB,WAC3B0qB,cAAepY,aAOzB6Y,yBACE7L,GAEA,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,iDACR7I,GAIJ8L,kBACE,MAAM3D,EAAU,IAAI4D,KAAY,CAAE,eAAgB,oCAGlD,OAAOnvB,KAAK4rB,KACTgB,KAAK,GAAG5sB,KAAKisB,oCAHHjsB,KAAK6tB,kBAGyC,CACvDtC,QAASA,EACT6D,QAAS,WACThC,aAAc,SAEflsB,MACCyI,OAAK,IACL3E,OAAKymB,GAAaA,EAASR,OAIjCoE,aACErJ,EACAsJ,EACAC,GAEA,OAAOvvB,KAAK4rB,KAAKgB,KAA2B,GAAG5sB,KAAKisB,uCAAsClS,gCACrFyV,OAAqCxJ,IAAS,CACjDsJ,4BACAC,iBAIJE,gBAAgBrM,GACd,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,0CACR7I,GAIJsM,gBAAgBtM,GACd,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,0CACR7I,GAIJuM,eAAevM,GACb,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,yCACR7I,GAIJwM,qBAAqB5X,GACnB,OAAOhY,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,sCACR,CACEjU,MAAOA,IAKb6X,iBACEC,EACAC,GAEA,OAAO/vB,KAAK4rB,KAAK7L,IAAwB,GAAG/f,KAAKisB,wBAAyB,CACxEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACVwC,aAAc7uB,KAAK8tB,gBACnBkC,uBAAwBrC,EAAwBmC,GAChDC,UAAWA,OAMnB9C,eAAe7J,GACb,OAAOpjB,KAAK4rB,KAAKgB,KAAU,GAAG5sB,KAAKisB,oCAAqC7I,GAO1E6M,0BACEX,EACAY,EACAC,EACAC,EACAC,IAEA,OAAOrwB,KAAK4rB,KAAK7L,IAAa,GAAG/f,KAAKisB,0CAA2C,CAC/EE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACViD,0BAA2BA,EAA0BxrB,WACrDosB,aAAcA,EAAapsB,WAC3BqsB,iBAAkBG,OAAOH,GACzBC,wBAAyBE,OAAOF,GAChCC,qBAAsBC,OAAOD,SAMrCE,2BACE,OAAOvwB,KAAK4rB,KAAK7L,IAAY,GAAG/f,KAAKisB,0CAGvCuE,kCACE,OAAOxwB,KAAK4rB,KAAK7L,IAAY,GAAG/f,KAAKisB,iDAGvCwE,iCACE,OAAOzwB,KAAK4rB,KAAK7L,IAAa,GAAG/f,KAAKisB,0DAGxCyE,8BACE,OAAO1wB,KAAK4rB,KAAK7L,IAAa,GAAG/f,KAAKisB,uDAGxC0E,cACE,OAAO3wB,KAAK4rB,KAAK7L,IAA4B,GAAG/f,KAAKisB,6BAGvDU,iBAAiBvJ,GACf,OAAOpjB,KAAK4rB,KAAKgB,KAA0B,GAAG5sB,KAAKisB,iCAAgClS,+BAC9EqJ,GAAO,CACVyL,aAAc7uB,KAAK8tB,mBAIvB8C,YAAYxN,GACV,OAAOpjB,KAAK4rB,KAAKgB,KAA0B,GAAG5sB,KAAKisB,iCAAkC7I,GAGvFyN,YAAYzN,GACV,OAAOpjB,KAAK4rB,KAAKgB,KAA0B,GAAG5sB,KAAKisB,iCAAkC7I,GAGvF0N,oBACE1N,GAEA,OAAOpjB,KAAK4rB,KAAKgB,KAAkC,GAAG5sB,KAAKisB,qBAAoBlS,iBAC1EqJ,IAIP2N,cAAc3N,GACZ,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,mCACR7I,GAIJ4N,gBAAgB5N,GACd,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,qCACR7I,GAIJ6N,cAAc7N,GACZ,OAAOpjB,KAAK4rB,KAAKgB,KAA4B,GAAG5sB,KAAKisB,4BAA6B7I,GAMpF8N,2BACE9N,GAEA,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,kDAAiDlS,iBAEpDqJ,IAKT+N,iBAAiB/N,GACf,OAAOpjB,KAAK4rB,KAAKgB,KAA+B,GAAG5sB,KAAKisB,8BAA6BlS,iBAChFqJ,IAIPgO,cAAchO,GACZ,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,2CACR7I,GAIJiO,gBAAgB/B,GACd,MAAM/D,EAAU,IAAI4D,KAAY,CAAE,eAAgB,oCAClD,OAAOnvB,KAAK4rB,KACTgB,KAAK,GAAG5sB,KAAKisB,iCAAkCqD,EAA2B,CACzE/D,QAASA,EACT6D,QAAS,WACThC,aAAc,SAEflsB,MACCyI,OAAK,IACL3E,OAAKymB,GAAaA,EAASR,OAIjCqG,wBAAwBhC,GACtB,OAAOtvB,KAAK4rB,KAAK7L,IAAc,GAAG/f,KAAKisB,wCAAyC,CAC9EE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACViD,0BAA2BA,EAA0BxrB,gBAM7DytB,kBAAkBnO,GAChB,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,4CACR7I,GAIJoO,2BACEpO,GAEA,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,4CACR7I,iDA1TOwK,GAAkB/tB,kBAQnB8C,mCARCirB,EAAkB3W,QAAlB2W,EAAkB,qBAFjB,SAEDA,GAAb,EAAaA,0HCzDN,IAAM6D,EAAb,MAAM,QAMJ1xB,YAAoB6rB,eALpB5rB,aAAkB1B,wBAClB0B,aAAU,CACR6rB,iBAAiB,GAKnBkF,cAAc/Y,GACZ,OAAOhY,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,yCACR,CAAEjU,SACFhY,KAAKksB,SAITwF,eACEtO,GAEA,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,2CACR7I,EACApjB,KAAKksB,SAITyF,gBAAgBC,GACd,MAAMC,EAAsB,IAAIta,IAAkCqa,GAElE,QAASE,EAAI,EAAGA,EAAIF,EAASzsB,OAAQ2sB,IAAK,CACxC,IAAIC,EAASnsB,SAASgT,cAAc,UAEpCmZ,EAAOC,QAAS,EAChBD,EAAOE,IAAML,EAASE,GAAGI,WAEzBtsB,SAASqlB,KAAKjS,YAAY+Y,GAE1BA,EAAOlZ,OAAS,KACd,MAAMsZ,EAAoBN,EAAoBO,WAC9CP,EAAoB9Y,KAClBoZ,EAAkB5wB,OAAQ8wB,GAAYA,EAAQrE,QAAU4D,EAASE,GAAG9D,SAK1E,OAAO6D,EAAoB3wB,MACzBK,OAAQ+wB,GAAqD,IAA9BA,EAAmBntB,SAClDH,OAAI,IAAM4sB,EAAS5sB,IAAKqtB,GAAYA,EAAQrE,SAIhDuE,gBAAgB3H,GACd5qB,KAAK4rB,KACF7L,IAAI,GAAG/f,KAAKisB,oBAAoBrB,oBAAsB,CAAEwC,aAAc,SACtE3rB,UAAW4rB,KACVC,YAAOD,EAAK/sB,SAAkBA,CAAG,UAIvCkyB,mBAAmBxa,GACjB,OAAOhY,KAAK4rB,KAAK7L,IAAI,GAAG/f,KAAKisB,8CAA6ClS,+BACrE/Z,KAAKksB,SAAO,CACfC,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACVrU,4DAhEGyZ,GAAc5xB,wCAAd4xB,EAAcxa,QAAdwa,EAAc,qBAFb,SAEDA,GAAb,EAAaA,+CCwCN,IAAK/c,EAGX,MAHD,OAAYA,QAAW,KACrBA,kBACAA,gBAFUA,EAAZ,IAAYA,GAGX,EAHWA,iOC/CA+d,EA0BX,MA1BD,OAAYA,QAAkB,KAC5BA,kDAEAA,6CACAA,4DACAA,4DAEAA,2CACAA,0DACAA,0DAEAA,2CACAA,0DACAA,0DAEAA,2CACAA,0DACAA,0DAEAA,sDACAA,qEACAA,qEAEAA,yEAEAA,mDAzBUA,EAAZ,IAAYA,GA0BX,GAEM,MAAMC,GAAoBC,QAAaF,EAAmBC,mBACpDE,GAAiBD,QAAaF,EAAmBG,gBACjDC,GAAwBF,QACnCF,EAAmBI,uBACnBC,WAEWC,GAAwBJ,QACnCF,EAAmBM,uBACnBD,WAMWE,GAAgBL,QAC3BF,EAAmBO,eACnBF,WAEWG,GAAuBN,QAClCF,EAAmBQ,sBACnBH,WAEWI,GAAuBP,QAClCF,EAAmBS,sBACnBJ,WAMWK,GAAgBR,QAC3BF,EAAmBU,eACnBL,WAEWM,GAAuBT,QAClCF,EAAmBW,sBACnBN,WAEWO,GAAuBV,QAClCF,EAAmBY,sBACnBP,WAMWQ,GAAgBX,QAC3BF,EAAmBa,eACnBR,WAEWS,GAAuBZ,QAAaF,EAAmBc,sBACvDC,GAAuBb,QAClCF,EAAmBe,sBACnBV,WAMWW,GAAqBd,QAAaF,EAAmBgB,oBACrDC,GAA4Bf,QACvCF,EAAmBiB,2BACnBZ,WAEWa,GAA4BhB,QACvCF,EAAmBkB,2BACnBb,WAGWc,GAA8BjB,QACzCF,EAAmBmB,6BAGRpQ,GAAoBmP,QAC/BF,EAAmBjP,mBACnBsP,sHC7GK,MAEMe,GAAuBC,QAFE,gBAIzBC,GAAkBC,QAAeH,EAAuBxL,GACnEA,EAAQA,EAAMnG,UAAY,MAGf+R,GAAyBD,QAAeH,EAAuBxL,GAC1EA,EAAQA,EAAM6L,iBAAmB,MAGtBC,GAAgBH,QAAeH,EAAuBxL,KACjEA,GAAQA,EAAM+L,SAQHC,IAL0BL,QACrCH,EACCxL,GAAyBA,EAAQA,EAAMiM,cAActvB,IAAKmV,GAAMA,EAAE+C,MAAQ,KAG1C8W,QAAeH,EAAuBxL,GACvEA,EAAQA,EAAMiM,cAAgB,KAGnBC,GAA0BP,QACrCH,EACCxL,GAAyBA,EAAQA,EAAMkB,OAAO/F,kBAAoB,MAGxDgR,GAAuBR,QAAeH,EAAuBxL,KACxEA,GAAQA,EAAMoM,eAAiB,4GC9BrBC,EASX,MATD,OAAYA,QAAe,KACzBA,oCACAA,kCAEAA,iCACAA,qEAEAA,iDACAA,kDARUA,EAAZ,IAAYA,GASX,GAEM,MAAMC,GAAehC,QAC1B+B,EAAgBC,cAChB7B,WAGW8B,GAAcjC,QACzB+B,EAAgBE,aAChB9B,WAGW7pB,GAAS0pB,QAAa+B,EAAgBzrB,QAEtC4rB,GAAuBlC,QAClC+B,EAAgBG,sBAChB/B,WAGWgC,GAAiBnC,QAC5B+B,EAAgBI,gBAChBhC,YAGgCH,QAChC+B,EAAgBK,oBAChBjC,2FCpCK,MAEMkC,GAAoBlB,QAFE,aAItB5sB,GAAwB8sB,QAAegB,EAAoB3M,GACtEA,EAAQA,EAAM4M,qBAAkB9qB,GAGrB+qB,GAAmBlB,QAAegB,EAAoB3M,KACjEA,GAAQA,EAAM8M,YAGHC,GAA+BpB,QAC1CgB,EACCK,GAAyBtb,OAAOub,OAAOD,EAAUE,gBAAgBC,MAAO5tB,GAAMA,qKCXrE6tB,EAYX,MAZD,OAAYA,QAAe,KACzBA,gCACAA,iDACAA,iDACAA,qDACAA,oEACAA,oEACAA,kCACAA,+CACAA,8DACAA,8DACAA,+CAXUA,EAAZ,IAAYA,GAYX,GAEM,MAAMC,GAAa/C,QAAa8C,EAAgBC,YAAY5C,WAEtD6C,GAAoBhD,QAC/B8C,EAAgBE,mBAChB7C,WAGW8C,GAAoBjD,QAC/B8C,EAAgBG,mBAChB9C,WAGW+C,GAAsBlD,QAAa8C,EAAgBI,qBAEnDC,GAA6BnD,QACxC8C,EAAgBK,4BAChBhD,WAGWiD,GAA6BpD,QACxC8C,EAAgBM,4BAChBjD,WAGWkD,GAAarD,QAAa8C,EAAgBO,YAK1CC,GAAmBtD,QAC9B8C,EAAgBQ,kBAChBnD,WAGWoD,GAA0BvD,QACrC8C,EAAgBS,yBAChBpD,WAGWqD,GAA0BxD,QAAa8C,EAAgBU,yBAEvDC,GAAmBzD,QAAa8C,EAAgBW,6TCtDjDC,EAoCX,MApCD,OAAYA,SAAe,KACzBA,yCAEAA,iCACAA,gDACAA,gDAEAA,kCACAA,iDACAA,iDAEAA,8CACAA,6DACAA,6DAEAA,mCACAA,kDACAA,kDAEAA,mCACAA,kDACAA,kDAEAA,4CACAA,2DACAA,2DAEAA,wEACAA,uFACAA,uFAEAA,4CACAA,2DACAA,2DAEAA,2EAnCUA,EAAZ,IAAYA,IAoCX,GAEM,MAAMC,GAAiB3D,QAAa0D,EAAgBC,gBAK9CC,GAAY5D,QAAa0D,EAAgBE,WACzCC,GAAmB7D,QAC9B0D,EAAgBG,kBAChB1D,WAEW2D,GAAmB9D,QAC9B0D,EAAgBI,kBAChB3D,WAMWzX,GAAYsX,QACvB0D,EAAgBhb,WAChByX,WAEW4D,GAAmB/D,QAC9B0D,EAAgBK,kBAChB5D,WAEW6D,GAAmBhE,QAC9B0D,EAAgBM,kBAChB7D,WAMW8D,GAAqBjE,QAChC0D,EAAgBQ,iBAChB/D,WAEWgE,GAA4BnE,QACvC0D,EAAgBU,wBAChBjE,WAEWkE,GAA4BrE,QACvC0D,EAAgBY,wBAChBnE,WAKWoE,GAAavE,QAAa0D,EAAgBa,YAC1CC,GAAoBxE,QAAa0D,EAAgBc,mBACjDC,GAAoBzE,QAC/B0D,EAAgBe,mBAChBtE,WAMWuE,GAAU1E,QAAa0D,EAAgBiB,YACvCC,GAAiB5E,QAAa0D,EAAgBmB,mBAC9CC,GAAiB9E,QAC5B0D,EAAgBqB,mBAChB5E,WAMW6E,GAAiBhF,QAC5B0D,EAAgBsB,gBAChB7E,WAEW8E,GAAwBjF,QACnC0D,EAAgBuB,uBAChB9E,WAEW+E,GAAwBlF,QACnC0D,EAAgBwB,uBAChB/E,WAMWgF,IAA+BnF,QAC1C0D,EAAgByB,8BAChBhF,WAEWiF,GAAsCpF,QACjD0D,EAAgB0B,qCAChBjF,WAEWkF,GAAsCrF,QACjD0D,EAAgB2B,qCAChBlF,WAMWmF,IAA2BtF,QACtC0D,EAAgB4B,0BAChBnF,WAGWoF,GAAiBvF,QAAa0D,EAAgB6B,gBAC9CC,IAAwBxF,QACnC0D,EAAgB8B,uBAChBrF,WAEWsF,IAAwBzF,QACnC0D,EAAgB+B,uBAChBtF,6GC3JK,MAEMuF,GAAyBvE,QAFH,aAItBwE,GAA8BtE,QACzCqE,EACChQ,GAAsBA,EAAQA,EAAMkB,OAAOgP,iBAAmB,MAGpDnxB,GAAa4sB,QAAeqE,EAAyBhQ,GAChEA,EAAQA,EAAM3M,KAAO,MAGV8c,EAAuB5N,IAClCoJ,QAAeqE,EAAyBhQ,GACtCA,EAAQA,EAAM3M,KAAKhU,WAAW+wB,KAAMC,GAAMA,EAAEC,cAAgB/N,GAAM,MAGzDuJ,GAAgBH,QAAeqE,EAAyBhQ,KACnEA,GAAQA,EAAM+L,SAGHwE,GAA8B5E,QAAeqE,EAAyBhQ,KACjFA,GAAQA,EAAMwQ,sBAAwB,iOCpB5BC,EA2BX,MA3BD,OAAYA,QAAmB,KAC7BA,qDACAA,sEACAA,sEAEAA,4DACAA,6EACAA,yDAEAA,mEACAA,qEAEAA,oDACAA,mEACAA,mEACAA,iDACAA,iDAEAA,uDAEAA,oEAEAA,+CAEAA,gEAEAA,yDA1BUA,EAAZ,IAAYA,GA2BX,GAEM,MAAMC,GAAqBpG,QAChCmG,EAAoBC,oBACpBjG,WAEWkG,GAA4BrG,QACvCmG,EAAoBE,2BACpBlG,WAEWmG,GAA4BtG,QACvCmG,EAAoBG,2BACpBnG,WAEWoG,GAA2BvG,QAAamG,EAAoBI,0BAE5DC,GAAqBxG,QAAamG,EAAoBK,oBAEtDC,GAAsBzG,QAAamG,EAAoBM,qBAEvDC,GAA4B1G,QACvCmG,EAAoBO,2BACpBvG,WAGWwG,GAA0B3G,QACrCmG,EAAoBQ,yBACpBxG,WAEWyG,GAA2B5G,QAAamG,EAAoBS,0BAE5DC,GAAsC7G,QACjDmG,EAAoBU,qCAGTC,GAAmB9G,QAC9BmG,EAAoBW,kBACpB3G,WAEW4G,GAA0B/G,QAAamG,EAAoBY,yBAC3DC,GAA0BhH,QACrCmG,EAAoBa,yBACpB7G,WAEW8G,GAAkBjH,QAAamG,EAAoBc,iBACnDC,GAAkBlH,QAAamG,EAAoBe,iBAEnDC,GAAiBnH,QAC5BmG,EAAoBgB,gBACpBhH,WAGWiH,GAA4BpH,QACvCmG,EAAoBiB,2BAMTC,GAAsBrH,QACjCmG,EAAoBkB,qBACpBlH,4KC3FK,MAEMmH,GACXnG,QAHqC,iBAK1BoG,GAAqBlG,QAChCiG,EACC5R,GAA0BA,EAAQA,EAAMjC,aAAe,MAG7C+T,GAA4BnG,QACvCiG,EACC5R,GAA0BA,EAAQA,EAAMmB,kBAAkBhG,kBAAoB,MAGpE4W,GAAuBpG,QAClCiG,EACC5R,KAA0BA,GAAQA,EAAMgS,gBAG9BC,GAAuBtG,QAClCiG,EACC5R,GAA0BA,EAAQA,EAAMoB,oBAAoBzC,eAAiB,MAGnEuT,GAAmBvG,QAC9BiG,EACC5R,GAA0BA,EAAQA,EAAMmS,WAAa,MAG3CC,GAAoCzG,QAC/CiG,EACC5R,KAA0BA,GAAQA,EAAMqS,WAG9BC,GAAoB3G,QAC/BiG,EACC5R,GAA0BA,EAAQA,EAAMuS,YAAc,MAG5CC,GAAqC7G,QAChDiG,EACC5R,KAA0BA,GAAQA,EAAMyS,8BAG9BC,GAA4B/G,QACvCiG,EACC5R,GAA0BA,EAAQA,EAAMmS,WAAWQ,0BAA4B,MAGrEC,GAAqBjH,QAChCiG,EACC5R,KAA0BA,GAAQA,EAAM6S,cAG9BC,GAAyBnH,QACpCiG,EACC5R,GAA0BA,EAAQA,EAAM+S,iBAAmB,MAGjDC,GAAoBrH,QAC/BiG,EACC5R,GAA0BA,EAAQA,EAAMiT,YAAc,iHC7D7CC,EAOX,MAPD,OAAYA,QAA6B,KACvCA,8FAEAA,0GACAA,2FACAA,uFACAA,uFANUA,EAAZ,IAAYA,GAOX,GAEM,MAAMC,GAAmC7I,QAC9C4I,EAA8BC,kCAC9B1I,WAGW2I,GAAwC9I,QACnD4I,EAA8BE,uCAC9B3I,WAGW4I,GAAiC/I,QAC5C4I,EAA8BG,gCAC9B5I,WAGW6I,GAA+BhJ,QAC1C4I,EAA8BI,8BAC9B7I,WAGW8I,GAA+BjJ,QAC1C4I,EAA8BK,6XCzBpBC,EAwCX,MAxCD,OAAYA,SAAqB,KAC/BA,0FACAA,2FACAA,iFACAA,iFACAA,wEAEAA,+GACAA,oEACAA,mFACAA,mFACAA,oEAEAA,0FAEAA,yGAEAA,yGAEAA,iDACAA,gEACAA,gEACAA,qDACAA,oEACAA,oEACAA,2EACAA,sFAEAA,kEACAA,iFACAA,iFACAA,yEACAA,2CACAA,yCACAA,mGACAA,6FACAA,kFACAA,uEACAA,uDACAA,mGAvCUA,EAAZ,IAAYA,IAwCX,GAKM,MAAMC,GAAqCnJ,QAChDkJ,EAAsBC,oCACtBhJ,WAGWiJ,GAAoCpJ,QAC/CkJ,EAAsBE,mCACtBjJ,WAGWkJ,GAAgCrJ,QAC3CkJ,EAAsBG,+BACtBlJ,WAGWmJ,GAAgCtJ,QAC3CkJ,EAAsBI,+BACtBnJ,WAGWoJ,GAAyBvJ,QACpCkJ,EAAsBK,uBACtB,CAACC,IAA6B,KAAW,CAAEA,iCAGhCC,GAA8CzJ,QACzDkJ,EAAsBO,6CAMXC,GAA0B1J,QAAakJ,EAAsBQ,yBAE7DC,GAAiC3J,QAC5CkJ,EAAsBS,gCACtBxJ,WAGWyJ,GAAiC5J,QAC5CkJ,EAAsBU,gCAQXC,IAL0B7J,QAAakJ,EAAsBY,0BAKzB9J,QAC/CkJ,EAAsBW,oCAEXE,GAA2C/J,QACtDkJ,EAAsBa,0CACtB5J,WAEW6J,GAA2ChK,QACtDkJ,EAAsBc,0CAMXzO,GAAiByE,QAC5BkJ,EAAsB3N,gBACtB4E,WAEW8J,GAAwBjK,QACnCkJ,EAAsBe,uBACtB9J,WAEW+J,GAAwBlK,QAAakJ,EAAsBgB,uBAE3DC,GAAmBnK,QAC9BkJ,EAAsBiB,kBACtBhK,WAEWiK,GAA0BpK,QACrCkJ,EAAsBkB,yBACtBjK,WAEWkK,GAA0BrK,QACrCkJ,EAAsBmB,yBACtBlK,WAEWmK,IAAkCtK,QAC7CkJ,EAAsBoB,iCAGXC,GAA2BvK,QACtCkJ,EAAsBsB,4BAMXC,GAAyBzK,QAAakJ,EAAsBuB,wBAC5DC,IAAgC1K,QAC3CkJ,EAAsBwB,+BACtBvK,WAEWwK,GAAgC3K,QAC3CkJ,EAAsByB,+BAKXl5B,KAH4BuuB,QACvCkJ,EAAsB0B,4BAEG5K,QACzBkJ,EAAsBz3B,aACtB0uB,YAEWruB,IAAakuB,QAAakJ,EAAsBp3B,YAChD+4B,IAAwC7K,QACnDkJ,EAAsB2B,uCAEXC,IAAiC9K,QAC5CkJ,EAAsB4B,gCACtB3K,WAEW4K,IAA2B/K,QACtCkJ,EAAsB6B,0BAEXC,IAA+BhL,QAC1CkJ,EAAsB8B,8BAMXC,IAAoBjL,QAC/BkJ,EAAsB+B,mBACtB9K,WAMW+K,IAAwClL,QACnDkJ,EAAsBgC,4RC1LjB,MAEMC,GACXhK,QAHuC,mBAK5BvuB,GAA0ByuB,QACrC8J,EACCzV,GAA4BA,EAAQA,EAAM0V,kBAAoB,MAGpDv4B,GAA6BwuB,QACxC8J,EACCzV,KAA4BA,KAAUA,EAAM0V,mBAGlCC,GAAwBhK,QACnC8J,EACCzV,GAA4BA,GAAgB,MAGlC4V,GAA2BjK,QACtC8J,EACCzV,GAA4BA,EAAQA,EAAM6V,mBAAqB,MAGrDC,GAAyBnK,QACpC8J,EACCzV,GAA4BA,EAAQA,EAAM+V,iBAAmB,MAQnDr5B,IALoCivB,QAC/C8J,EACCzV,IAA0B,OAAC,OAACA,EAAsC,QAA9B9D,KAAM6Z,iBAAiBC,eAAOj8B,iBAAE+C,OAAS,KAGlC6uB,QAC5C8J,EACCzV,IAA0B,UACzB,OAAwB,QAAxB9D,GAAK,MAALC,OAAK,EAALA,EAAOuZ,yBAAiB37B,iBAAE6C,SAAiC,QAAvB2f,KAAMmZ,yBAAiBta,iBAAExe,QAAU,MAG9Dq5B,GAAwCtK,QACnD8J,EACCzV,KAA4BA,GAAQA,EAAMkW,gBAGhCn6B,GAAc4vB,QAAe8J,EAA+BzV,GACvEA,EAAQA,EAAMmW,MAAQ,MAGXf,GAAiCzJ,QAC5C8J,EACCzV,GAA4BA,EAAQA,EAAMoW,yBAA2B,MAG3DC,GAAiC1K,QAC5C8J,EACCzV,KAA4BA,GAAQA,EAAMsW,0BAGhCC,GAAmC5K,QAC9C8J,EACCzV,KAA4BA,GAAQA,EAAM8T,4BAGhC0C,GAAoC7K,QAC/C8J,EACCzV,KAA4BA,GAAQA,EAAMyW,0BAEhCC,GAAmC/K,QAC9C8J,EACCzV,KAA4BA,GAAQA,EAAM2W,4BAGhCC,GAA+CjL,QAC1D8J,EACCzV,GACCA,EAAQA,EAAM6W,uCAAyC1oB,gBAG9C2oB,GAAmCnL,QAC9C8J,EACCzV,GACCA,EAAQA,EAAM+W,2BAA6BtzB,UAGlCuzB,IAAiCrL,QAC5C8J,EACCzV,IAA0B,OAAC,OAACA,EAA+B,QAAvB9D,KAAMwZ,yBAAiB37B,iBAAEk9B,eAAiB,OAGpEC,GAAgCvL,QAC3C8J,EACCzV,KAA4BA,GAAQA,EAAM+V,iBAAiBhK,SAGjDoL,GAAuBxL,QAClC8J,EACCzV,IAA4BA,GAAQA,EAAMoX,gBAGhCC,IAAyC1L,QACpD8J,EACCzV,KAA4BA,GAAQA,EAAMsX,iCAAmC,gDCxGzE,IAAKC,EAKX,MALD,OAAYA,QAAuB,KACjCA,yBACAA,+BACAA,+BACAA,yBAJUA,EAAZ,IAAYA,GAKX,EALWA,mGCDAC,EAMX,MAND,OAAYA,QAAmB,KAC7BA,oCACAA,qDACAA,qDAEAA,4DALUA,EAAZ,IAAYA,GAMX,GAEM,MAAMC,GAAYnN,QACvBkN,EAAoBC,WACpBhN,WAEWiN,GAAmBpN,QAAakN,EAAoBE,kBACpDC,GAAmBrN,QAAakN,EAAoBG,kBAEpDC,GAAsBtN,QAAakN,EAAoBI,+HCdxDC,EAMX,MAND,OAAYA,QAAiB,KAC3BA,6EACAA,mFACAA,+EACAA,mFACAA,4DALUA,EAAZ,IAAYA,GAMX,GAEM,MAAMC,GAA0BxN,QAAauN,EAAkBC,yBAEzDC,GAA4BzN,QAAauN,EAAkBE,2BAE3DC,GAAiC1N,QAC5CuN,EAAkBG,gCAClBvN,WAGWwN,GAAmC3N,QAC9CuN,EAAkBI,kCAClBxN,WAGWyN,GAAwB5N,QACnCuN,EAAkBK,uBAClBzN,2FCvBK,MAEM0N,GAAsB1M,QAFE,eAIxBpoB,GAA2BsoB,QACtCwM,EACAC,KAEA,CAACpY,EAAoBqY,IACnBrY,GAASA,EAAMsY,mBACXtY,EAAMsY,mBAAmBp/B,OACtB4Y,IAAOymB,OAAOzmB,EAAEumB,aAAeA,KAAiBE,OAAOzmB,EAAEumB,cAE5D,MAIK90B,GAA6BooB,QACxCwM,EACAC,KAEA,CAACpY,EAAoBqY,IACnBrY,GAASA,EAAMwY,qBACXxY,EAAMwY,qBAAqBt/B,OACxB4Y,IAAOymB,OAAOzmB,EAAEumB,aAAeA,KAAiBE,OAAOzmB,EAAEumB,cAE5D,8JCtBF,WAAqBt2B,GACzB,OAAIA,aAAiB02B,KACZ12B,EAAMA,MAGXA,EAAM22B,eAAe,cAAgB32B,EAAM22B,eAAe,gBACrD32B,OADT,CACSA,CCJL,WAA0BA,GAC9B,MAAM42B,GAAUC,EAAW72B,GAE3B,OAAI42B,KAAkB,MAAPA,QAAO,EAAPE,GAASC,YAAaH,GAAQG,aAAa7xB,IACjDA,IAAgB0xB,GAAQG,WAG1B7gC,eAAwBA,CAG3B,WAA+CmrB,GACnD,IAAI2V,GAAc,KAElB,OAAI3V,EAAS0V,YAAclrB,yCACzBmrB,GAAcn1B,QACZE,IAA2Bk1B,EAAqD5V,KAEzEA,EAAS0V,YAAclrB,8CAChCmrB,GAAch1B,KAGTg1B,GAGH,WAA+D3V,GACnE,GAAIA,EAAS0V,YAAclrB,yCACzB,UAAWqrB,MAAavnB,OAAOwnB,KAAKp1B,KAClC,GAAIsf,EAAS+V,aAAar5B,SAASm5B,IACjC,OAAOA,GAKb,OAAO,KC3CF,MAAMG,EAAgB,CAC3BlyB,yBAA0BjP,wBAAiCA,CAC3DkP,gCAAiClP,wBAAiCA,CAClEmP,uBAAwBnP,iBAA0BA,CAClDoP,8BAA+BpP,wBAAiCA,CAChEqP,uBAAwBrP,wBAAiCA,CACzDsP,2BAA4BtP,sBAA+BA,CAC3DuP,0BAA2BvP,4EAAqFA,CAChHwP,4CAA6CxP,wBAAiCA,CAC9EyP,0BAA2BzP,oBAA6BA,CACxD2P,yBAA0B3P,mBAA4BA,CACtD4P,0BAA2B5P,wBAAiCA,CAC5D6P,yBAA0B7P,mBAA4BA,CACtD8P,8BAA+B9P,oBAA6BA,CAC5D+P,qCAAsC/P,iBAAyBA,CAC/DkQ,sCAAuClQ,mFAA+CA,CACtFmQ,oCAAqCnQ,sJAA+CA,CACpFoQ,oCAAqCpQ,sOAA+CA,CACpFqQ,kCAAmCrQ,mFAA+CA,CAClFsQ,sCAAuCtQ,mFAA+CA,CACtFuQ,sCAAuCvQ,mFAA+CA,CACtFwQ,sCAAuCxQ,mFAA+CA,CACtFyQ,8CAA+CzQ,mFAA+CA,CAC9F0Q,qCAAsC1Q,mFAA+CA,CACrF2Q,kBAAmB3Q,eAAwBA,ECtBvC,WAAwB8J,GAC5B,MAAM42B,GAAUC,EAAW72B,GAE3B,OAAI42B,KAAkB,MAAPA,QAAO,EAAPE,GAASC,WACfM,EAAcT,GAAQG,WAGxB7gC,OAAgBA,6HCQlB,IAAMohC,GAAb,MAAM,QAIJ3hC,YACU6rB,GACWlsB,IADXM,aAJVA,aAAkB1B,wBAOhB0B,KAAKksB,QAAU,CACbC,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,SAASC,QAAWrsB,QAKxCiiC,aAAave,IACX,OAAOpjB,KAAK4rB,KAAKgB,KACf5sB,KAAKisB,QAAU,WACf7I,GACApjB,KAAKksB,SAIT0V,mBACE,OAAO5hC,KAAK4rB,KAAK7L,IAAkB,GAAG/f,KAAKisB,mBAG7C4V,WAAWze,IACT,OAAOpjB,KAAK4rB,KAAKkW,IAAkB,GAAG9hC,KAAKisB,kBAAmB7I,GAASpjB,KAAKksB,SAG9E0G,iBACE,OAAO5yB,KAAK4rB,KAAK7L,IAAuB,GAAG/f,KAAKisB,2BAGlDkH,cAAc/P,IACZ,OAAOpjB,KAAK4rB,KAAKgB,KAAgC,GAAG5sB,KAAKisB,0BAA2B7I,IAGtF4P,cAAc5P,IACZ,OAAOpjB,KAAK4rB,KAAKkW,IAA+B,GAAG9hC,KAAKisB,0BAA2B7I,IAGrFkQ,cAAc1I,IACZ,OAAO5qB,KAAK4rB,KAAKmW,OAAO,GAAG/hC,KAAKisB,2BAA2BrB,MAG7DoX,yBAAyBC,IACvB,OAAOjiC,KAAK4rB,KAAKkW,IACf,GAAG9hC,KAAKisB,6BACR,GACA,CACEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAE4V,oBAAqBA,GAAoBn+B,gEArDpD49B,GAAW7hC,kBAMZ8C,mCANC++B,EAAWzqB,QAAXyqB,EAAW,qBAFV,SAEDA,GAAb,kBCRO,IAAMQ,GAAb,MAAM,QAGJniC,YAAoB6rB,iBAFpB5rB,aAAkB1B,wBAIlB6jC,uBACE,OAAOniC,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,kCAAkClgB,KAAYzN,gEAP/C4jC,GAAmBriC,wCAAnBqiC,EAAmBjrB,QAAnBirB,EAAmB,qBAFlB,SAEDA,GAAb,wCCQO,IAAME,GAAb,MAAM,QA4IJriC,YACUsiC,GACAC,GACAC,GACA5hC,GACA6hC,GACAC,IALAziC,iBACAA,oBACAA,4BACAA,eACAA,eACAA,cAjJVA,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPC,QAAS,IACP7iC,KAAKsiC,YAAY1P,iBAAiB1xB,MAChC8D,OAAK89B,KACH,MAAM5gB,GAAY4gB,GAAI5gB,UAAUld,IAAKmd,YACnC,MAAMO,GAAmC,QAApBqgB,MAAQrgB,oBAAYtgB,UAAI,GAC7C,sBACE4gC,KAAM7gB,GAAQ8gB,QAAUvuB,aAAsBA,WAC9CyN,QAAS,GAAGA,GAAQK,gBAAgBL,GAAQM,gBAAgBC,MACzDP,MAGP,OAAOygB,KAAqC,CAAE1gB,kBAEhDghB,OAAY94B,KAAU+4B,QAAGP,KAAqCx4B,UAMtEpK,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPC,QAAS,EAAG1gB,cACVniB,KAAKsiC,YAAYnP,cAAchR,IAASjhB,MACtC8D,OAAK89B,IACEA,GAAIzI,eAGAuI,KAAoC,CAAEpf,kBAAmBsf,KAFzDF,KAAiC,CAAEpf,kBAAmBsf,OAKjEI,OAAY94B,KAAU+4B,QAAGP,KAAoCx4B,UAMrEpK,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPQ,OAAI,IAAMpjC,KAAKW,OAAO+D,SAAS,CAACqC,eAAqBA,mBAEzD,CAAEvC,UAAU,IAGdxE,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPrhC,OAAO,EAAG6I,cAAcA,KACxBg5B,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPC,QAAS,EAAG1gB,cACVniB,KAAKsiC,YAAYtP,cAAc7Q,IAASjhB,MACtC8D,OAAK89B,IACEA,GAAIzI,eAGAuI,KAAoC,CAAEpf,kBAAmBsf,KAFzDF,KAAiC,CAAEpf,kBAAmBsf,OAKjEI,OAAY94B,KAAU+4B,QAAGP,KAAoCx4B,UAMrEpK,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPQ,OAAI,IAAMpjC,KAAKW,OAAO+D,SAAS,CAACqC,eAAqBA,mBAEzD,CAAEvC,UAAU,IAGdxE,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPQ,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPC,QAAS,EAAGjY,SACV5qB,KAAKsiC,YAAYhP,cAAc1I,IAAI1pB,MACjC8D,OAAI,IAAM49B,SACVM,OAAY94B,KAAU+4B,QAAGP,KAAoCx4B,UAMrEpK,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPQ,OAAI,IAAMpjC,KAAKW,OAAO+D,SAAS,CAACqC,eAAqBA,mBAEzD,CAAEvC,UAAU,IAGdxE,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACPC,QAAS,IACP7iC,KAAKuiC,oBAAoBJ,uBAAuBjhC,MAC9C8D,OAAK89B,IAAQF,KAAyC,CAAEtO,cAAewO,GAAIS,WAC3EL,OAAY94B,KAAU+4B,QAAGP,KAAyCx4B,UAM1EpK,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOC,OACP59B,OAAI,KAAM6vB,QAAqB,CAAExM,MAAO,oEAxIjC+Z,GAAcviC,mGAAduiC,EAAcnrB,QAAdmrB,EAAc,YAAdA,GAAb,mDCAO,IAAMoB,GAAb,MAAM,QA+DJzjC,YAAoB6rB,iBA9DpB5rB,aAAkB1B,wBAClB0B,aAAU,CAAE6rB,iBAAiB,GAE7B4X,sBACE,OAAOzjC,KAAK4rB,KAAK7L,IAA4B,GAAG/f,KAAKisB,mCAGvD6E,oBACE1N,IAEA,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,yCACR7I,GACApjB,KAAKksB,SAITwX,aAAa1V,GAAe2V,IAC1B,OAAO3jC,KAAK4rB,KAAKkW,IACf,GAAG9hC,KAAKisB,mCAAmC+B,MAAS2V,KACpD,IAIJC,oBAAoB5V,GAAe2V,IACjC,OAAO3jC,KAAK4rB,KAAKmW,OACf,GAAG/hC,KAAKisB,mCAAmC+B,MAAS2V,MAIxDE,4BACE,OAAO7jC,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,6CACR,GACAjsB,KAAKksB,SAIT4X,0BACE1gB,IAEA,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,6CACR7I,GACApjB,KAAKksB,SAIT6X,4BACEC,GACAC,IAEA,OAAOjkC,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,0CACR,CACE+X,iBACAC,WAEFjkC,KAAKksB,yDA3DEsX,GAAc3jC,wCAAd2jC,EAAcvsB,QAAdusB,EAAc,qBAFb,SAEDA,GAAb,kBCGO,IAAMU,GAAb,MAAM,QAoOJnkC,YACUsiC,GACA8B,GACAC,GACA5B,GACAl6B,IAJAtI,iBACAA,qBACAA,uBACAA,eACAA,sBAxOVA,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPxB,QAAS,EAAGnf,cACV1jB,KAAKmkC,aAAaxX,iBAAiBjJ,IAASxiB,MAC1C8D,OAAK89B,IAAQuB,MAAuC,CAAE3gB,QAASof,OAC/DI,OAAY94B,KAAU+4B,QAAGkB,MAAuC,CAAEj6B,iBAM1EpK,+BAA2B0iC,QACzB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,kCAA8B0iC,QAAa,IACzC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPxB,QAAS,EAAGnf,cACV1jB,KAAKmkC,aAAatX,2BAA2BnJ,IAASxiB,MACpD8D,OAAK89B,IAAQuB,MAAiD,CAAE3gB,QAASof,OACzEI,OAAY94B,KAAU+4B,QAAGkB,MAAiD,CAAEj6B,iBAMpFpK,yCAAqC0iC,QACnC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPC,QAAU,IACRtkC,KAAKokC,eAAeX,sBAAsBviC,MACxC8D,OAAK89B,IACHuB,MAA0C,CACxCE,eAAgBzB,GAAIyB,eAAev/B,IAAKw/B,KAAU,CAChD5Z,GAAI4Z,GAAKxW,MACTyW,SAAUD,GAAKC,SACfC,WAAYF,GAAKE,WACjBC,SAAUH,GAAKxB,KACf4B,WAAYJ,GAAKI,WACjBC,UAAWL,GAAKK,UAChB7B,KAAMwB,GAAKM,UAAYjvB,aAA4BA,WACnD8tB,SAAUa,GAAKb,gBAIrBT,OAAY94B,KAAU+4B,QAAGkB,MAA0Cj6B,UAM3EpK,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAI,IAAMpjC,KAAKwiC,OAAOp4B,MAAM9J,mDAA2CA,CAAEA,OAAgBA,IAE7F,CAAEkE,UAAU,IAGdxE,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPr/B,OAAI,EAAG+/B,kBAAkBV,MAAuC,CAAE3gB,QAASqhB,QAI/E/kC,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPxB,QAAS,EAAGnf,cACV1jB,KAAKokC,eAAetT,oBAAoBpN,IAASxiB,MAC/C8D,OAAK89B,IAAQuB,MAA0C,CAAE3gB,QAASof,OAClEI,OAAY94B,KAAU+4B,QAAGkB,MAA0C,CAAEj6B,iBAM7EpK,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAK3X,YACHzrB,KAAKsI,cAAc8B,MACjB,iCACoB,QAApB46B,MAAS56B,MAAMA,aAAKhI,iBAAEo/B,cAExBxhC,KAAKwiC,OAAOp4B,MACV9J,6GACiB8J,CAEjB9J,OAAgBA,KAIxB,CAAEkE,UAAU,IAGdxE,oBAAgB0iC,QAAa,IAC3B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPxB,QAAS,EAAG7U,SAAO2V,eACjB3jC,KAAKokC,eAAeV,aAAa1V,GAAO2V,IAAUziC,MAChD8D,OAAI,IAAMq/B,UACVnB,OAAW,KAAMC,QAAGkB,cAM5BrkC,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MAAM9J,wCAAiDA,CAAEA,OAAgBA,IAEvF0E,OAAI,IAAMq/B,WAIdrkC,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPxB,QAAS,EAAG7U,SAAO2V,eACjB3jC,KAAKokC,eAAeR,oBAAoB5V,GAAO2V,IAAUziC,MACvD8D,OAAI,IAAMq/B,UACVnB,OAAW,KAAMC,QAAGkB,cAM5BrkC,kCAA8B0iC,QAAa,IACzC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPr/B,OAAI,IAAMq/B,WAIdrkC,kCAA8B0iC,QAAa,IACzC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAI,IAAMpjC,KAAKwiC,OAAOp4B,MAAM9J,iCAA0CA,CAAEA,OAAgBA,IACxF0E,OAAI,IAAMq/B,WAIdrkC,iCAA6B0iC,QAAa,IACxC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPxB,QAAS,IACP7iC,KAAKokC,eAAeP,4BAA4B3iC,MAC9C8D,OAAK89B,IAAQuB,MAAgD,CAAE3gB,QAASof,OACxEI,OAAY94B,KAAU+4B,QAAGkB,MAAgDj6B,UAMjFpK,wCAAoC0iC,QAAa,IAC/C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAI,IAAMpjC,KAAKwiC,OAAOp4B,MAAM9J,qBAA+BA,CAAEA,OAAgBA,KAIjFN,mCAA+B0iC,QAAa,IAC1C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPxB,QAAS,EAAGnf,cACV1jB,KAAKokC,eAAeL,4BAA4BrgB,GAAQsgB,cAAetgB,GAAQugB,QAAQ/iC,MACrF8D,OAAK89B,IAAQuB,MAAkD,CAAE3gB,QAASof,OAC1EI,OAAY94B,KAAU+4B,QAAGkB,MAAkDj6B,UAMnFpK,0CAAsC0iC,QAAa,IACjD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAI,IAAMpjC,KAAKwiC,OAAOp4B,MAAM9J,qBAA+BA,CAAEA,OAAgBA,KAIjFN,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,OACPxB,QAAS,EAAGrW,cACVxsB,KAAKokC,eAAeN,0BAA0B,CAAEoB,iBAAkB1Y,KAAWtrB,MAC3E8D,OAAK89B,IAAQuB,MAAgD,CAAE3gB,QAASof,OACxEI,OAAY94B,KAAU+4B,QAAGkB,MAAgDj6B,UAMjFpK,gCAA4B0iC,QAC1B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0B,QACPjB,OAAI,IAAMpjC,KAAKwiC,OAAOp4B,MAAM9J,qBAA+BA,CAAEA,OAAgBA,IAEjF,CAAEkE,UAAU,oDAjOH0/B,GAAcrkC,uFAAdqkC,EAAcjtB,QAAditB,EAAc,YAAdA,GAAb,mDCVO,IAAMiB,GAAb,MAAM,QAyDJplC,YAAoBsiC,qBAxDpBriC,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOhO,OACP3vB,OAAI,KAAMogC,cAIdplC,kBAAc0iC,QAAa,IACzB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOhO,OACP3vB,OAAI,KAAMkyB,cAIdl3B,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOhO,OACP3vB,OAAI,KAAMqgC,cAIdrlC,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO15B,OACPjE,OAAI,KAAMsgC,cAIdtlC,eAAW0iC,QAAa,IACtB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO15B,OACPjE,OAAI,KAAMqyB,cAIdr3B,mBAAe0iC,QAAa,IAC1B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO15B,OACPjE,OAAI,KAAMugC,cAIdvlC,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO15B,OACPjE,OAAI,KAAM0tB,aAId1yB,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOhO,KAAc1rB,OACrBjE,OAAI,KAAMm0B,8DArDHgM,GAAWtlC,wCAAXslC,EAAWluB,QAAXkuB,EAAW,YAAXA,GAAb,4BCEO,IAAMK,GAAb,MAAM,QAIJzlC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5Bg2B,WAAWhS,IACT,OAAO1jB,KAAK4rB,KAAK7L,IAAmB/f,KAAKisB,QAAU,WAAY,CAC7DE,OAAQ,IAAIC,KAAW,CACrBC,WAAUtS,6BACRoU,WAAYzK,GAAQyK,WAAWrqB,WAC/BsqB,SAAU1K,GAAQ0K,SAAStqB,WAC3B2hC,YAAa/hB,GAAQ+hB,aACjB/hB,GAAQgiB,SAAW,CAAEA,SAAUpV,OAAO5M,GAAQgiB,WAAc,IAAG,CACnE5Z,QAAS9rB,KAAK8rB,cAMtB+J,sBACE,OAAO71B,KAAK4rB,KAAK7L,IAA4B/f,KAAKisB,QAAU,sBAAuB,CACjFE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlCmK,iBAAiBrL,IACf,OAAO5qB,KAAK4rB,KAAK7L,IAAyB,GAAG/f,KAAKisB,mBAAmBrB,KAAM,CACzEuB,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,6DAjCvB0Z,GAAW3lC,kBAIwB8C,mCAJnC6iC,EAAWvuB,QAAXuuB,EAAW,qBAFV,SAEDA,GAAb,GCJaG,GAAb,MAAM,QAoFJ5lC,YACUsiC,GACAuD,GACApD,IAFAxiC,iBACAA,oBACAA,eAtFVA,kBAAc0iC,QAAa,IACzB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkD,QACPC,QAAYpiB,IACV1jB,KAAK4lC,YAAYlQ,WAAWhS,IAASxiB,MACnC8D,OAAK89B,IACH+C,MAA8B,CAC5B/oB,MAAOgmB,GAAIiD,MACX3X,SAAU1K,GAAQ0K,SAClB4X,YAAatiB,GAAQsiB,gBAGzB9C,OAAY94B,KAAU+4B,QAAG0C,MAA8B,CAAEz7B,iBAMjEpK,yBAAqB0iC,QACnB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkD,QACPzC,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,uBAAgCA,CAAEA,qBAA8BA,KAGxF,CAAEkE,UAAU,IAGdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkD,QACPhD,QAAS,IACP7iC,KAAK4lC,YAAY/P,sBAAsB30B,MACrC8D,OACE,EAAGihC,qBAAqBJ,MAAuC,CAAEI,qBACjE/C,OAAY94B,KAAU+4B,QAAG0C,MAAuC,CAAEz7B,kBAO5EpK,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkD,QACPzC,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,iCAA0CA,CAC1CA,8BAAuCA,KAI/C,CAAEkE,UAAU,IAGdxE,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkD,QACPhD,QAAS,EAAGlhC,UACV3B,KAAK4lC,YAAY3P,iBAAiBt0B,IAAKT,MACrC8D,OAAKw/B,IAASqB,MAAoC,CAAErB,YACpDtB,OAAW,KAAMC,QAAG0C,cAM5B7lC,+BAA2B0iC,QACzB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkD,QACPzC,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,8BAAuCA,CACvCA,6BAAsCA,KAI9C,CAAEkE,UAAU,oDAjFHmhC,GAAW9lC,+DAAX8lC,EAAW1uB,QAAX0uB,EAAW,YAAXA,GAAb,mDCNO,MAAMO,GAAmBxN,IAC9B,IAAIyN,SAASzN,GAAI,CACf,MAAM0N,GAAI,GAEVrsB,cAAOwnB,KAAK7I,GAAGrc,QAASgqB,KACtBD,GAAEE,GAAQD,KAAMH,GAAgBxN,EAAE2N,OAG7BD,UACEG,QAAQ7N,GACVA,EAAE1zB,IAAK8sB,IAAMoU,GAAgBpU,KAG/B4G,GAGH4N,GAAWE,GACfA,EACG5kC,QAAQ,sBAAuB,SAAU6kC,GAAMlqB,IAC9C,OAAiB,IAAVA,GAAckqB,GAAKtb,cAAgBsb,GAAKC,gBAEhD9kC,QAAQ,OAAQ,ICTd,IAAM+kC,GAAb,MAAM,QAIJ5mC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAKksB,QAAU,CACbL,iBAAiB,EACjBM,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,SAASC,QAAWrsB,QAKxC62B,YACE,OAAOv2B,KAAK4rB,KAAK7L,IAAkB,GAAG/f,KAAKisB,kBAAmBjsB,KAAKksB,SAGrE2K,gBAAgB8B,GAAqB7wB,IACnC,OAAO9H,KAAK4rB,KAAKkW,IACf,GAAG9hC,KAAKisB,kBACR,CAAE0M,eAAa7wB,aACf9H,KAAKksB,SAITgL,aACE,OAAOl3B,KAAK4rB,KAAKgB,KAAK,GAAG5sB,KAAKisB,wBAAyB,GAAIjsB,KAAKksB,SAGlEmL,UACE,OAAOr3B,KAAK4rB,KAAKgB,KAAK,GAAG5sB,KAAKisB,kBAAmB,GAAIjsB,KAAKksB,SAG5D7Q,UAAU2B,GAAalV,IACrB,OAAO9H,KAAK4rB,KACTgB,KAAgB,GAAG5sB,KAAKisB,sBAAuB,CAAEjP,OAAKlV,aAAY9H,KAAKksB,SACvEhrB,MAAK8D,OAAK89B,IAAQoD,GAAgBpD,MAGvC8D,gBAAgBjO,IACd,OAAO34B,KAAK4rB,KAAKmW,OAAqB,GAAG/hC,KAAKisB,mBAAmB0M,KAAe34B,KAAKksB,SAGvF4L,6BAA6B+O,IAC3B,OAAO7mC,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,6CACR,CACEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAE,SAAUwa,GAAM/a,SAASC,QAAW/rB,KAAKN,eAM/Dw4B,iBACE,OAAOl4B,KAAK4rB,KAAKkW,IAAkB,GAAG9hC,KAAKisB,8BAA+B,GAAIjsB,KAAKksB,yDAvD1Eya,GAAW9mC,kBAIwB8C,mCAJnCgkC,EAAW1vB,QAAX0vB,EAAW,qBAFV,SAEDA,GAAb,uCCKO,IAAMG,GAAb,MAAM,QA0LJ/mC,YACUkE,GACAo+B,GACA0E,GACAvE,GACAwE,GACAC,GACAC,IANAlnC,eACAA,iBACAA,oBACAA,eACAA,mBACAA,uBACAA,4BAhMVA,iBAAa0iC,QAAa,IACxB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPtE,QAAS,EAAGnf,cACV1jB,KAAK+mC,YAAY1rB,UAAUqI,GAAQ1G,IAAK0G,GAAQ5b,UAAU5G,MACxDkiC,OAAK1nB,IAAS1b,KAAKonC,mBAAmB1rB,GAAK2rB,0BAC3CriC,OAAI,IAAMmiC,MAA6B,CAAEzjB,eACzCwf,OAAY94B,KAAU+4B,QAAGgE,MAA6B,CAAE/8B,iBAMhEpK,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACP/D,OAAI,EAAG1f,eACL1jB,KAAKgnC,WAAW3rB,UAAUqI,IAC1B1jB,KAAKinC,eAAe1uB,MCtCX,mBDsCiB+uB,IAE5BtiC,OAAI,IAAMmiC,WAIdnnC,wBAAoB0iC,QAClB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACP/D,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,iBAAa0iC,QAAa,IACxB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPrB,QAAW,IACT9lC,KAAK+mC,YAAYxQ,YAAYr1B,MAC3BkiC,OAAK1nB,IAAS1b,KAAKonC,mBAAmB1rB,GAAK2rB,0BAC3CriC,OAAK0W,IAASyrB,MAA6B,CAAEzrB,YAC7CwnB,OAAY94B,KAAU+4B,QAAGgE,MAA6B,CAAE/8B,iBAMhEpK,uBAAmB0iC,QAAa,IAC9B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACP7C,QAAU,EAAG3L,eAAa7wB,eACxB9H,KAAK+mC,YAAYlQ,gBAAgB8B,GAAa7wB,IAAU5G,MACtDkiC,OAAK1nB,IAAS1b,KAAKonC,mBAAmB1rB,GAAK2rB,0BAC3CriC,OAAK0W,IAASyrB,MAAsC,CAAEzrB,YACtDwnB,OAAY94B,KAAU+4B,QAAGgE,MAAsC,CAAE/8B,iBAMzEpK,kBAAc0iC,QAAa,IACzB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPtE,QAAS,IACP7iC,KAAK+mC,YAAY7P,aAAah2B,MAC5B8D,OAAI,IAAMmiC,UACVjE,OAAY94B,KAAU+4B,QAAGgE,MAA8B,CAAE/8B,iBAMjEpK,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPniC,OAAI,IAAMmiC,WAIdnnC,eAAW0iC,QAAa,IACtB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPrB,QAAW,IACT9lC,KAAK+mC,YAAY1P,UAAUn2B,MACzB8D,OAAI,IAAMmiC,UACVjE,OAAY94B,KAAU+4B,QAAGgE,MAA2B,CAAE/8B,iBAM9DpK,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPniC,OAAI,IAAMmiC,WAIdnnC,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPniC,OAAI,IAAMmiC,WAIdnnC,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPI,QAAiB,EAAG5O,kBAAkB34B,KAAKiE,OAAOE,QAAOq0B,SAAoBG,OAC7EyK,OAAI,EAAC,CAAGv7B,MAAe7H,KAAKgnC,WAAWzrB,eAAe1T,MACtDg7B,QAAS,GAAIlK,mBACX34B,KAAK+mC,YAAYH,gBAAgBjO,IAAaz3B,MAC5CkiC,OAAK1nB,IAAS1b,KAAKonC,mBAAmB1rB,GAAK2rB,0BAC3CriC,OAAK0W,IAASyrB,KAAkC,CAAEzrB,YAClDwnB,OAAY94B,KAAU+4B,QAAGgE,MAAkC,CAAE/8B,iBAMrEpK,6BAAyB0iC,QACvB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACP/D,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,oCAAgC0iC,QAAa,IAC3C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPtE,QAAS,EAAGgE,WACV7mC,KAAK+mC,YAAYjP,6BAA6B+O,IAAM3lC,MAClD8D,OAAK89B,IACHqE,MAAgD,CAC9CK,gBAAiB1E,GAAI0E,oBAGzBtE,OAAY94B,KAAU+4B,QAAGgE,MAAgD/8B,UAMjFpK,0CAAsC0iC,QACpC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACP/D,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACP7C,QAAU,IACRtkC,KAAK+mC,YAAY7O,iBAAiBh3B,MAChCkiC,OAAK1nB,IAAS1b,KAAKonC,mBAAmB1rB,GAAK2rB,0BAC3CriC,OAAK0W,IAASyrB,MAAkC,CAAEzrB,YAClDwnB,OAAY94B,KAAU+4B,QAAGgE,MAAkC,CAAE/8B,iBAMrEpK,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwE,QACPniC,OAAI,KAAM6vB,QAAqB,CAAExM,MAAO,iBAIpC+e,mBAAmBK,IACrBA,IACFznC,KAAKknC,oBAAoB7oB,QAAQnJ,mBAA+B,wDAtLzD4xB,GAAWjnC,gHAAXinC,EAAW7vB,QAAX6vB,EAAW,YAAXA,GAAb,6BEXO,IAAMY,GAAb,MAAM,QAIJ3nC,YAAoB6rB,iBAHpB5rB,aAAkB1B,wBAClB0B,aAAU,CAAE6rB,iBAAiB,GAI7BrI,kBACEJ,IAEA,OAAOpjB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,mCACR7I,GACApjB,KAAKksB,SAITyb,WAAW3vB,IACT,OAAOhY,KAAK4rB,KAAK7L,IAAS,GAAG/f,KAAKisB,wBAAyB,CACzDE,OAAQ,IAAIC,KAAW,CAAEC,WAAY,CAAErU,8DAlBhC0vB,GAAe7nC,wCAAf6nC,EAAezwB,QAAfywB,EAAe,qBAFd,SAEDA,GAAb,GCcaE,GAAb,MAAM,QAuGJ7nC,YACUsiC,GACAp+B,GACA+iC,GACAxE,GACAqF,IAJA7nC,iBACAA,eACAA,mBACAA,eACAA,wBA3GVA,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOmF,QACPjF,QAAU1gB,IACRniB,KAAK6nC,gBACFrkB,kBAAkB,CACjBukB,wBAAyB5lB,GAAQ4lB,wBACjCphB,gBAAe5M,eACb7B,UAAWiK,GAAQiE,aAAaO,gBAAgBzO,UAChDC,SAAUgK,GAAQiE,aAAaO,gBAAgBxO,SAC/CC,YAAa+J,GAAQiE,aAAaO,gBAAgBvO,aAC/C+J,GAAQiE,aAAaO,gBAAgBxE,SAE1C4E,gBAAiB5E,GAAQiE,aAAaW,kBAEvC7lB,MACC8D,OAAK89B,IACEA,GAAIzI,eAGFyN,MAA0C,CAC/C1hB,aAAcjE,GAAQiE,eAHf0hB,MAA0C,CAAEtkB,kBAAmBsf,OAM1EI,OAAY94B,KAAU+4B,QAAG2E,MAA0C19B,UAM7EpK,iCAA6B0iC,QAAa,IACxC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOmF,QACPP,QAAiB,IAAM,CACrBvnC,KAAKiE,OAAOE,OAAOiD,OACnBpH,KAAKiE,OAAOE,OAAOoB,OACnBvF,KAAKiE,OAAOE,OAAO85B,UAErBmF,OAAI,EAAC,CAAG1nB,MAAU1b,KAAKgnC,WAAW/qB,gBAAgBP,MAClD1W,OAAI,EAAC,EAAK+4B,GAAmBG,OAER,MAAjB8J,QAAiB,EAAjBA,GAAmBC,cAAgC,MAAlB/J,QAAkB,EAAlB8G,GAAoBiD,YACrDlK,IACAG,IAEO1B,WACEuB,IACFjC,SAAmC,CACxC5xB,WAAY6zB,GAAkB7zB,WAC9Bg+B,eAAe,KAGVtK,SAAkB,CAAE6B,gBAAgB,OAMnDz/B,iCAA6B0iC,QAC3B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOmF,QACP1E,OAAI,EAAGh5B,aACDA,GAAM+2B,YAAclrB,+BACtBjW,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAIhE,CAAE5F,UAAU,IAGdxE,iCAA6B0iC,QAAa,IACxC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOmF,QACPvmC,OACE,EAAGiiB,mCACD,QAAqD,QAApDwhB,GAAiB,MAAjBgD,QAAiB,EAAjBA,GAAmB3jB,yCAAiCjiB,iBAAEuiB,oBACW,KAAd,QAApDwjB,GAAiB,MAAjBH,QAAiB,EAAjBA,GAAmB3jB,yCAAiCZ,iBAAE2kB,QAAY,IAEtEpjC,OAAI,IAAM8iC,WAId9nC,kBAAc0iC,QAAa,IACzB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOmF,QACPxD,QAAU,EAAGtsB,YACXhY,KAAK6nC,gBAAgBF,WAAW3vB,IAAO9W,MACrC8D,OAAI,IAAM8iC,UACV5E,OAAY94B,KAAU+4B,QAAG2E,MAAwC19B,UAMzEpK,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOmF,QACP9iC,OAAI,KAAM6vB,QAAqB,CAAExM,MAAO,qEAnGjCuf,GAAe/nC,wFAAf+nC,EAAe3wB,QAAf2wB,EAAe,YAAfA,GAAb,6BCRO,IAAMS,GAAb,MAAM,QAIJtoC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5B87B,iCAAiC8M,IAC/B,IAAInc,GAASnsB,KAAKuoC,UAAU,eAAeD,OAC3C,OAAOtoC,KAAK4rB,KACT7L,IAAiC/f,KAAKisB,QAAU,kCAAmCE,IACnFjrB,MAAK8D,OAAK89B,IAAQoD,GAAgBpD,GAAInmB,SAG3C8e,sCACE+M,GACAC,IAEA,OAAOzoC,KAAK4rB,KACT7L,IAAiC/f,KAAKisB,QAAU,0BAA2B,CAC1EE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,QAAS0c,gBAAcC,aAGtDvnC,MACC8D,OAAK89B,IAAQoD,GAAgBpD,GAAInmB,SACjC3X,OAAK0jC,IACHA,GAAoB1jC,IAAK2jC,IAAuB5uB,+BAC3C4uB,IAAkB,CACrBjI,YAAaiI,GAAmBjI,YAAY34B,OAC1C,CAAC6gC,GAAathC,KAAMshC,GAAclyB,KAAYpP,IAC9C,QAOJihC,UAAUM,GAAkB,QAClC,MAAO,CACL1c,OAAQ,CAEN2c,WAAY9oC,KAAK8rB,QACjBid,QAAS,gFACTC,QACE,qIAEFC,SAAU,kBACVJ,6DAjDKR,GAAyBxoC,kBAIU8C,mCAJnC0lC,EAAyBpxB,QAAzBoxB,EAAyB,qBAFxB,SAEDA,GAAb,GCPaa,GAAb,MAAM,QA+BJnpC,YACUsiC,GACA8G,IADAnpC,iBACAA,kCAhCVA,wCAAoC0iC,QAAa,IAC/C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOyG,QACPvG,QAAS,EAAGyF,cACVtoC,KAAKmpC,0BAA0B3N,iCAAiC8M,IAASpnC,MACvE8D,OAAKqkC,IAAYD,MAAyD,CAAEC,eAC5EnG,OAAY94B,KACV+4B,QAAGiG,MAAuD,CAAEh/B,iBAOtEpK,6CAAyC0iC,QAAa,IACpD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOyG,QACPvG,QAAS,EAAG2F,gBAAcc,aACxBtpC,KAAKmpC,0BACF1N,sCAAsC+M,GAAcc,IACpDpoC,MACC8D,OAAKqkC,IAAYD,MAAyD,CAAEC,eAC5EnG,OAAY94B,KACV+4B,QAAGiG,MAAuD,CAAEh/B,iEAxB7D8+B,GAAyBrpC,kDAAzBqpC,EAAyBjyB,QAAzBiyB,EAAyB,YAAzBA,GAAb,yGCeO,IAAMK,GAAb,MAAM,QAKJxpC,YAC6BL,GACnBksB,GACAvjB,IAFmBrI,iBACnBA,aACAA,uBAPVA,aAAkB1B,wBAClB0B,mBAAwB1B,0BAQtB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5B8pC,4BACEt/B,GACAg+B,IAEA,OAAOloC,KAAK4rB,KAAK7L,IAAwB,GAAG/f,KAAKisB,wBAAyB,CACxEE,OAAQ,IAAIC,KAAW,CACrBsC,QAAS,IAAIC,KACbtC,WAAUtS,eACR7P,cACA4hB,QAAS9rB,KAAK8rB,SACVoc,GAAgB,CAAE3Z,QAASjwB,aAAwB,QAM/DmrC,2BACEC,GACAxB,IAEA,OAAOloC,KAAK4rB,KAAK7L,IAA2B,GAAG/f,KAAK2pC,wCAAyC,CAC3Fxd,OAAQ,IAAIC,KAAW,CACrBsC,QAAS,IAAIC,KACbtC,WAAUtS,eACR2vB,aACA5d,QAAS9rB,KAAK8rB,SACVoc,GAAgB,CAAE3Z,QAASjwB,aAAwB,QAM/DsrC,oBACE3H,GACA4H,IAAqC,GAErC,OAAO7pC,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,yBAAyBgW,KACjC,CACE9V,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACVP,QAAS9rB,KAAK8rB,QACdyC,QAASjwB,YACTurC,kCAOV3b,eAAe9K,cACb,OAAOpjB,KAAK4rB,KAAK7L,IAA8B,GAAG/f,KAAK2pC,mCAAoC,CACzFxd,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACV1J,KAAMS,GAAQT,KACdzK,UAAWkL,GAAQlL,UACnBC,SAAUiL,GAAQjL,SAClBkW,UAAWjL,GAAQiL,UACnBC,kBAAmBlL,GAAQkL,kBAC3BH,YAA8B,QAAlB2b,MAAQ3b,kBAAU/rB,iBAAE0B,aAAc,IAC9CsqB,UAA0B,QAAhB2b,MAAQ3b,gBAAQ3K,iBAAE3f,aAAcuI,gBAC1CkiB,QAASjwB,YACTkwB,cAAepY,aAMvB0mB,iBAAiB1Z,cACf,OAAOpjB,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAK2pC,sCAAsCvmB,GAAQ2L,UACtD,CACE5C,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACV2C,sBAAuB5L,GAAQ4mB,YAC/B7b,YAA8B,QAAlB2b,MAAQ3b,kBAAU/rB,iBAAE0B,aAAc,IAC9CsqB,UAA0B,QAAhB2b,MAAQ3b,gBAAQ3K,iBAAE3f,aAAcuI,gBAC1CkiB,QAASjwB,YACTkwB,cAAepY,aAOzBgnB,uBAAuB6E,IACrB,OAAOjiC,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,yBAAyBgW,4DApG1BsH,GAAiB1pC,MAMlB8C,OAAS9C,oDANR0pC,EAAiBtyB,QAAjBsyB,EAAiB,qBAFhB,SAEDA,GAAb,kBCIO,IAAMU,GAAb,MAAM,QAiWJlqC,YACUsiC,GACA6E,GACAgD,GACA1H,GACAv+B,GACAoE,GACA1H,GACAU,IAPArB,iBACAA,4BACAA,0BACAA,eACAA,eACAA,uBACAA,eACAA,iBAxWVA,0CAAsC0iC,QAAa,IACjD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACPtH,QAAS,EAAG34B,WAAYkgC,GAAelC,qBACrC,MAAMh+B,GACJkgC,IACCpqC,KAAKknC,oBAAoBjpB,QAAQ/I,2BACpC,OAAIhL,GACKlK,KAAKkqC,kBAAkBV,4BAA4Bt/B,GAAYg+B,IAAehnC,MACnF8D,OAAK4E,IACHugC,MAAgD,CAC9CvgC,cACAygC,eAAgBrqC,KAAKqI,eAAeO,SAASC,GAAGwhC,mBAGpDnH,OAAW,EAAG94B,aACZ+4B,QACEgH,MAAgD,CAC9C//B,SACAkgC,mBAAoBpgC,SAMrBi5B,QAAGgH,OAAyC,QAM3DnqC,yCAAqC0iC,QAAa,IAChD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACPtH,QAAS,EAAG6G,UAAWa,GAAcrC,oBAC/BqC,GACKvqC,KAAKkqC,kBACTT,2BAA2Bc,GAAcrC,IACzChnC,MACC8D,OAAK4E,IACHugC,MAAgD,CAC9CvgC,WAAY5J,KAAKwqC,uBAAuB5gC,IACxCygC,eAAgBrqC,KAAKqI,eAAeO,SAASC,GAAGwhC,mBAGpDnH,OAAW,EAAG94B,aACZ+4B,QACEgH,MAAgD,CAC9C//B,SACAkgC,mBAAoBC,SAMvBpH,QAAGgH,OAAyC,OAM3DnqC,qCAAiC0iC,QAC/B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP/G,OAAI,EAAGx5B,cAAYygC,sBACjBrqC,KAAKknC,oBAAoB7oB,QACvBnJ,0BACAtL,GAAWM,YAGTmgC,IACFrqC,KAAKiE,OAAOO,SAAS2lC,YAI7B,CAAE3lC,UAAU,IAGdxE,qCAAiC0iC,QAAa,IAC5C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP5C,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAO+C,SAC1ClC,OAAI,EAAE0e,GAASuR,OACb,MAAMwV,GAA6BzqC,KAAKknC,oBAAoBjpB,QAC1D/I,2BAEF,OAGS,IAFPu1B,GAA2BC,cAAchnB,GAAQ4mB,wBAAoBngC,EAAW,CAC9EwgC,YAAa,YAEd1V,GAOIkV,QALEA,MAAqD,CAC1DjgC,WAAYugC,GACZvC,eAAe,GAGZiC,KAKbnqC,8BAA0B0iC,QACxB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP/G,OAAI,KACFwH,WAAW,KACT,MAAMC,GAAY,IAAIC,gBAAgBptC,OAAO2D,SAAS0C,QACtD8mC,GAAU9I,OAAO/3B,UACjBhK,KAAKqB,SAAS0pC,aAAa/qC,KAAKW,OAAOgB,IAAIE,MAAM,KAAK,GAAIgpC,GAAU/mC,aAnHzC,KAqH7B9D,KAAKknC,oBAAoB5oB,WAAWpJ,8BAG1C,CAAE1Q,UAAU,IAGdxE,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP5C,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAO6mC,SAC1CnI,QAAS,EAAC,CAAGhrB,MACX7X,KAAKkqC,kBAAkBN,oBAAoB/xB,GAAKozB,2BAA2B,GAAO/pC,MAChF8D,OAAK89B,IAAQqH,MAAiD,CAAEvgC,WAAYk5B,OAC5EI,OAAW,KAAMC,QAAGgH,cAM5BnqC,sCAAkC0iC,QAChC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP/G,OAAI,KACG1lC,OAAO2D,SAASoC,KAAK0E,SAAS,IAAIpH,kBACrCf,KAAKwiC,OAAOp4B,MACV9J,6BAAsCA,CACtCA,qBAA8BA,KAKxC,CAAEkE,UAAU,IAGdxE,yCAAqC0iC,QAAa,IAChD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP5C,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAO85B,SAC1C4E,QAAS,EAAC,CAAG3E,MACXl+B,KAAKkqC,kBACFV,4BAA4BtL,GAAmBh0B,YAAY,GAC3DhJ,MACC8D,OAAK89B,IACHqH,MAA2D,CACzDvgC,WAAYk5B,OAGhBI,OAAW,KAAMC,QAAGgH,cAS9BnqC,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP5C,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOg6B,SAC1C0E,QACGzgC,YAICg8B,IAAgBh8B,GAFduhB,eAAWwK,eAAUxK,GAAKunB,IAAI,YAArB,gBAIX,YAAKhB,kBACFhc,eAAcnU,+BACVmxB,IACgB,IAAf/c,GACA,CAAEA,eACF,CACEA,WACEgd,KAAKC,KAAKhN,GAAiBC,QAAQl5B,OAASkH,MAAgC,KAGrFnL,MACC8D,OAAK89B,IACHqH,MAAwCnqC,KAAKqrC,2BAA2BvI,OAE1EI,OAAW,KAAMC,QAAGgH,eAMhCnqC,6BAAyB0iC,QAAa,IACpC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACPnlC,OAAI,EAAG4E,kBAAiBgzB,SAAsB,CAAE0O,SAAS,EAAOxuB,MAAO,CAAClT,SAI5E5J,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP5C,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOg6B,SAC1C2H,QACG1jC,gBAEGuhB,eAAWwK,eAAUxK,GAAKunB,IAAI,YAArB,gBAGX,YAAKhB,kBACFpN,iBAAgB/iB,+BACZmxB,IAAI,CACP/c,iBAEDjtB,MACC8D,OAAK89B,IACHqH,MAA0CnqC,KAAKqrC,2BAA2BvI,OAE5EI,OAAW,EAAG94B,aAAY+4B,QAAGgH,MAA0C,CAAE//B,kBAMrFpK,+BAA2B0iC,QACzB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,MAAyCA,QAChD/G,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MACV9J,oCAA6CA,CAC7CA,mBAA4BA,IAIpC,CAAEkE,UAAU,IAGdxE,8BAA0B0iC,QAAa,IACrC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP5C,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOoB,SAC1Cs9B,QAAS,EAAC,CAAG9E,MACX/9B,KAAKkqC,kBAAkB9M,uBAAuBW,GAAkBkK,WAAW/mC,MACzE8D,OAAI,EAAGC,eACL,MAAMsmC,GACJtmC,GAAQwzB,KACL+F,YACC,UAAMgN,QAAQ1nC,cAC6C,QAA3D2nC,QAAKvE,oBAAoBjpB,QAAQjU,qBAA0B5H,iBAAE0B,eAC5D,KAEP,OAAOqmC,MAAgD,CAAEllC,WAASsmC,sBAEpErI,OAAW,KAAMC,QAAGgH,cAM5BnqC,qCAAiC0iC,QAAa,IAC5C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP5oC,OAAQi9B,IAAkC,OAAxBA,GAAM+M,gBACxBvmC,OAAI,IAAMmlC,WAIdnqC,qCAAiC0iC,QAC/B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP/G,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MACV9J,oCAA6CA,CAC7CA,oBAA6BA,IAIrC,CAAEkE,UAAU,IAGdxE,mBAAe0iC,QACb,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP5oC,OAAO,EAAGi9B,cAAcA,KACxB4E,OAAI,EAAG5E,aACLx+B,KAAKknC,oBAAoB7oB,QAAQrU,aAA2Bw0B,GAAMgN,QAAQ1nC,eAGhF,CAAEU,UAAU,IAGdxE,kBAAc0iC,QACZ,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwH,QACP/G,OAAI,IAAMpjC,KAAKknC,oBAAoB5oB,WAAWtU,gBAElD,CAAExF,UAAU,IAGN6mC,2BAA2BvI,IAIjC,MAAO,CACLwI,QAASxI,GAAIwI,QACbjN,QAASyE,GAAIhmB,MAAM9X,IAAKw/B,KAAU,CAChC5Z,GAAI4Z,GAAK5Z,GACTqd,UAAWzD,GAAKyD,UAChByD,YAAalH,GAAKkH,YAClBC,SAAUnH,GAAKmH,SACfhpB,KAAM6hB,GAAK7hB,KACX0F,MAAOmc,GAAKnc,MACZrQ,MAAOwsB,GAAKxsB,MACZI,YAAaosB,GAAKpsB,YAClBlO,WAAYs6B,GAAKt6B,WACjB0hC,aAAcpH,GAAKoH,aACnBC,MAAO,KACPvM,eAAgBkF,GAAKlF,mBAKnBkL,uBAAuB1H,IAC7B,MAAO,CACLlY,GAAIkY,GAAIlY,GACRqd,UAAWnF,GAAImF,UACfyD,YAAa5I,GAAI4I,YACjBC,SAAU7I,GAAI6I,SACdhpB,KAAMmgB,GAAIngB,KACV0F,MAAOya,GAAIza,MACXrQ,MAAO8qB,GAAI9qB,MACXI,YAAa0qB,GAAI1qB,YACjBlO,WAAY44B,GAAI54B,WAChB0hC,aAAc9I,GAAI8I,aAClBC,MAAO,KACPvM,eAAgBwD,GAAIxD,gEA7Vb2K,GAAiBpqC,8HAAjBoqC,EAAiBhzB,QAAjBgzB,EAAiB,YAAjBA,GAAb,kBChBO,IAAM6B,GAAb,MAAM,QAGJ/rC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAFjEA,aAAkB1B,wBAIlBwhC,UAAU7Y,IACR,OAAOjnB,KAAK4rB,KAAKgB,KAAwB,GAAG5sB,KAAKisB,uBAAwBhF,GAAkB,CACzFkF,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,SAASC,QAAW/rB,KAAKN,+DARlCosC,GAAgBjsC,kBAGmB8C,mCAHnCmpC,EAAgB70B,QAAhB60B,EAAgB,qBAFf,SAEDA,GAAb,GCFaC,GAAb,MAAM,QA2BJhsC,YACUisC,GACA3J,GACAG,IAFAxiC,yBACAA,iBACAA,eA7BVA,iBAAa0iC,QAAa,IACxB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsJ,QACPpJ,QAAS,EAAG5b,uBACVjnB,KAAKgsC,iBAAiBlM,UAAU7Y,IAAkB/lB,MAChD8D,OAAKknC,IACCA,GAAkBC,aACbF,QAEFA,UAET/I,OAAW,KAAMC,QAAG8I,cAM5BjsC,wBAAoB0iC,QAClB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsJ,QACP7I,OAAI,IAAMpjC,KAAKwiC,OAAOp4B,MAAM9J,sBAA+BA,CAAEA,kBAA2BA,IAE5F,CAAEkE,UAAU,oDAxBHunC,GAAgBlsC,+DAAhBksC,EAAgB90B,QAAhB80B,EAAgB,YAAhBA,GAAb,kBCKO,IAAMK,GAAb,MAAM,QAIJrsC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5B2sC,oBACE,IAAIlgB,GAASnsB,KAAKssC,eAAe,KACjC,OAAOtsC,KAAK4rB,KACT7L,IAAyB/f,KAAKisB,QAAU,0BAA2BE,IACnEjrB,MAAK8D,OAAK89B,IAAQoD,GAAgBpD,GAAInmB,SAG3C4vB,sBACE,IAAIpgB,GAASnsB,KAAKssC,eAAe,KACjC,OAAOtsC,KAAK4rB,KACT7L,IAAyB/f,KAAKisB,QAAU,0BAA2BE,IACnEjrB,MAAK8D,OAAK89B,IAAQoD,GAAgBpD,GAAInmB,SAInC2vB,eAAeE,IACrB,MAAO,CACLrgB,OAAQ,CAEN2c,WAAY9oC,KAAK8rB,QACjBmd,SAAU,QACVJ,QAAS,iCAAoC2D,GAAW,sDA7BnDJ,GAAiBvsC,kBAIkB8C,mCAJnCypC,EAAiBn1B,QAAjBm1B,EAAiB,qBAFhB,SAEDA,GAAb,GCNaK,GAAb,MAAM,QAyBJ1sC,YAAoBsiC,GAA2BqK,IAA3B1sC,iBAA2BA,2BAxB/CA,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOgK,QACP9J,QAAS,IACP7iC,KAAK0sC,mBAAmBL,oBAAoBnrC,MAC1C8D,OAAK4nC,IAAUD,KAA6C,CAAEC,aAC9D1J,OAAY94B,KAAU+4B,QAAGwJ,MAAoC,CAAEviC,iBAMvEpK,iCAA6B0iC,QAAa,IACxC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOgK,QACP9J,QAAS,IACP7iC,KAAK0sC,mBAAmBH,sBAAsBrrC,MAC5C8D,OAAK4nC,IAAUD,MAA+C,CAAEC,aAChE1J,OAAY94B,KAAU+4B,QAAGwJ,MAAoC,CAAEviC,iEAnB5DqiC,GAAa5sC,kDAAb4sC,EAAax1B,QAAbw1B,EAAa,YAAbA,GAAb,kBCMO,IAAMI,GAAb,MAAM,QAIJ9sC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAFzDA,aAAkB1B,wBAGxB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5BotC,kBAAkBC,GAAe3e,IAC/B,OAAOpuB,KAAK4rB,KACT7L,IACC,GAAG/f,KAAKisB,+BACRjsB,KAAKuoC,UAAUwE,GAAO3e,KAEvBltB,MAAK8D,OAAK89B,IAAQoD,GAAgBpD,GAAInmB,SAGnC4rB,UAAUwE,GAAe3e,IAC/B,MAAO,CACLjC,OAAQ,CAEN2c,WAAY9oC,KAAK8rB,QACjBid,QAAS,aACTiE,SAAU,mBACVC,MAAOF,GACPG,KAAM9e,qDAzBDye,GAAehtC,kBAIoB8C,mCAJnCkqC,EAAe51B,QAAf41B,EAAe,qBAFd,SAEDA,GAAb,GCNaM,GAAb,MAAM,QAkBJptC,YAAoBsiC,GAA2B+K,IAA3BptC,iBAA2BA,wBAjB/CA,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO0K,QACPxK,QAAU1W,IACRnsB,KAAKotC,gBAAgBN,kBAAkB3gB,GAAOmhB,UAAWnhB,GAAOiC,UAAUltB,MACxE8D,OAAKuoC,IACHF,MAAyC,CACvCE,aACAnf,SAAUjC,GAAOiC,aAGrB8U,OAAY94B,KAAU+4B,QAAGkK,MAAwC,CAAEjjC,iEAZhE+iC,GAAettC,kDAAfstC,EAAel2B,QAAfk2B,EAAe,YAAfA,GAAb,GCRM,YAAiCK,GACrC,MAAMC,GAAa,IAAIttC,KAAKqtC,GACtBE,GAAevtC,KAAKwtC,IACxBF,GAAWrtC,cACXqtC,GAAWG,WACXH,GAAWI,UACXJ,GAAWK,WACXL,GAAWM,aACXN,GAAWO,cAGb,OADsB,IAAI7tC,KAAKutC,yCCyB1B,IAAMO,GAAb,MAAM,QA6RJluC,YACUsiC,GACA8B,GACA3B,GACAv+B,GACA+iC,GACAC,GACA3+B,GACmB5I,IAPnBM,iBACAA,qBACAA,eACAA,eACAA,mBACAA,uBACAA,sBACmBA,iBApS7BA,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACPrL,QAAS,IACP7iC,KAAKmkC,aAAanY,oBAAoB9qB,MACpC8D,OAAK89B,IACHoL,MAAsC,CACpCxqB,QAASof,GAAIqL,OAAOnpC,IAAKopC,IAAUr0B,+BAC9Bq0B,IAAK,CACRC,YAAaC,GAAuBF,GAAMC,oBAIhDnL,OAAY94B,KAAU+4B,QAAG+K,MAAsC,CAAE9jC,iBAMzEpK,gCAA4B0iC,QAC1B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP9K,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACPrL,QAAS,IACP7iC,KAAKmkC,aAAa7X,sBAAsBprB,MACtC8D,OAAK89B,IACHoL,MAAwC,CACtCxqB,QAASof,GAAIqL,OAAOnpC,IAAKopC,IAAUr0B,+BAC9Bq0B,IAAK,CACRC,YAAaC,GAAuBF,GAAMG,qBAIhDrL,OAAY94B,KAAU+4B,QAAG+K,MAAwC,CAAE9jC,iBAM3EpK,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP9K,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACPrL,QAAS,EAAGrW,cACVxsB,KAAKmkC,aAAa5X,kBAAkBC,IAAStrB,MAC3C8D,OAAK89B,IACHoL,MAAsC,CACpCxqB,QAAO3J,+BACF+oB,IAAG,CACNuL,YAAaC,GAAuBxL,GAAIuL,aACxCG,QAAS1L,GAAI0L,QAAQxpC,IAAKypC,IAAW10B,+BAAM00B,IAAM,CAAEC,YAAaD,GAAOE,kBAI7EzL,OAAY94B,KAAU+4B,QAAG+K,MAAsC,CAAE9jC,iBAMzEpK,gCAA4B0iC,QAC1B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP9K,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACPrL,QAAS,EAAGnW,iBACV1sB,KAAKmkC,aAAa1X,oBAAoBC,IAAYxrB,MAChD8D,OAAK89B,IACHoL,MAAwC,CACtCxqB,QAAO3J,+BACF+oB,IAAG,CACNyL,aAAcD,GAAuBxL,GAAIyL,oBAI/CrL,OAAY94B,KAAU+4B,QAAG+K,MAAwC,CAAE9jC,iBAM3EpK,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP9K,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,mBAAe0iC,QAAa,IAC1B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP3G,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOiD,SAC1Cy7B,QAAS,GAAIzf,YAAW1H,MACtB1b,KAAKmkC,aAAarX,YAAY1J,IAASliB,MACrC8D,OAAK89B,IAAQoL,MAAgC,CAAExqB,QAAS,CAAEhI,QAAM+P,SAAUqX,QAC1EI,OAAY94B,eACV,MAAMwkC,GAAe5uC,KAAK6uC,8BACxBnzB,GACW,QAAXozB,MAAM1kC,aAAKhI,iBAAEwsC,cAETG,GAAe/uC,KAAK6uC,8BACxBnzB,GACW,QAAX+vB,MAAMrhC,aAAKqZ,iBAAEsrB,cAEf,OAAO5L,QAAG+K,MAAgC,CAAE9jC,SAAOwkC,gBAAcG,yBAO3E/uC,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP3G,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAO+1B,SAC1CkJ,OAAI,GAAI1f,YAAW0C,cACjBpmB,KAAKgnC,WAAWprB,SACd8H,GAAQ+H,SAASe,QACjB9I,GAAQhI,KACqB,QAA7BszB,GAAY,MAAZjM,QAAY,EAAZA,GAAchc,uBAAe3kB,iBAAE4V,OAEjChY,KAAKinC,eAAe1uB,Md5Lb,ec4LmB+uB,IAE5BtiC,OAAI,KAAMqyB,cAIdr3B,0BAAsB0iC,QACpB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP9K,OAAI,EAAGh5B,SAAOwkC,gBAAcG,qBACrBH,GAAazpC,SAAW4pC,GAAa5pC,QACxCnF,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAIhE,CAAE5F,UAAU,IAGdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACPrL,QAAS,EAAG1V,kBACVntB,KAAKmkC,aAAapX,oBAAoBI,IAAajsB,MACjD8D,OAAKiqC,IACHf,MAAwC,CACtCe,eAAgB,CACdC,YAAaD,GAAeC,YAC5BC,eAAgBF,GAAeE,eAC/BhiB,YAAa8hB,GAAejL,cAC5BoL,aAAcH,GAAeG,aAC7BC,iBAAkBJ,GAAeI,iBACjCC,gBAAiBL,GAAeK,gBAChCC,WAAYN,GAAeM,WAC3BC,oBAAqBP,GAAeO,yBAI1CtM,OAAYJ,KAAQK,QAAG+K,MAAwCpL,UAMvE9iC,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP9K,OAAKN,KACH,GAAIA,GAAI2M,QAAUC,iBAChB,OAAO1vC,KAAKwiC,OAAOp4B,MACjB9J,+BAAuCA,CACvCA,yEAAqCA,KAK/C,CAAEkE,UAAU,IAGdxE,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACPrL,QAAS,EAAGzf,cACVpjB,KAAKmkC,aAAanX,iBAAiB5J,IAASliB,MAC1C8D,OAAK89B,IAAQoL,MAAqC,CAAExqB,QAASof,OAC7DI,OAAY94B,KAAU+4B,QAAG+K,MAAqC,CAAE9jC,MAAOA,GAAMA,cAMrFpK,+BAA2B0iC,QACzB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP9K,OAAI,EAAGh5B,aACL,IAAIgK,GACFhK,GAAM+2B,YAAclrB,yCAChBgvB,EAAqC76B,IACrCi5B,EAAgBj5B,IAEtBpK,KAAKwiC,OAAOp4B,MAAMgK,GAASkvB,EAAcl5B,QAG/C,CAAE5F,UAAU,IAGdxE,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACPrL,QAAS,EAAGzf,cACVpjB,KAAKmkC,aAAalX,eAAe7J,IAASliB,MACxC8D,OAAI,IAAMkpC,UACVhL,OAAW,EAAG94B,aAAY+4B,QAAG+K,MAAmC,CAAE9jC,iBAM1EpK,6BAAyB0iC,QACvB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACP9K,OAAI,IAAMpjC,KAAKsI,cAAc8B,MAAM,8BAEvC,CAAE5F,UAAU,IAGdxE,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOuL,QACPrL,QAAS,EAAGrV,YAAUhB,cACpBxsB,KAAKmkC,aAAa5W,oBAAoBC,GAAUhB,IAAStrB,MACvD8D,OAAK89B,IACHoL,MAAwC,CACtCxqB,QAAS1jB,KAAK2vC,0DACZ7M,GACA9iC,KAAKuD,cAIX2/B,OAAW,EAAG94B,aAAY+4B,QAAG+K,MAAwC,CAAE9jC,iBAkB7EpK,KAAKuD,UAAW3D,QAAYI,KAAKN,UAG3BmvC,8BACNnzB,GACAk0B,IAEA,OAAoB,MAAhBA,QAAgB,EAAhB9F,GAAkB3kC,QACbyqC,GAAiB5qC,IAAK6qC,KAC3B,MAAMC,GAAWp0B,GAAKhU,WAAW+wB,KAAM+L,IAASA,GAAKxnB,MAAQ6yB,GAAUE,SACvE,sCAAYD,IAAQ,CAAEE,YAAaH,GAAUI,cAG1C,GAGDN,0DACNO,GACA3sC,IAEA,sCACK2sC,IAAgB,CACnBC,eAAgBD,GAAiBC,eAAetJ,KAAK7hC,IAAKgY,IACxDhd,KAAKowC,uBAAuBpzB,GAAKzZ,KAEnC8sC,eAAgBH,GAAiBG,eAC9BrrC,IAAKsrC,IAAOv2B,+BACRu2B,IAAE,CACLzJ,KAAMyJ,GAAGzJ,KAAK7hC,IAAKgY,IAAQhd,KAAKowC,uBAAuBpzB,GAAKzZ,QAE7DgtC,KAAK,CAACjpC,GAAGC,KAAMD,GAAEkpC,aAAejpC,GAAEipC,gBAIjCJ,uBAAuBpzB,GAA0BzZ,IACvD,sCACKyZ,IAAG,CACNyzB,eAAgBltC,KAAawG,OAAYiT,GAAI0zB,iBAAmB1zB,GAAI2zB,mEA5U7D1C,GAAYpuC,4FAqSb8C,mCArSCsrC,EAAYh3B,QAAZg3B,EAAY,YAAZA,GAAb,GCnCO,IAAK2C,GAEX,OAFWA,QAAgB,KAC1BA,oDADUA,IAEX,yBCiBM,IAAMC,GAAb,MAAM,QAIJ9wC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5BoxC,cAAcptB,IACZ,MAAM+kB,GAAOsI,SACb,OAAO/wC,KAAK4rB,KAAK7L,IAAyB/f,KAAKisB,QAAU,cAAe,CACtEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACV8B,WAAYzK,GAAQyK,WAAWrqB,WAC/BsqB,SAAU1K,GAAQ0K,SAAStqB,WAC3B2kC,KAAMA,GAAK3kC,WACXktC,eAAgBttB,GAAQstB,eACxBllB,QAAS9rB,KAAK8rB,aAMtBmlB,oBAAoBj0B,GAAayrB,GAAe,MAC9C,OAAOzoC,KAAK4rB,KAAK7L,IAA+B/f,KAAKisB,QAAU,eAAiBjP,GAAK,CACnFmP,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEoc,QAAM3c,QAAS9rB,KAAK8rB,aAKxColB,sBAAsBl0B,IACpB,OAAOhd,KAAK4rB,KAAK7L,IAAiC,GAAG/f,KAAKisB,8BAA8BjP,KAAO,CAC7FmP,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlCqlB,4BACEn0B,GACAyrB,GAAe,MAEf,OAAOzoC,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,oCACR,CAAEE,OAAQ,IAAIC,KAAW,CAAEC,WAAY,CAAErP,OAAKyrB,QAAM3c,QAAS9rB,KAAK8rB,aAItEslB,qBAAqBC,IACnB,OAAOrxC,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,qBAAqBolB,qBAC7B,CACEllB,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAMpCwlB,+BACEN,GACAvI,GAAe,MAEf,OAAOzoC,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,+CACR,CACEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAE2kB,kBAAgBvI,QAAM3c,QAAS9rB,KAAK8rB,aAM1DylB,oCAAoC9I,IAClC,OAAOzoC,KAAK4rB,KAAK7L,IAAyB,GAAG/f,KAAKisB,iCAAkC,CAClFE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACVoc,QACA3c,QAAS9rB,KAAK8rB,aAMtB0lB,yCAAyC/I,IACvC,OAAOzoC,KAAK4rB,KAAK7L,IAAyB,GAAG/f,KAAKisB,sCAAuC,CACvFE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACVoc,QACA3c,QAAS9rB,KAAK8rB,aAMtB2lB,yCAAyChJ,IACvC,OAAOzoC,KAAK4rB,KAAK7L,IAAyB,GAAG/f,KAAKisB,sCAAuC,CACvFE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACVoc,QACA3c,QAAS9rB,KAAK8rB,aAMtB4lB,kCAAkCjJ,IAChC,OAAOzoC,KAAK4rB,KAAK7L,IACf,GAAG/f,KAAKisB,8CACR,CACEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACVoc,QACA3c,QAAS9rB,KAAK8rB,6DAlHb+kB,GAAchxC,kBAIqB8C,mCAJnCkuC,EAAc55B,QAAd45B,EAAc,qBAFb,SAEDA,GAAb,GCRac,GAAb,MAAM,QAIJ5xC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5BkyC,cACEC,GACA1jB,GACAC,IAEA,OAAOpuB,KAAK4rB,KAAK7L,IAAyB/f,KAAKisB,QAAU,cAAe,CACtEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CACV8B,WAAYA,GAAWrqB,WACvBsqB,SAAUA,GAAStqB,WACnB+tC,YAAaA,GACb/lB,QAAS9rB,KAAK8rB,6DAnBX6lB,GAAc9xC,kBAIqB8C,mCAJnCgvC,EAAc16B,QAAd06B,EAAc,qBAFb,SAEDA,GAAb,GCGaG,GAAb,MAAM,QAIJ/xC,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5BqyC,aAAaruB,IACX,MAAM+kB,GAAOsI,SACb,OAAO/wC,KAAK4rB,KAAK7L,IAAqB/f,KAAKisB,QAAU,aAAc,CACjEE,OAAQ,IAAIC,KAAW,CACrBC,WAAUtS,6BACRoU,WAAYzK,GAAQyK,WAAWrqB,WAC/BsqB,SAAU1K,GAAQ0K,SAAStqB,WAC3B2kC,KAAMA,GAAK3kC,WACX2hC,YAAa/hB,GAAQ+hB,aACjB/hB,GAAQgiB,SAAW,CAAEA,SAAUpV,OAAO5M,GAAQgiB,WAAc,IAAG,CACnE5Z,QAAS9rB,KAAK8rB,cAMtBkmB,wBACE,OAAOhyC,KAAK4rB,KAAK7L,IAA8B/f,KAAKisB,QAAU,wBAAyB,CACrFE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlCmmB,oBAAoBj1B,GAAayrB,GAAe,MAC9C,OAAOzoC,KAAK4rB,KAAK7L,IAAqB,GAAG/f,KAAKisB,oCAAoCjP,KAAO,CACvFmP,OAAQ,IAAIC,KAAW,CAAEC,WAAY,CAAEoc,QAAM3c,QAAS9rB,KAAK8rB,aAI/DomB,2BAA2BC,IACzB,OAAOnyC,KAAK4rB,KAAK7L,IAAqB,GAAG/f,KAAKisB,qBAAqBkmB,aAAoB,CACrFhmB,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlCsmB,mBAAmBzwC,GAAa8mC,GAAe,MAC7C,OAAOzoC,KAAK4rB,KAAK7L,IAA2B,GAAG/f,KAAKisB,qBAAqBtqB,KAAO,CAC9EwqB,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEoc,QAAM3c,QAAS9rB,KAAK8rB,aAKxCumB,WAAWznB,IACT,OAAO5qB,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,qBAAqBrB,UAC7B,GACA,CACEuB,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAMpCwmB,cAAc1nB,IACZ,OAAO5qB,KAAK4rB,KAAKmW,OAAgB,GAAG/hC,KAAKisB,qBAAqBrB,UAAW,CACvEuB,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlCymB,mBACE,OAAOvyC,KAAK4rB,KAAK7L,IAAqB,GAAG/f,KAAKisB,0BAA2B,CACvEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,6DA7EvBgmB,GAAajyC,kBAIsB8C,mCAJnCmvC,EAAa76B,QAAb66B,EAAa,qBAFZ,SAEDA,GAAb,GCLaU,GAAb,MAAM,QASJzyC,YAAoB6rB,iBARX5rB,iBAAsB,oCAE/ByyC,oBAAoB7nB,IAClB,OAAO5qB,KAAK4rB,KACT7L,IAAc,GAAG/f,KAAK0yC,qCAAqC9nB,MAC3D1pB,MAAK8D,OAAKymB,IAAaA,GAASknB,iFAN1BH,GAAY3yC,wCAAZ2yC,EAAYv7B,QAAZu7B,EAAY,qBAFX,SAEDA,GAAb,GCWaI,GAAb,MAAM,QAgZJ7yC,YACUsiC,GACAwQ,GACAC,GACAC,GACAvQ,GACAwE,GACArmC,GACAqyC,GACA/uC,IARAjE,iBACAA,uBACAA,uBACAA,sBACAA,eACAA,mBACAA,eACAA,qBACAA,eAxZVA,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPnN,QAAYpiB,IACV1jB,KAAK6yC,eAAe/B,cAAcptB,IAASxiB,MACzC8D,OAAK89B,IACHmQ,MAAoC,CAClCvvB,QAASof,GAAIoQ,SACbC,YAAarQ,GAAIqQ,YACjB/kB,SAAU1K,GAAQ0K,aAGtB8U,OAAY94B,KAAU+4B,QAAG8P,MAAoC,CAAE7oC,iBAMvEpK,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAG7lB,OAAKyrB,WACfzoC,KAAK6yC,eAAe5B,oBAAoBj0B,GAAKyrB,IAAMvnC,MACjD8D,OAAK+V,IACHk4B,MAA0C,CACxCl4B,QAAOhB,+BACFgB,IAAO,CACVq4B,OAAQr4B,GAAQs4B,SAASruC,IAAK8sB,KAAO,CACnClH,GAAIkH,YAKZoR,OAAY94B,KACV+4B,QAAG8P,MAA0C,CAAE7oC,MAAOA,GAAMA,cAOtEpK,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGroB,eACL/a,KAAKgnC,WAAWlsB,mBAAmBC,IACnCA,GAAQq4B,OAAO/2B,QAASi3B,KACtBtzC,KAAKiE,OAAOO,SAASyuC,MAAwC,CAAEM,QAASD,GAAM1oB,WAItF,CAAEpmB,UAAU,IAGdxE,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,KACpDA,GAAM+2B,WAAayP,6BACrB5wC,KAAKW,OAAO0J,cAAc,GAAG5B,gBAAyBA,oBAI9D,CAAEjE,UAAU,IAGdxE,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPnN,QAAW,EAAG+L,eAAa1jB,cAAYC,YAAUolB,uBAC/CxzC,KAAK8yC,eAAelB,cAAcC,GAAa1jB,GAAYC,IAAUltB,MACnEojC,QAAWxB,KACT,MAAM2Q,GAAU,GAChB,OAAID,IACFC,GAAQv4B,KAAK+3B,SAEfQ,GAAQv4B,KAAK+3B,MAAoC,CAAEvvB,QAASof,GAAI4Q,SAAUtlB,eACnEqlB,MAETvQ,OAAY94B,KAAU+4B,QAAG8P,MAAoC,CAAE7oC,iBAMvEpK,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,6BAAyB0iC,QAAa,IACpC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAG7lB,UACVhd,KAAK6yC,eAAe3B,sBAAsBl0B,IAAK9b,MAC7C8D,OAAK+V,YACH,aAA4C,CAC1CA,QAAOhB,6BACLiD,QACGjC,IAAO,CACVq4B,OAAwB,QAAhBtE,MAAQuE,gBAAQjxC,iBAAE4C,IAAK4lB,KAAQ,CAAEA,gBAI/CsY,OAAW,EAAG94B,aAAY+4B,QAAG8P,MAA4C7oC,UAMjFpK,oCAAgC0iC,QAC9B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGroB,sBACS,QAAdi0B,MAAQoE,cAAMhxC,WAAEia,QAASi3B,KACvBtzC,KAAKiE,OAAOO,SACVyuC,MAAiD,CAAEM,QAASD,GAAM1oB,WAK5E,CAAEpmB,UAAU,IAGdxE,oCAAgC0iC,QAC9B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAMdxE,mCAA+B0iC,QAAa,IAC1C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAG7lB,OAAKyrB,WACfzoC,KAAK6yC,eAAe1B,4BAA4Bn0B,GAAKyrB,IAAMvnC,MACzD8D,OAAK89B,IACHmQ,MAAkD,CAChDzL,gBAAiB1E,GAAI0E,oBAGzBtE,OAAW,KAAMC,QAAG8P,cAM5BjzC,0CAAsC0iC,QACpC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,yCAAkDA,CAClDA,+BAAwCA,KAIhD,CAAEkE,UAAU,IAMdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAG7lB,OAAKyrB,WACfzoC,KAAK+yC,cAAcd,oBAAoBj1B,GAAKyrB,IAAMvnC,MAChD8D,OAAK89B,IACHmQ,MAA0C,CACxCU,QAAS7Q,GAAI6Q,YAGjBzQ,OAAW,KAAMC,QAAG8P,cAM5BjzC,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,iCAA0CA,CAC1CA,uBAAgCA,KAIxC,CAAEkE,UAAU,IAMdxE,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAGmO,kBAAgBh0B,OAAKyrB,WAC/BzoC,KAAK6yC,eAAevB,+BAA+BN,GAAgBvI,IAAMvnC,MACvE8D,OAAK89B,IACHmQ,MAA8C,CAC5CW,mBAAoB9Q,GAAI0E,gBAAgBjmC,OAAQsyC,IAAMA,GAAE72B,MAAQA,QAGpEkmB,OAAW,KAAMC,QAAG8P,cAM5BjzC,sCAAkC0iC,QAChC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,mDAA4DA,CAC5DA,iCAA0CA,KAIlD,CAAEkE,UAAU,IAGdxE,2CAAuC0iC,QAAa,IAClD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAGyG,aACVtpC,KAAK6yC,eAAetB,oCAAoCjI,IAAQpoC,MAC9D8D,OAAK89B,IACHmQ,MAA0D,CACxDvvB,QAASof,GAAIoQ,aAGjBhQ,OAAY94B,KACV+4B,QAAG8P,MAA0D,CAAE7oC,iBAOzEpK,kDAA8C0iC,QAC5C,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,gDAA4C0iC,QAAa,IACvD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAGyG,aACVtpC,KAAK6yC,eAAerB,yCAAyClI,IAAQpoC,MACnE8D,OAAK89B,IACHmQ,MAA+D,CAC7DvvB,QAASof,GAAIoQ,aAGjBhQ,OAAY94B,KACV+4B,QAAG8P,MAA+D,CAAE7oC,iBAO9EpK,uDAAmD0iC,QACjD,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,gDAA4C0iC,QAAa,IACvD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAGyG,aACVtpC,KAAK6yC,eAAepB,yCAAyCnI,IAAQpoC,MACnE8D,OAAK89B,IACHmQ,MAA+D,CAC7DvvB,QAASof,GAAIoQ,aAGjBhQ,OAAY94B,KACV+4B,QAAG8P,MAA+D,CAAE7oC,iBAO9EpK,uDAAmD0iC,QACjD,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,yCAAqC0iC,QAAa,IAChD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAGyG,aACVtpC,KAAK6yC,eAAenB,kCAAkCpI,IAAQpoC,MAC5D8D,OAAK89B,IACHmQ,MAAwD,CACtDvvB,QAASof,GAAIoQ,aAGjBhQ,OAAY94B,KACV+4B,QAAG8P,MAAwD,CAAE7oC,iBAOvEpK,gDAA4C0iC,QAC1C,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACP7P,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,gCAA4B0iC,QAAa,IACvC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAG0Q,cACVvzC,KAAKgzC,aAAaP,oBAAoBc,IAASryC,MAC7C8D,OAAK8uC,IACHb,MAA+C,CAAEM,WAASO,iBAE5D5Q,OAAW,KAAMC,QAAG8P,cAM5BjzC,yCAAqC0iC,QAAa,IAChD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsQ,QACPpQ,QAAS,EAAG0Q,cACVvzC,KAAKgzC,aAAaP,oBAAoBc,IAASryC,MAC7C8D,OAAK8uC,IACHb,MAAwD,CAAEM,WAASO,iBAErE5Q,OAAW,KAAMC,QAAG8P,8DA1YjBL,GAAc/yC,mIAAd+yC,EAAc37B,QAAd27B,EAAc,YAAdA,GAAb,kBCTO,IAAMmB,GAAb,MAAM,QAkOJh0C,YACUsiC,GACA0Q,GACAF,GACArQ,IAHAxiC,iBACAA,sBACAA,uBACAA,eArOVA,oBAAgB0iC,QAAa,IAC3B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACPlO,QAAYpiB,IACV1jB,KAAK+yC,cAAchB,aAAaruB,IAASxiB,MACvC8D,OAAK89B,IACHkR,MAAkC,CAChCl3B,MAAOgmB,GAAI6Q,QACXvlB,SAAU1K,GAAQ0K,SAClB4X,YAAatiB,GAAQsiB,gBAGzB9C,OAAY94B,KAAU+4B,QAAG6Q,MAAkC,CAAE5pC,iBAMrEpK,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACP5Q,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,yBAAkCA,CAAEA,uBAAgCA,KAG5F,CAAEkE,UAAU,IAGdxE,6BAAyB0iC,QAAa,IACpC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACPnR,QAAS,IACP7iC,KAAK+yC,cAAcf,wBAAwB9wC,MACzC8D,OAAI,EAAGivC,uBACLD,MAA2C,CAAEC,wBAE/C/Q,OAAY94B,KAAU+4B,QAAG6Q,MAA2C,CAAE5pC,iBAM9EpK,oCAAgC0iC,QAC9B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACP5Q,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,mCAA2CA,CAC3CA,gCAAwCA,KAIhD,CAAEkE,UAAU,IAGdxE,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACPnR,QAAS,EAAGlhC,OAAK8mC,WACfzoC,KAAK+yC,cAAcX,mBAAmBzwC,GAAK8mC,IAAMvnC,MAC/C8D,OAAKw/B,IAASwP,MAAwC,CAAExP,YACxDtB,OAAW,KAAMC,QAAG6Q,cAM5Bh0C,gCAA4B0iC,QAAa,IACvC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACPnR,QAAS,EAAGlhC,UACV3B,KAAK+yC,cAAcX,mBAAmBzwC,IAAKT,MACzC8D,OAAKw/B,IAASwP,MAAwC,CAAExP,YACxDtB,OAAW,KAAMC,QAAG6Q,cAM5Bh0C,iCAA6B0iC,QAC3B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACP5Q,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,gCAAwCA,CACxCA,+BAAwCA,KAIhD,CAAEkE,UAAU,IAGdxE,kCAA8B0iC,QAAa,IACzC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACPnR,QAAS,EAAGsP,eACVnyC,KAAK+yC,cAAcb,2BAA2BC,IAAUjxC,MACtD8D,OAAK89B,IAAQkR,MAAgD,CAAEl3B,MAAOgmB,GAAI6Q,YAC1EzQ,OAAW,KAAMC,QAAG6Q,cAM5Bh0C,yCAAqC0iC,QACnC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACP5Q,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,wCAAiDA,CACjDA,uCAAgDA,KAIxD,CAAEkE,UAAU,IAGdxE,4BAAwB0iC,QAAa,IACnC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,OACPnR,QAAS,EAAGwO,gBACVrxC,KAAK6yC,eAAezB,qBAAqBC,IAAWnwC,MAClD8D,OAAK89B,IAAQkR,MAA0C,CAAEl3B,MAAOgmB,GAAIoQ,aACpEhQ,OAAW,KAAMC,QAAG6Q,cAM5Bh0C,mCAA+B0iC,QAC7B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACP5Q,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,kCAA2CA,CAC3CA,iCAA0CA,KAIlD,CAAEkE,UAAU,IAGdxE,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACPnR,QAAS,IACP7iC,KAAK+yC,cAAcR,mBAAmBrxC,MACpC8D,OAAK89B,IACHkR,MAAsC,CACpCl3B,MAAOgmB,GAAI6Q,QAAQ3uC,IAAK6uC,IAAM95B,+BACzB85B,IAAC,CACJK,WAAYL,GAAEM,aACXC,MAAM,EAAG,GACTpvC,IAAKrD,IClKlB,YAAsB6kC,GAC1B,OAAOA,EACJrb,cACAtpB,MAAM,KACNmD,IAAI,SAAUyhC,IACb,OAAOA,GAAK7kC,QAAQ6kC,GAAK,GAAIA,GAAK,GAAGC,iBAEtC2N,KAAK,KD2JsBC,CC1K1B,YAAmB9N,GACvB,OAAIA,EACKA,EAAI+N,WAAW,IAAK,KAGtB,GDqKmCC,CAAS7yC,MAClC0yC,KAAK,aAIdnR,OAAW,KAAMC,QAAG6Q,cAM5Bh0C,+BAA2B0iC,QACzB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACP5Q,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MACV9J,iCAAuCA,CACvCA,yBAAiCA,IAIzC,CAAEkE,UAAU,IAGdxE,kBAAc0iC,QAAa,IACzB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACPlO,QAAW,EAAGlb,MAAIjpB,UAChB3B,KAAK+yC,cAAcV,WAAWznB,IAAI1pB,MAChC8D,OAAI,IAAMgvC,UACV9Q,OAAW,KAAMC,QAAG6Q,MAAgC,CAAEryC,eAM9D3B,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACP5Q,OAAI,IAAMpjC,KAAKwiC,OAAOp4B,MAAM9J,iCAA6BA,CAAEA,yBAA4BA,IACvF0E,OAAI,EAAGrD,UAAUqyC,MAAuC,CAAEryC,YAI9D3B,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACPnR,QAAS,EAAGjY,MAAIjpB,UACd3B,KAAK+yC,cAAcT,cAAc1nB,IAAI1pB,MACnC8D,OAAI,IAAMgvC,UACV9Q,OAAW,KAAMC,QAAG6Q,MAAmC,CAAEryC,eAMjE3B,4BAAwB0iC,QAAa,IACnC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOqR,QACP5Q,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MAAM9J,mCAAmCA,CAAEA,yBAA+BA,IAExF0E,OAAI,EAAGrD,UAAUqyC,MAAuC,CAAEryC,4DA9NnDoyC,GAAal0C,yEAAbk0C,EAAa98B,QAAb88B,EAAa,YAAbA,GAAb,iBECO,IAAMU,GAAb,MAAM,QAIJ10C,YACU6rB,GACmBlsB,IADnBM,aACmBA,iBAL7BA,aAAkB1B,wBAOhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5Bg1C,qBACE,OAAO10C,KAAK4rB,KAAK7L,IAAgB,GAAG/f,KAAKisB,2BAA4B,CACnEE,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlC6oB,mBAAmBC,IACjB,OAAO50C,KAAK4rB,KAAK7L,IAAsB,GAAG/f,KAAKisB,2BAA2B2oB,KAAY,CACpFzoB,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,aAKlC+oB,aAAazxB,IACX,MAAM0xB,GAAkB/6B,+BACnBqJ,IAAO,CACVuD,gBAAe5M,+BAAOqJ,GAAQuD,iBAAe,CAAE4H,QAASxiB,KAAYzN,iBAEtE,OAAO0B,KAAK4rB,KAAKgB,KAAU,GAAG5sB,KAAKisB,0BAA2B6oB,oDAhCrDL,GAAa50C,kBAMd8C,mCANC8xC,EAAax9B,QAAbw9B,EAAa,qBAFZ,SAEDA,GAAb,GCAaM,GAAb,MAAM,QAiFJh1C,YACUsiC,GACA2S,GACAxS,GACAv+B,IAHAjE,iBACAA,sBACAA,eACAA,eApFVA,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsS,QACPpS,QAAS,IACP7iC,KAAKg1C,cAAcN,qBAAqBxzC,MACtC8D,OAAK89B,IACHmS,MAAwC,CACtCC,cAAepS,GAAIqS,QAAQnwC,IAAKowC,IAAer7B,+BAC1Cq7B,IAAU,CACbC,cAAe/G,GAAuB8G,GAAWC,sBAIvDnS,OAAW,KAAMC,QAAG8R,cAM5Bj1C,iCAA6B0iC,QAC3B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsS,QACP7R,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,oCAAsCA,CAAEA,OAAgBA,KAGhF,CAAEkE,UAAU,IAGdxE,oBAAgB0iC,QAAa,IAC3B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsS,QACPpS,QAAS,EAAGnf,cACV1jB,KAAKg1C,cAAcH,aAAanxB,IAASxiB,MACvC8D,OAAI,IAAMiwC,UACV/R,OAAW,KAAMC,QAAG8R,cAM5Bj1C,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsS,QACP7R,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,6BAAgCA,CAAEA,OAAgBA,KAG1E,CAAEkE,UAAU,IAGdxE,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsS,QACPpS,QAAS,EAAG+R,eACV50C,KAAKg1C,cAAcL,mBAAmBC,IAAU1zC,MAC9C8D,OAAK89B,IACHmS,MAAwC,CACtCttB,cAAa5N,+BAAO+oB,IAAG,CAAEuS,cAAe/G,GAAuBxL,GAAIuS,qBAGvEnS,OAAW,KAAMC,QAAG8R,cAM5Bj1C,iCAA6B0iC,QAC3B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsS,QACP7R,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,oCAAsCA,CAAEA,OAAgBA,KAGhF,CAAEkE,UAAU,oDA9EHuwC,GAAal1C,4EAAbk1C,EAAa99B,QAAb89B,EAAa,YAAbA,GAAb,8DCGO,IAAMO,GAAb,MAAM,QAIJv1C,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5BqE,QACE0C,cACA0nB,cAAa,EACb5sB,UAAS,GACTg0C,gCAA8B,IAE9B,OAAOv1C,KAAK4rB,KAAK7L,IAAoB,GAAG/f,KAAKisB,oBAAqB,CAChEE,OAAQ,IAAIC,KAAW,CACrBsC,QAAS,IAAIC,KACbtC,WAAUtS,eACRy7B,MAAO/uC,GACP0nB,WAAYA,GAAWrqB,WACvBsqB,SAAUra,iBACV+X,QAAS9rB,KAAK8rB,QACdypB,4BAA6BjlB,OAAOilB,KACjCh0C,wDAvBA+zC,GAAaz1C,kBAIsB8C,mCAJnC2yC,EAAar+B,QAAbq+B,EAAa,qBAFZ,SAEDA,GAAb,GCDaG,GAAb,MAAM,QA+CJ11C,YACUsiC,GACAqT,GACAlT,GACAv+B,IAHAjE,iBACAA,sBACAA,eACAA,eAlDVA,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOgT,QACPpO,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOyxC,SAC1CC,QAAU,EAAEnyB,GAASoyB,MACnB91C,KAAK01C,cACF3xC,OAAO,CACN0C,WAAYid,GAAQjd,WACpB0nB,WAAYgd,KAAKC,KAAK0K,GAAgB/hC,OAA2B,EACjExS,OAAQmiB,GAAQniB,OAChBg0C,4BAA6B7xB,GAAQqyB,2BAEtC70C,MACC8D,OAAK89B,IACH6S,MAAuC,CACrCK,MAAOlT,GAAIkT,MACXC,UAAWnT,GAAImT,UACfC,WAAYxyB,GAAQwyB,WACpBC,OAAQrT,GAAIqT,OACT50C,OAAQ60C,IAAiB,gBAAXA,GAAEl5B,MAA0Bk5B,GAAEt5B,MAAM3X,QAClDH,IAAKoxC,IAAMr8B,+BACPq8B,IAAC,CACJxrB,GAAItU,KAAsB8/B,GAAEl5B,aAIpCgmB,OAAW,KAAMC,QAAGwS,cAM9B31C,gCAA4B0iC,QAC1B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOgT,QACPvS,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,+BAAwCA,CACxCA,8BAAuCA,KAI/C,CAAEkE,UAAU,oDA5CHixC,GAAa51C,4EAAb41C,EAAax+B,QAAbw+B,EAAa,YAAbA,GAAb,kBCFO,IAAMY,GAAb,MAAM,QAGJt2C,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAFjEA,aAAkB1B,wBAIlBg4C,aAAaC,IACX,OAAOv2C,KAAK4rB,KAAKgB,KAA2B,GAAG5sB,KAAKisB,yBAA0BsqB,GAAK,CACjFpqB,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,SAASC,QAAW/rB,KAAKN,+DARlC22C,GAAYx2C,kBAGuB8C,mCAHnC0zC,EAAYp/B,QAAZo/B,EAAY,qBAFX,SAEDA,GAAb,GCHaG,GAAb,MAAM,QAmCJz2C,YACUsiC,GACAG,GACAiU,IAFAz2C,iBACAA,eACAA,qBArCVA,oBAAgB0iC,QAAa,IAC3B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO+T,QACP7T,QAAS,EAAGnf,cACV1jB,KAAKy2C,aAAaH,aAAa5yB,IAASxiB,MACtC8D,OAAI,IAAM0xC,UACVxT,OAAW,KAAMC,QAAGuT,cAM5B12C,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO+T,QACPtT,OAAI,KACFpjC,KAAKwiC,OAAOmU,QAAQr2C,aAAsBA,CAAEA,SAAkBA,KAGpE,CAAEkE,UAAU,IAGdxE,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO+T,QACPtT,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,+BAAgCA,CAAEA,OAAgBA,KAG1E,CAAEkE,UAAU,oDAhCHgyC,GAAY32C,+DAAZ22C,EAAYv/B,QAAZu/B,EAAY,YAAZA,GAAb,kBCPO,MAAMI,GAA+D,CAC1EC,cAAe,mBACfC,gBAAgB,EAChBC,WAAY,qBACZC,aAAc,wECFV,YAA2BC,GAC/B,OAAQA,IACDvH,yBACIwH,YAEAA,YAIP,YAA6BD,GACjC,OAAQA,IACDvH,yBACIwH,cAEAA,cAwCP,YAAiCC,GACrC,OACEA,EAAWhvC,SAAS2M,yBACpBqiC,EAAWhvC,SAAS2M,2BACpBqiC,EAAWhvC,SAAS2M,8CCfjB,IAAMsiC,GAAb,MAAM,QAq6BJr3C,YACUsiC,GACAgV,GACApzC,GACAu+B,GACAl6B,IAJAtI,iBACAA,2BACAA,eACAA,eACAA,sBAz6BVA,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAG7U,YACVhuB,KAAKq3C,mBAAmBtpB,kBAAkBC,IAAO9sB,MAC/C8D,OAAK89B,IAAQwU,MAA4C,CAAElP,QAAStF,GAAIyU,cACxErU,OAAW,KAAMC,QAAGmU,cAM5Bt3C,4BAAwB0iC,QAAa,IACnC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGzE,uBACVp+B,KAAKq3C,mBAAmBnpB,eAAekQ,IAAkBl9B,MACvD8D,OAAK89B,YACH,OAAa,QAATqF,MAAIrrB,aAAK1a,iBAAE+C,QAAS,EACfmyC,MAAyCt3C,KAAKqrC,2BAA2BvI,KAEzEwU,WAGXpU,OAAW,KAAMC,QAAGmU,cAM5Bt3C,oCAAgC0iC,QAAa,IAC3C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/P,QAAiB,IAAM,CAACvnC,KAAKiE,OAAOE,OAAOqzC,UAC3C3U,QAAS,EAAE4U,GAAUC,MACnB13C,KAAKq3C,mBACFnpB,eAAeluB,KAAK23C,4BAA4BF,GAAUC,KAC1Dx2C,MACC8D,OAAK89B,IACHwU,MAAyCt3C,KAAKqrC,2BAA2BvI,OAE3EI,OAAW,KAAMC,QAAGmU,cAM9Bt3C,uCAAmC0iC,QAAa,IAC9C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/P,QAAiB,IAAM,CACrBvnC,KAAKiE,OACFE,OAAOqzC,OACPt2C,MAAKiD,SAAQyzC,IAA6BA,GAAyB7oB,aAExE8T,QAAS,EAAE4U,GAAU1oB,MACnB/uB,KAAKq3C,mBACFvoB,wBAAwB,CACvBC,QAASA,GACTZ,WAAYspB,GAAStpB,WACrBC,SAAUqpB,GAASrpB,WAEpBltB,MACC8D,OAAK89B,IACHwU,KAAkD,CAChDxU,IAAK9iC,KAAK63C,mCAAmC/U,QAGjDI,OAAW,EAAG94B,aACZ+4B,QAAGmU,MAAkD,CAAEltC,iBAOnEpK,sCAAkC0iC,QAAa,IAC7C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGzf,cACVpjB,KAAKq3C,mBAAmB5oB,+BAA+BrL,IAASliB,MAC9D8D,OAAK89B,IACHwU,MAAyC,CACvChM,SAAS,EACTxuB,MAAO,CAAC9c,KAAK83C,sCAAsChV,SAGvDI,OAAW,KAAMC,QAAGmU,cAM5Bt3C,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGzf,cACVpjB,KAAKq3C,mBAAmBvoB,wBAAwB1L,IAASliB,MACvD8D,OAAK89B,IACHwU,KAAkD,CAChDxU,IAAK9iC,KAAK63C,mCAAmC/U,QAGjDI,OAAW,EAAG94B,aACZ+4B,QAAGmU,MAAkD,CAAEltC,iBAOjEpK,sCAAkC0iC,QAChC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,KACF,MAAMjvB,GAAgB7T,kBAA2BA,CACjD,IAAI8T,GAEFA,GADE2jC,MACQz3C,iCAA0CA,CAE1CA,2CAA4BA,CAExCN,KAAKwiC,OAAOp4B,MAAMgK,GAASD,IAC3BnU,KAAKsI,cAAc8B,MAAMgK,OAG/B,CAAE5P,UAAU,IAGdxE,gCAA4B0iC,QAAa,IACvC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAG5T,yBAA0B+oB,MACpCh4C,KAAKq3C,mBAAmBpoB,yBAAyB+oB,IAAkB92C,MACjE8D,OAAK89B,IAAQwU,MAAmD,CAAExU,WAClEI,OAAW,KAAMC,QAAGmU,cAM5Bt3C,uCAAmC0iC,QACjC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,kCAA2CA,CAC3CA,+CAAkDA,KAI1D,CAAEkE,UAAU,IAGdxE,iCAA6B0iC,QAAa,IACxC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/P,QAAiB,IAAM,CACrBvnC,KAAKiE,OAAOE,OAAO8zC,OACnBj4C,KAAKiE,OAAOE,OAAO+zC,UAErBrV,QAAS,GAAI7c,aAAYsJ,GAA2BC,MAClDvvB,KAAKq3C,mBAAmBhoB,aAAarJ,GAAUsJ,GAA2BC,IAAaruB,MACrF8D,OAAK89B,IACHwU,MAAoD,CAClDa,mBAAoB,CAClB7oB,0BAA2BwT,GAAIxT,0BAC/BioB,UAAWzU,GAAIyU,UACfa,OAAQtV,GAAIqU,WACZ5nB,YAAauT,GAAIvT,iBAIvB2T,OAAY94B,KAAU+4B,QAAGmU,MAAoDltC,UAMrFpK,wCAAoC0iC,QAClC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAKh5B,eACHpK,KAAKwiC,OAAOp4B,MACViuC,GAA+B,QAAZrT,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QACjC6I,GAA6B,QAAZnQ,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,SAEjCzvC,KAAKsI,cAAc8B,MAAM,4BAA6BA,OAG5D,CAAE5F,UAAU,IAGdxE,oCAAgC0iC,QAAa,IAC3C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/P,QAAiB,IAAM,CACrBvnC,KAAKiE,OAAOE,OAAO8zC,OACnBj4C,KAAKiE,OAAOE,OAAO+zC,UAErBrV,QAAS,GAAI/gB,gBAAewN,GAA2BC,MACrDvvB,KAAKq3C,mBACF5nB,gBAAe1V,gCACXw+B,QAAqCz2B,KAAY,CACpDwN,6BACAC,kBAEDruB,MACC8D,OAAK89B,IACHwU,MAAuD,CACrDkB,yBAA0B,CACxBjB,UAAWzU,GAAIyU,UACfa,OAAQtV,GAAIqU,gBAIlBjU,OAAY94B,KACV+4B,QAAGmU,MAAuDltC,UAOtEpK,2CAAuC0iC,QACrC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAKh5B,eACHpK,KAAKwiC,OAAOp4B,MACViuC,GAA+B,QAAZrT,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QACjC6I,GAA6B,QAAZnQ,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,SAEjCzvC,KAAKsI,cAAc8B,MAAM,+BAAgCA,OAG/D,CAAE5F,UAAU,IAGdxE,oCAAgC0iC,QAAa,IAC3C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/P,QAAiB,IAAM,CACrBvnC,KAAKiE,OAAOE,OAAO8zC,OACnBj4C,KAAKiE,OAAOE,OAAO+zC,UAErBrV,QAAS,GAAI3gB,aAAWu2B,sBAAqBnpB,GAA2BC,MACtEvvB,KAAKq3C,mBACF3nB,gBAAgB,CACfxN,aACAoN,6BACAC,eACAkpB,uBAEDv3C,MACC8D,OAAK89B,IACHwU,MAAuD,CACrDkB,yBAA0B,CACxBjB,UAAWzU,GAAIyU,UACfa,OAAQtV,GAAIqU,gBAIlBjU,OAAY94B,KACV+4B,QAAGmU,MAAuDltC,UAOtEpK,2CAAuC0iC,QACrC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAKh5B,eACHpK,KAAKwiC,OAAOp4B,MACViuC,GAA+B,QAAZrT,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QACjC6I,GAA6B,QAAZnQ,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,SAEjCzvC,KAAKsI,cAAc8B,MAAM,+BAAgCA,OAG/D,CAAE5F,UAAU,IAGdxE,uBAAmB0iC,QAAa,IAC9B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAG1gB,cACVniB,KAAKq3C,mBAAmBpmB,cAAc9O,IAASjhB,MAC7C8D,OAAK89B,IAAQwU,MAA0C,CAAE9zB,kBAAmBsf,OAC5EI,OAAY94B,KAAU+4B,QAAGmU,MAA0CltC,UAM3EpK,2CAAuC0iC,QAAa,IAClD1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/P,QAAiB,IAAM,CACrBvnC,KAAKiE,OAAOE,OAAO8zC,OACnBj4C,KAAKiE,OAAOE,OAAO+zC,UAErBrV,QACE,GACI6V,sBAAoBvoB,oBAAkBC,2BAAyBC,yBACjEf,GACAC,MAEAvvB,KAAKq3C,mBACF1nB,eAAe,CACdO,aAAcwoB,GAAmB9tB,GACjCuF,oBACAC,2BACAC,wBACAf,6BACAC,iBAEDruB,MACC8D,OAAK89B,IACHwU,MAA8D,CAC5DkB,yBAA0B,CACxBjB,UAAWzU,GAAIyU,UACfa,OAAQtV,GAAIqU,gBAIlBjU,OAAY94B,KACV+4B,QAAGmU,MAA8DltC,UAO/EpK,kDAA8C0iC,QAC5C,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAKh5B,eACHpK,KAAKwiC,OAAOp4B,MACViuC,GAA+B,QAAZrT,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QACjC6I,GAA6B,QAAZnQ,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,SAEjCzvC,KAAKsI,cAAc8B,MAAM,sCAAuCA,OAGtE,CAAE5F,UAAU,IAGdxE,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,IACP7iC,KAAKq3C,mBAAmB1mB,cAAczvB,MACpC8D,OAAK89B,IAAQwU,MAA6C,CAAEhjB,cAAewO,OAC3EI,OAAY94B,KAAU+4B,QAAGmU,MAA6CltC,UAM9EpK,4BAAwB0iC,QAAa,IACnC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAG7qB,YACVhY,KAAKq3C,mBAAmBznB,qBAAqB5X,IAAO9W,MAClD8D,OAAI,EAAG2zC,mBACLrB,MAA+C,CAAEqB,oBAEnDzV,OAAY94B,KAAU+4B,QAAGmU,MAA+CltC,UAMhFpK,kCAA8B0iC,QAAa,IACzC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGzf,cACVpjB,KAAKq3C,mBAAmB7lB,2BAA2BpO,IAASliB,MAC1D8D,OAAKymB,IAAa6rB,MAAqD,CAAE7rB,gBACzEyX,OAAY94B,KAAU+4B,QAAGmU,MAAqDltC,UAMtFpK,yCAAqC0iC,QACnC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,2BAAwCA,CACxCA,iCAA+CA,KAIvD,CAAEkE,UAAU,IAGdxE,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAG7S,0BAAwBD,gBAClC/vB,KAAKq3C,mBAAmBxnB,iBAAiBG,GAAwBD,IAAW7uB,MAC1E8D,OAAK89B,IACHwU,MAAsD,CAAEsB,YAAa9V,GAAI8V,gBAE3E1V,OAAY94B,KACV+4B,QAAGmU,MAAsD,CAAEltC,iBAOrEpK,gCAA4B0iC,QAAa,IACvC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,IACP7iC,KAAKq3C,mBACF9mB,2BACArvB,MAAK8D,OAAK89B,IAAQwU,MAAmD,CAAExU,cAKhF9iC,uCAAmC0iC,QAAa,IAC9C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,IACP7iC,KAAKq3C,mBACF7mB,kCACAtvB,MAAK8D,OAAK89B,IAAQwU,MAA0D,CAAExU,cAKvF9iC,sCAAkC0iC,QAAa,IAC7C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,IACP7iC,KAAKq3C,mBACF5mB,iCACAvvB,MAAK8D,OAAK89B,IAAQwU,MAAyD,CAAExU,cAKtF9iC,mCAA+B0iC,QAAa,IAC1C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,IACP7iC,KAAKq3C,mBACF3mB,8BACAxvB,MAAK8D,OAAK89B,IAAQwU,MAAsD,CAAExU,cAKnF9iC,iCAA6B0iC,QAAa,IACxC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QACE,EACEvT,6BACAY,gBACAC,oBACAC,2BACAC,2BAEArwB,KAAKq3C,mBACFpnB,0BACCX,GACAY,GACAC,GACAC,GACAC,IAEDnvB,MACC8D,OAAK89B,IAAQwU,MAAoD,CAAExU,WACnEI,OAAY94B,KAAU+4B,QAAGmU,MAAoDltC,UAMzFpK,wCAAoC0iC,QAAa,IAC/C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/1C,OAAO,EAAGuhC,UAAUA,KACpBwB,QAAU,IAAM,CACdgT,QACAA,QACAA,YAKNt3C,wCAAoC0iC,QAClC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAKh5B,eACHpK,KAAKwiC,OAAOp4B,MACViuC,GAA+B,QAAZrT,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QACjC6I,GAA6B,QAAZnQ,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,YAIvC,CAAEjrC,UAAU,IAGdxE,yBAAqB0iC,QAAa,IAChC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/P,QAAiB,IAAM,CACrBvnC,KAAKiE,OAAOE,OAAO00C,OACnB74C,KAAKiE,OAAOE,OAAO4vB,OACnB/zB,KAAKiE,OAAOE,OAAO8zC,OACnBj4C,KAAKiE,OAAOE,OAAO+zC,UAErBrV,QAAS,EAAC,CAAGiW,GAAY52B,GAAWoN,GAA2BC,OAC7D,MAAM5I,GAAkB3mB,KAAK+4C,qBAAqB72B,IAUlD,OAAOliB,KAAKq3C,mBAAmB9lB,kBATM,CACnCrB,aAAc4oB,GAAWluB,GACzBuF,mBAAoB2oB,GAAW3oB,iBAC/BxJ,mBACA2I,6BACAC,eACAa,0BAA2B0oB,GAAW1oB,wBACtCC,uBAAwByoB,GAAWzoB,uBAEqBnvB,MACxD8D,OAAK89B,IAAQwU,MAA4C,CAAExU,WAC3DI,OAAW,KAAMC,QAAGmU,eAM5Bt3C,gCAA4B0iC,QAC1B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,qCAA8BA,CAAEA,6CAAqCA,KAG7F,CAAEkE,UAAU,IAGdxE,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGnf,cACV1jB,KAAKq3C,mBAAmB1qB,iBAAiBjJ,IAASxiB,MAChD8D,OAAK89B,IAAQwU,MAA2C,CAAE5zB,QAASof,OACnEI,OAAY94B,KAAU+4B,QAAGmU,MAA2C,CAAEltC,iBAM9EpK,gCAA4B0iC,QAAa,IACvC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPtyC,OAAI,EAAG+/B,kBACLuS,MAAmD,CAAE5zB,QAASqhB,QAKpE/kC,mBAAe0iC,QAAa,IAC1B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGnf,cACV1jB,KAAKq3C,mBAAmBzmB,YAAYlN,IAASxiB,MAC3C8D,OAAK89B,IAAQwU,MAAsC,CAAE5zB,QAASof,OAC9DI,OAAY94B,KAAU+4B,QAAGmU,MAAsC,CAAEltC,iBAMzEpK,0BAAsB0iC,QACpB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAM8J,cAA6BA,aAC/ClU,KAAKsI,cAAc8B,MAAM,wBAAyBA,OAGxD,CAAE5F,UAAU,IAGdxE,mBAAe0iC,QAAa,IAC1B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGnf,cACV1jB,KAAKq3C,mBAAmBxmB,YAAYnN,IAASxiB,MAC3C8D,OAAKymB,IAAa6rB,MAAsC,CAAE7rB,gBAC1DyX,OAAY94B,KAAU+4B,QAAGmU,MAAsC,CAAEltC,iBAMzEpK,0BAAsB0iC,QACpB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAM8J,cAA6BA,aAC/ClU,KAAKsI,cAAc8B,MAAM,wBAAyBA,OAGxD,CAAE5F,UAAU,IAGdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGnf,cACV1jB,KAAKq3C,mBAAmBvmB,oBAAoBpN,IAASxiB,MACnD8D,OAAK89B,IAAQwU,MAA8C,CAAE5zB,QAASof,OACtEI,OAAY94B,KAAU+4B,QAAGmU,MAA8C,CAAEltC,iBAMjFpK,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAKh5B,eACHpK,KAAKwiC,OAAOp4B,MACViuC,GAA+B,QAAZrT,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QACjC6I,GAA6B,QAAZnQ,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,SAEjCzvC,KAAKsI,cAAc8B,MAAM,iCAAkCA,OAGjE,CAAE5F,UAAU,IAGdxE,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,OACPzU,QAAS,EAAGnf,cACV1jB,KAAKq3C,mBAAmBtmB,cAAcrN,IAASxiB,MAC7C8D,OAAK89B,IAAQwU,MAAwC,CAAE5zB,QAASof,OAChEI,OAAY94B,KAAU+4B,QAAGmU,MAAwC,CAAEltC,iBAM3EpK,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAKh5B,eACHpK,KAAKwiC,OAAOp4B,MACViuC,GAA+B,QAAZrT,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QACjC6I,GAA6B,QAAZnQ,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,QAC/BmH,IAEF52C,KAAKsI,cAAc8B,MAAM,0BAA2BA,OAG1D,CAAE5F,UAAU,IAGdxE,uBAAmB0iC,QAAa,IAC9B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGjR,eACV5xB,KAAKq3C,mBAAmBrmB,gBAAgBY,IAAU1wB,MAChD8D,OAAK89B,IAAQwU,MAA0C,CAAE5zB,QAASof,OAClEI,OAAY94B,KAAU+4B,QAAGmU,MAA0C,CAAEltC,iBAM7EpK,6BAAyB0iC,QACvB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAKh5B,KACHpK,KAAKwiC,OAAOp4B,MACV9J,+GAAiCA,CACjCA,mBAAuCA,EAEzCN,KAAKsI,cAAc8B,MAAM,2BAA4BA,OAG3D,CAAE5F,UAAU,IAGdxE,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGzf,cACVpjB,KAAKq3C,mBAAmBpqB,eAAe7J,IAASliB,MAC9C8D,OAAI,IAAMsyC,UACVpU,OAAW,EAAG94B,aAAY+4B,QAAGmU,MAAyC,CAAEltC,iBAMhFpK,6BAAyB0iC,QACvB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,IAAMpjC,KAAKsI,cAAc8B,MAAM,8BAEvC,CAAE5F,UAAU,IAGdxE,kCAA8B0iC,QAAa,IACzC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGnf,cACV1jB,KAAKq3C,mBAAmBnmB,2BAA2BxN,IAASxiB,MAC1D8D,OAAK89B,IAAQwU,MAAqD,CAAE5zB,QAASof,OAC7EI,OAAY94B,KACV+4B,QAAGmU,MAAqD,CAAEltC,iBAOpEpK,yCAAqC0iC,QACnC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,EAAGh5B,uBACApK,KAAKg5C,oBAAoB5uC,GAAMA,MAAM+sC,aACxCn3C,KAAKwiC,OAAOp4B,MDhwBlB,YAA2C6sC,GAC/C,OAAQA,IACDvH,yBACIwH,cAEAA,cC4vBC+B,CAA6C,QAAZjU,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QD1wBvD,YAAyCwH,GAC7C,OAAQA,IACDvH,yBACIwH,YAEAA,YCswBCgC,CAA2C,QAAZ/Q,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,SAGjDzvC,KAAKsI,cAAc8B,MAAM,sCAAuCA,OAGtE,CAAE5F,UAAU,IAGdxE,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGnf,cACV1jB,KAAKq3C,mBAAmBlmB,iBAAiBzN,IAASxiB,MAChD8D,OAAK89B,IAAQwU,MAA2C,CAAE5zB,QAASof,OACnEI,OAAY94B,KAAU+4B,QAAGmU,MAA2C,CAAEltC,iBAM9EpK,+BAA2B0iC,QACzB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,EAAGh5B,uBACLpK,KAAKwiC,OAAOp4B,MD1wBhB,YAAmC6sC,GACvC,OAAQA,IACDvH,yBACIwH,cAEAA,cCswBDiC,CAAqC,QAAZnU,GAAK,MAALgD,QAAK,EAALA,GAAO59B,aAAKhI,iBAAEqtC,QDpxB7C,YAAiCwH,GACrC,OAAQA,IACDvH,yBACIwH,YAEAA,YCgxBDkC,CAAmC,QAAZjR,GAAK,MAALH,QAAK,EAALA,GAAO59B,aAAKqZ,iBAAEgsB,SAEvCzvC,KAAKsI,cAAc8B,MAAM,gCAAiCA,OAGhE,CAAE5F,UAAU,IAGdxE,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPzU,QAAS,EAAGvT,gCACVtvB,KAAKq3C,mBACF/lB,wBAAwBhC,IACxBpuB,MAAK8D,OAAKq0C,IAAS/B,MAAkD,CAAE+B,cAE5EnW,OAAW,KAAMC,QAAGmU,YAIxBt3C,sCAAkC0iC,QAChC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MACV9J,0BAAqCA,CACrCA,2BAAkCA,KAI1C,CAAEkE,UAAU,IAGdxE,uBAAmB0iC,QAAa,IAC9B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACP/P,QAAiB,IAAM,CACrBvnC,KAAKiE,OAAOE,OAAO8zC,OACnBj4C,KAAKiE,OAAOE,OAAO+zC,UAErBrV,QAAS,GAAI1f,cAAamM,GAA2BC,MACnDvvB,KAAKq3C,mBACFjmB,cAAc,CACbnL,aAAc9C,GACdmM,6BACAC,iBAEDruB,MACC8D,OAAK89B,IACHwU,MAA0C,CACxCkB,yBAA0B,CACxBjB,UAAWzU,GAAIyU,UACfa,OAAQtV,GAAIqU,gBAIlBjU,OAAY94B,KAAU+4B,QAAGmU,MAA0CltC,UAM7EpK,8BAA0B0iC,QACxB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2U,QACPlU,OAAI,EAAGh5B,qBACiB,QAAjB46B,GAAK,MAALgD,QAAK,EAALA,GAAOmP,kBAAU/0C,iBAAE+F,SAAS2M,yBAC/B9U,KAAKwiC,OAAOp4B,MAAMiuC,GAAwB,MAALjuC,QAAK,EAAL49B,GAAOyH,QAAS6I,GAAsB,MAALluC,QAAK,EAAL49B,GAAOyH,SAE/EzvC,KAAKsI,cAAc8B,MAAM,6BAA8BA,OAG7D,CAAE5F,UAAU,IAGNmzC,6BACJxpB,cAAYC,aACdspB,IAEA,sCACKA,IAAa,CAChBvpB,WAAYA,GAAWrqB,WACvBsqB,SAAUA,GAAStqB,aAIfunC,2BAA2BvI,IAIjC,MAAO,CACLwI,QAASxI,GAAIwI,QACbxuB,MAAOgmB,GAAIhmB,MAAM9X,IAAKw/B,IAASxkC,KAAK83C,sCAAsCtT,MAItEqT,mCACN/U,WAEA,MAAO,CACLwI,QAASxI,GAAIwI,QACbgO,mBAAoBxW,GAAIyW,iBACxBz8B,MAAgB,QAATgtB,MAAIhtB,aAAK1a,iBAAE4C,IAAKw/B,IAASxkC,KAAK83C,sCAAsCtT,MAIvEsT,sCAAsCtT,IAC5C,GAAIA,GACF,MAAO,CACL5Z,GAAI4Z,GAAK5Z,GACTqd,UAAWzD,GAAKyD,UAChB/vB,UAAWssB,GAAKtsB,UAChBC,SAAUqsB,GAAKrsB,SACfqhC,WAAYhV,GAAKgV,WACjB7N,SAAUnH,GAAKmH,SACfD,YAAalH,GAAKkH,YAClB/oB,KAAM6hB,GAAK7hB,KACX0F,MAAOmc,GAAKnc,MACZrQ,MAAOwsB,GAAKxsB,MACZI,YAAaosB,GAAKpsB,YAClBlO,WAAYs6B,GAAKt6B,WACjB0hC,aAAcpH,GAAKoH,aACnB6N,YAAajV,GAAKiV,YAClB5N,MAAO,KACP6N,qBAAsBlV,GAAKkV,qBAC3Bpa,eAAgBkF,GAAKlF,gBAKnByZ,qBAAqB72B,IAC3B,IAAIyE,GAA2BzE,GAAUuW,KACtCtW,IAAYA,GAAQw3B,cAAgBjlC,eAEvC,OAAKiS,KACHA,GAAkBzE,GAAUuW,KAAMtW,IAAYA,GAAQw3B,cAAgBjlC,YAGjEiS,GAGDqyB,oBAAoB7B,IAC1B,OACEA,GAAWhvC,SAAS2M,iCACpBqiC,GAAWhvC,SAAS2M,mCACpBqiC,GAAWhvC,SAAS2M,iFAj6BbsiC,GAAkBv3C,0FAAlBu3C,EAAkBngC,QAAlBmgC,EAAkB,YAAlBA,GAAb,iBC3BO,IAAMwC,GAAb,MAAM,QAiMJ75C,YACUsiC,GACAC,GACA4H,GACA7hC,GACAm6B,GACAv+B,GACAsE,GACA5H,IAPAX,iBACAA,oBACAA,0BACAA,uBACAA,eACAA,eACAA,oBACAA,eArMVA,gBAAY0iC,QAAa,IACvB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPtS,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOoB,SAC1CugC,QAAW,GAAIpiB,WAASsK,UAAS+P,MAC/B/9B,KAAKsiC,YACFX,aAAa,CACZzpB,UAAWwL,GAAQxG,KAAKhF,UACxBC,SAAUuL,GAAQxG,KAAK/E,SACvBH,MAAO0L,GAAQ1L,MAAMA,MACrB8hC,SAAUp2B,GAAQo2B,SAASA,SAC3BC,YAAar2B,GAAQ3a,cAAcgxC,YACnC3hC,YAAasL,GAAQtL,YACrB6yB,0BAA4C,MAAjBlN,QAAiB,EAAjBiR,GAAmB/G,UAC9CkH,eAAiC,MAAjBpR,QAAiB,EAAjBiR,GAAmBrD,SACnCqO,sBAAwC,MAAjBjc,QAAiB,EAAjBiR,GAAmB52B,YAC1C6hC,gBAAkC,MAAjBlc,QAAiB,EAAjBiR,GAAmBh3B,MACpCkiC,oBAAqBx2B,GAAQw2B,oBAC7BlsB,WAED9sB,MACC8D,OAAI,KACFhF,KAAKgY,MAAQ0L,GAAQ1L,MAAMA,MAC3BhY,KAAK85C,SAAWp2B,GAAQo2B,SAASA,SAC1BD,MAAgC,CAAEn2B,QAAS,CAAE1L,MAAOhY,KAAKgY,YAElEkrB,OAAY94B,KAAU+4B,QAAG0W,MAAgCzvC,UAMnEpK,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPzW,OAAI,EAAG1f,eACL1jB,KAAKW,OAAO0J,cAAc,wBAAwBqZ,GAAQ1L,YAGhE,CAAExT,UAAU,IAGdxE,uBAAmB0iC,QACjB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPzW,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQ9J,oBAA6BA,KAG7E,CAAEkE,UAAU,IAGdxE,iBAAa0iC,QAAa,IACxB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPhX,QAAS,IACP7iC,KAAKsiC,YAAYV,mBAAmB1gC,MAClC8D,OAAK6S,IAASgiC,MAA6B,CAAEhiC,YAC7CqrB,OAAY94B,KAAU+4B,QAAG0W,MAA6BzvC,UAM9DpK,wBAAoB0iC,QAAa,IAC/B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACP70C,OAAI,IAAM49B,UAId5iC,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPhX,QAAS,IACP7iC,KAAKsiC,YAAYV,mBAAmB1gC,MAClCqmC,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOoB,SAC1Cs9B,QAAS,EAAEhrB,GAAMkmB,MACXA,KAAsBlmB,GAAKozB,2BACtB9H,QAAG0W,MAA6B,CAAEhiC,WAElC7X,KAAKkqC,kBACTN,oBAAoB/xB,GAAKozB,2BAA2B,GACpD/pC,MACC8D,OAAK4E,IACHiwC,MAA2C,CAAEhiC,QAAMjO,oBAK7Ds5B,OAAY94B,KAAU+4B,QAAG0W,MAA2CzvC,UAM5EpK,sCAAkC0iC,QAAa,IAC7C1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPvV,QAAU,EAAG16B,iBAAiB,CAC5BugC,MAAgD,CAC9CvgC,cACAygC,eAAgBrqC,KAAKqI,eAAeO,SAASC,GAAGwhC,iBAElDzH,WAKN5iC,sCAAkC0iC,QAChC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPzW,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MAAM9J,QAAiBA,CAAEA,oCAA6CA,IAGxF,CAAEkE,UAAU,IAGdxE,kBAAc0iC,QAAa,IACzB1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPhX,QAAS,EAAGhrB,WACV7X,KAAKsiC,YAAYT,WAAWhqB,IAAM3W,MAChC8D,OAAKm1C,IAAYN,MAA8B,CAAEhiC,KAAMsiC,OACvDjX,OAAY94B,KAAU+4B,QAAG0W,MAA8BzvC,UAM/DpK,yBAAqB0iC,QACnB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPzW,OAAI,IAAMpjC,KAAKwiC,OAAOmU,QAAQr2C,SAAkBA,CAAEA,gBAAyBA,IAE/E,CAAEkE,UAAU,IAGdxE,yBAAqB0iC,QACnB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPzW,OAAI,EAAGh5B,YAAYpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQ9J,aAAsBA,IAEvF,CAAEkE,UAAU,IAGdxE,gCAA4B0iC,QAAa,IACvC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPhX,QAAS,EAAGZ,0BACVjiC,KAAKsiC,YAAYN,yBAAyBC,IAAqB/gC,MAC7D8D,OAAI,IAAM60C,UACV3W,OAAW,KAAMC,QAAG0W,cAM5B75C,uCAAmC0iC,QACjC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPzW,OAAI,IAAMpjC,KAAKwiC,OAAOmU,QAAQr2C,SAAkBA,CAAEA,6BAAqCA,IAE3F,CAAEkE,UAAU,IAGdxE,uCAAmC0iC,QACjC,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACPzW,OAAI,IAAMpjC,KAAKwiC,OAAOp4B,MAAM9J,QAAiBA,CAAEA,6BAAqCA,IAExF,CAAEkE,UAAU,IAGdxE,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOkX,QACP70C,OAAI,KAAM6vB,QAAqB,CAAExM,MAAO,iEA7LjCuxB,GAAW/5C,2HAAX+5C,EAAW3iC,QAAX2iC,EAAW,YAAXA,GAAb,wCCLO,IAAMQ,GAAb,MAAM,QAgKJr6C,YACUsiC,GACAgY,GACA7X,GACAv+B,IAHAjE,iBACAA,uBACAA,eACAA,eAlKVA,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,OACPzX,QAAS,EAAG7qB,YACVhY,KAAKq6C,eAAetpB,cAAc/Y,IAAO9W,MACvC8D,OAAK89B,IACHwX,MAAoC,CAClC1oB,SAAUkR,GAAIyX,mBAGlBrX,OAAY94B,KAAU+4B,QAAGmX,MAAoClwC,UAMrEpK,4BAAwB0iC,QAAa,IACnC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPt1C,OAAI,EAAG4sB,eAAe0oB,MAA+B,CAAE1oB,iBAI3D5xB,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPlX,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MAAM9J,0BAAmCA,CAAEA,wBAAiCA,IAG9F,CAAEkE,UAAU,IAKdxE,uBAAmB0iC,QAAa,IAC9B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPzX,QAAS,EAAGjR,eACV5xB,KAAKq6C,eAAe1oB,gBAAgBC,IAAU1wB,MAC5C8D,OAAKw1C,IAAkBF,MAAsC,CAAEE,qBAC/DtX,OAAW,KAAMC,QAAGmX,cAM5Bt6C,8BAA0B0iC,QAAa,IACrC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPt1C,OAAI,EAAGw1C,oBAAoBF,MAA8B,CAAEE,sBAI/Dx6C,8BAA0B0iC,QACxB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPlX,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MACV9J,4BAAqCA,CACrCA,0BAAmCA,IAI3C,CAAEkE,UAAU,IAKdxE,sBAAkB0iC,QAAa,IAC7B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPzX,QAAS,EAAG2X,cAAeC,MACzBz6C,KAAKq6C,eAAe3oB,eAAe,CAAE+oB,YAAUv5C,MAC7C8D,OACE,EAAG4sB,eAGyB,IAAtBO,GAF+B5wB,OAAQ8wB,KAAaA,GAAQqoB,eAAev1C,OAGtEm1C,MAAqC,CAAE1oB,cAEvC0oB,MAAmC,CAAEE,cAAeC,MAG/DvX,OAAW,KAAMC,QAAGmX,eAO9Bt6C,2BAAuB0iC,QACrB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACP/S,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOw2C,SAC1C31C,OAAI,GAAIw1C,kBAAiBI,OACnBA,GAxG0B,EAyG5BhQ,WAAW,KACT5qC,KAAKiE,OAAOO,SACV81C,MAA8B,CAC5BE,qBA7GoB,KAkH1Bx6C,KAAKiE,OAAOO,SAAS81C,YAI7B,CAAE91C,UAAU,IAGdxE,6BAAyB0iC,QACvB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPlX,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MACV9J,4BAAsCA,CACtCA,uBAAgCA,IAIxC,CAAEkE,UAAU,IAKdxE,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPhW,QAAU,EAAGtsB,YACXhY,KAAKq6C,eAAe7nB,mBAAmBxa,IAAO9W,MAC5C8D,OAAI,IAAMs1C,UACVpX,OAAY94B,KAAU+4B,QAAGmX,MAAyC,CAAElwC,iBAM5EpK,iCAA6B0iC,QAC3B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAO2X,QACPlX,OAAI,IACFpjC,KAAKwiC,OAAOp4B,MACV9J,4BAAqCA,CACrCA,0BAAmCA,IAI3C,CAAEkE,UAAU,oDA5JH41C,GAAcv6C,8EAAdu6C,EAAcnjC,QAAdmjC,EAAc,YAAdA,GAAb,GCJaS,GAAb,MAAM,QAIJ96C,YAAoB6rB,GAA6ClsB,IAA7CM,aAA6CA,iBAHjEA,aAAkB1B,wBAIhB0B,KAAKksB,QAAU,CACbL,iBAAiB,EACjBM,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,SAASC,QAAWrsB,QAKxCo7C,gBACE,OAAO96C,KAAK4rB,KAAK7L,IAAsB,GAAG/f,KAAKisB,sBAAuBjsB,KAAKksB,SAG7E6uB,cAAc/9B,IACZ,OAAOhd,KAAK4rB,KAAKgB,KACf,GAAG5sB,KAAKisB,0BACR,GACA,CACEJ,iBAAiB,EACjBM,OAAQ,IAAIC,KAAW,CAAEC,WAAY,CAAErP,OAAK8O,SAASC,QAAW/rB,KAAKN,eAK3E2lC,gBACE,OAAOrlC,KAAK4rB,KAAKgB,KAAK,GAAG5sB,KAAKisB,4BAA6B,GAAIjsB,KAAKksB,SAGtE8uB,mBAAmBh+B,IACjB,OAAOhd,KAAK4rB,KAAKmW,OAAyB,GAAG/hC,KAAKisB,uBAAuBjP,KAAOhd,KAAKksB,SAGvFqZ,cACE,OAAOvlC,KAAK4rB,KAAKgB,KAAK,GAAG5sB,KAAKisB,sBAAuB,GAAIjsB,KAAKksB,yDArCrD2uB,GAAeh7C,kBAIoB8C,mCAJnCk4C,EAAe5jC,QAAf4jC,EAAe,qBAFd,SAEDA,GAAb,GCGaI,GAAb,MAAM,QAuIJl7C,YACUsiC,GACA6Y,GACA1Y,GACAyE,IAHAjnC,iBACAA,wBACAA,eACAA,uBA1IVA,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPtY,QAAS,IACP7iC,KAAKk7C,gBAAgBJ,gBAAgB55C,MACnC8D,OAAK89B,IAAQqY,MAAqC,CAAEC,cAAetY,GAAIsY,kBACvElY,OAAY94B,KAAU+4B,QAAGgY,MAAqC,CAAE/wC,iBAMxEpK,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACP/X,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPtY,QAAS,EAAG7lB,UACVhd,KAAKk7C,gBAAgBH,cAAc/9B,IAAK9b,MACtC8D,OAAKq2C,IAAqBF,MAAqC,CAAEE,wBACjEnY,OAAY94B,KAAU+4B,QAAGgY,MAAqC,CAAE/wC,iBAMxEpK,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACP/X,OAAI,KACFpjC,KAAKinC,eAAe1uB,MnCpDT,uBmCoDe+uB,IAGhC,CAAE9iC,UAAU,IAGdxE,4BAAwB0iC,QACtB,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACP/X,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,qBAAiB0iC,QAAa,IAC5B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPtY,QAAS,IACP7iC,KAAKk7C,gBAAgB7V,gBAAgBnkC,MACnC8D,OAAI,IAAMm2C,UACVjY,OAAY94B,KAAU+4B,QAAGgY,MAAqC/wC,UAMtEpK,4BAAwB0iC,QAAa,IACnC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPn2C,OAAI,IAAMm2C,WAIdn7C,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPtY,QAAU7lB,IACRhd,KAAKk7C,gBAAgBF,mBAAmBh+B,GAAIA,KAAK9b,MAC/C8D,OAAKq2C,IACHF,MAA0C,CAAEE,wBAE9CnY,OAAY94B,KAAU+4B,QAAGgY,MAA0C,CAAE/wC,iBAM7EpK,iCAA6B0iC,QAC3B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACP/X,OAAI,EAAGh5B,aACLpK,KAAKwiC,OAAOp4B,MAAMi5B,EAAgBj5B,IAAQk5B,EAAcl5B,QAG9D,CAAE5F,UAAU,IAGdxE,mBAAe0iC,QAAa,IAC1B1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPrV,QAAW,IACT9lC,KAAKk7C,gBAAgB3V,cAAcrkC,MACjC8D,OAAI,IAAMm2C,UACVjY,OAAW,KAAMC,QAAGgY,cAM5Bn7C,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPn2C,OAAI,IAAMm2C,WAIdn7C,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPn2C,OAAI,IAAMm2C,WAIdn7C,0BAAsB0iC,QAAa,IACjC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOwY,QACPn2C,OAAI,KAAM6vB,QAAqB,CAAExM,MAAO,qEAnIjC4yB,GAAep7C,2EAAfo7C,EAAehkC,QAAfgkC,EAAe,YAAfA,GAAb,GCdA,YAAW7U,GAAG,QAAQyN,GAAEyH,UAAUn2C,OAAOo2C,GAAEC,MAAM3H,GAAE,EAAEA,GAAE,EAAE,GAAGryC,GAAE,EAAEA,GAAEqyC,GAAEryC,KAAI+5C,GAAE/5C,GAAE,GAAG85C,UAAU95C,IAAkJ,MAAMi6C,MAAM,8BAA8BrV,GAAGmV,GAAEp2C,OAAO,IAAIo2C,GAAEv2C,IAAK,SAASohC,IAAG,MAAM,IAAIA,GAAE,MAAOiO,KAAK,KAAK,IAAI,oDAAoD,YAAWjO,GAAG,QAAQA,KAAKA,EAAEsV,IAAG,YAAWtV,GAAG,IAAIyN,GAAE,QAAQzN,IAAI,SAASA,IAAG,IAAIA,IAAG,iBAAiBA,GAAE,OAAM,EAAG,IAAIyN,GAAE95B,OAAO4hC,eAAevV,IAAG,GAAG,UAAS,OAAM,EAAG,IAAImV,GAAExhC,OAAOgnB,eAAeriB,KAAKm1B,GAAE,gBAAgBA,GAAE9zC,YAAY,OAAOw7C,KAAIxhC,QAAQ,mBAAmBwhC,IAAGK,SAAS93C,SAAS4a,KAAK68B,MAAKM,GAAzO,CAA4OzV,IAAIoV,MAAMjV,QAAQH,MAAMA,EAAEnkC,QAAO,QAAQ4xC,GAAEzN,EAAErmC,mBAAc,YAAW,EAAO8zC,GAAE5xC,MAAKkY,GAAEisB,IAAI0V,GAAE1V,IAA8C,YAAWA,EAAEyN,GAAE0H,SAAG,IAASA,KAAIA,IAAE,GAAI,OAAMnV,IAAImV,GAAExhC,OAAOwnB,KAAKwa,IAAI3V,GAAG/pB,QAAS,SAAS7a,IAAG+5C,IAAG,iBAAiB/5C,IAAGqyC,GAAEryC,GAAE4kC,EAAE5kC,IAAG4kC,KAAMA,EAAE/pB,QAAS,SAASk/B,GAAE/5C,IAAG,OAAOqyC,GAAEryC,GAAE+5C,GAAEnV,KAAM,YAAWA,GAAG,IAAIyN,GAAEzN,EAAEsV,IAAG,OAAO7H,GAAEA,GAAE/hB,EAAE,EAAE+hB,GAAE/hB,EAAE,EAAE+hB,GAAE/hB,EAAE0pB,MAAMjV,QAAQH,GAAG,EAAEjsB,GAAEisB,GAAG,EAAE0V,GAAE1V,GAAG,EAAE,EAAE,YAAWA,EAAEyN,IAAG,OAAO,OAAMzN,GAAGA,EAAE4V,IAAInI,IAAG95B,OAAOkiC,UAAUlb,eAAeriB,KAAK0nB,EAAEyN,IAAiD,YAAWzN,EAAEyN,GAAE0H,IAAG,IAAI/5C,GAAEk3B,GAAE0N,GAAG,IAAI5kC,GAAE4kC,EAAExiC,IAAIiwC,GAAE0H,IAAG,OAAMnV,EAAE18B,IAAI6xC,IAAGnV,EAAEyN,IAAG0H,GAA0D,YAAWnV,GAAG,OAAO8V,IAAG9V,aAAal6B,IAAI,YAAWk6B,GAAG,OAAO+V,IAAG/V,aAAagW,IAAI,YAAWhW,GAAG,OAAOA,EAAE1N,GAAG0N,EAAEmV,EAAE,YAAWnV,GAAG,GAAGoV,MAAMjV,QAAQH,GAAG,OAAOoV,MAAMS,UAAU7H,MAAM11B,KAAK0nB,GAAG,IAAIyN,GAAE7O,GAAGoB,UAAUyN,GAAE6H,IAAG,QAAQH,GAAEQ,GAAGlI,IAAGryC,GAAE,EAAEA,GAAE+5C,GAAEp2C,OAAO3D,KAAI,CAAC,IAAIswB,GAAEypB,GAAE/5C,IAAGk3B,GAAEmb,GAAE/hB,KAAG,IAAK4G,GAAE2jB,WAAW3jB,GAAE2jB,UAAS,EAAG3jB,GAAE4jB,cAAa,IAAK5jB,GAAE3Y,KAAK2Y,GAAE90B,OAAOiwC,GAAE/hB,IAAG,CAACwqB,cAAa,EAAGD,UAAS,EAAGE,WAAW7jB,GAAE6jB,WAAW5/B,MAAMypB,EAAEtU,MAAK,OAAO/X,OAAOyiC,OAAOziC,OAAO4hC,eAAevV,GAAGyN,IAAG,YAAWzN,EAAE5kC,IAAG,YAAO,SAAaA,IAAE,GAAIi7C,GAAErW,IAAIyN,GAAEzN,KAAKmV,GAAEnV,KAAK1N,GAAE0N,GAAG,IAAIA,EAAExiC,IAAIwiC,EAAE18B,IAAI08B,EAAE7rB,MAAM6rB,EAAErE,OAAO2a,IAAG3iC,OAAO4iC,OAAOvW,GAAG5kC,IAAGswB,GAAEsU,EAAG,SAASA,GAAEyN,IAAG,OAAO+I,GAAE/I,IAAE,KAAM,IAAKzN,EAAE,cAAaA,GAAE,GAAG,YAAWA,GAAG,OAAO,SAAS,iBAAiBA,GAAGrsB,OAAO8iC,SAASzW,GAAG,YAAWyN,GAAG,IAAI0H,GAAEp0B,GAAG0sB,GAAG,OAAO0H,IAAGnV,GAAE,GAAGyN,GAAG0H,GAAmC,cAAa,OAAmDuB,GAAE,YAAW1W,EAAEyN,IAAGA,KAAItsC,GAAE,WAAW6+B,EAAEjpC,EAAE,GAAGipC,EAAEjsB,EAAE,GAAGisB,EAAE0V,EAAEjI,IAAG,YAAWzN,GAAG2W,GAAE3W,GAAGA,EAAE4W,EAAE3gC,QAAQ4gC,IAAG7W,EAAE4W,EAAE,KAAK,YAAW5W,GAAGA,IAAI0W,KAAIA,GAAE1W,EAAE8W,GAAG,YAAW9W,GAAG,OAAO0W,GAAE,CAACE,EAAE,GAAGE,EAAEJ,GAAEJ,EAAEtW,EAAE/oC,GAAE,EAAG8/C,EAAE,GAAG,YAAW/W,GAAG,IAAIyN,GAAEzN,EAAEsV,IAAG,IAAI7H,GAAE/hB,GAAG,OAAMA,EAAE+hB,GAAEtwB,IAAIswB,GAAEz1B,GAAE,EAAG,YAAWy1B,EAAEryC,IAAGA,GAAE27C,EAAE37C,GAAEw7C,EAAE73C,OAAO,IAAI2sB,GAAEtwB,GAAEw7C,EAAE,GAAGtkB,QAAE,OAAYmb,IAAI/hB,GAAE,OAAOtwB,GAAEk7C,EAAEK,GAAGx1C,GAAE,OAAO01C,EAAEz7C,GAAEqyC,EAAEnb,IAAGA,IAAG5G,GAAE4pB,IAAG/oC,IAAIyL,GAAE5c,IAAG4kC,GAAE,IAAImV,GAAE1H,KAAKA,EAAEuJ,GAAE57C,GAAEqyC,GAAGryC,GAAE07C,GAAGt1C,GAAEpG,GAAEqyC,IAAIryC,GAAErE,GAAGoK,GAAE,WAAW61C,EAAEtrB,GAAE4pB,IAAGH,EAAE1H,EAAEryC,GAAErE,EAAEqE,GAAE2Y,IAAI05B,EAAEuJ,GAAE57C,GAAEswB,GAAE,IAAI1T,GAAE5c,IAAGA,GAAErE,GAAGqE,GAAEs6C,EAAEt6C,GAAErE,EAAEqE,GAAE2Y,GAAG05B,IAAI3oB,GAAE2oB,OAAE,EAAO,YAAWzN,EAAEyN,GAAE0H,IAAG,GAAGkB,GAAE5I,IAAG,OAAOA,GAAE,IAAIryC,GAAEqyC,GAAE6H,IAAG,IAAIl6C,GAAE,OAAOswB,GAAE+hB,GAAG,SAAS/hB,GAAE4G,IAAG,OAAO2kB,GAAEjX,EAAE5kC,GAAEqyC,GAAE/hB,GAAE4G,GAAE6iB,MAAK,GAAI1H,GAAE,GAAGryC,GAAE67C,IAAIjX,EAAE,OAAOyN,GAAE,IAAIryC,GAAEmR,EAAE,OAAO/K,GAAEw+B,EAAE5kC,GAAE+5C,GAAE,GAAI/5C,GAAE+5C,EAAE,IAAI/5C,GAAE87C,EAAE,CAAC97C,GAAE87C,GAAE,EAAG97C,GAAE67C,EAAEF,IAAI,IAAIzkB,GAAE,OAAM5G,GAAG,OAAMA,EAAEtwB,GAAEk3B,EAAEwkB,GAAE17C,GAAE6kC,GAAG7kC,GAAEk3B,EAAEv7B,GAAEu7B,GAAEpxB,IAAE,EAAG,IAAI9F,GAAEswB,IAAI30B,GAAE,IAAIi/C,IAAI1jB,IAAGA,GAAEne,QAAQjT,IAAE,GAAIwqB,GAAE30B,GAAG,SAAS02C,GAAE/hB,IAAG,OAAOurB,GAAEjX,EAAE5kC,GAAEk3B,GAAEmb,GAAE/hB,GAAEypB,GAAEj0C,MAAMM,GAAEw+B,EAAE1N,IAAE,GAAI6iB,IAAGnV,EAAEjpC,GAAGoK,GAAE,WAAWg2C,EAAE/7C,GAAE+5C,GAAEnV,EAAEjpC,EAAEipC,EAAEjsB,GAAG,OAAO3Y,GAAEk3B,EAAE,YAAWl3B,EAAEswB,GAAE4G,GAAEpxB,GAAEgV,GAAEnC,GAAE2hC,IAAG,GAAoDjI,GAAEv3B,IAAG,CAAC,IAAI0gC,GAAEI,GAAE57C,EAAE8a,GAAEnC,IAAG2X,IAAG,OAAMA,IAAI30B,GAAE20B,GAAE0rB,EAAEl2C,IAAG6S,GAAEsjC,OAAOn2C,SAAG,GAAQ,GAAG8uC,GAAE1d,GAAEpxB,GAAE01C,KAAInJ,GAAEmJ,IAAG,OAAOx7C,EAAEnE,GAAE,OAAQy+C,IAAGpjB,GAAEhvB,IAAI4S,IAAG,GAAGi/B,GAAEj/B,MAAKmgC,GAAEngC,IAAG,CAAC,IAAI9a,EAAEk7C,EAAEgB,GAAGl8C,EAAE27C,EAAE,EAAE,OAAOC,GAAE57C,EAAE8a,IAAGwV,IAAGA,GAAEurB,EAAEH,GAAGt1C,GAAEpG,EAAE8a,KAAI,YAAW8pB,EAAEyN,GAAE0H,SAAG,IAASA,KAAIA,IAAE,IAAKnV,EAAE8W,GAAG9W,EAAEsW,EAAEgB,GAAGtX,EAAE/oC,GAAGu/C,GAAE/I,GAAE0H,IAAG,YAAWnV,EAAEyN,IAAG,IAAI0H,GAAEnV,EAAEsV,IAAG,OAAOH,GAAEyB,GAAEzB,IAAGnV,GAAGyN,IAAG,YAAWzN,EAAEyN,IAAG,GAAGA,MAAKzN,EAAE,QAAQmV,GAAExhC,OAAO4hC,eAAevV,GAAGmV,IAAG,CAAC,IAAI/5C,GAAEuY,OAAO4jC,yBAAyBpC,GAAE1H,IAAG,GAAGryC,GAAE,OAAOA,GAAE+5C,GAAExhC,OAAO4hC,eAAeJ,KAAI,YAAWnV,GAAGA,EAAEzzB,IAAIyzB,EAAEzzB,GAAE,EAAGyzB,EAAE8W,GAAG7W,GAAED,EAAE8W,IAAI,YAAW9W,GAAGA,EAAE1N,IAAI0N,EAAE1N,EAAEwkB,GAAE9W,EAAEmV,IAAI,YAAWnV,EAAEyN,GAAE0H,IAAG,IAAI/5C,GAAE2Y,GAAE05B,IAAGtsC,GAAE,UAAUid,EAAEqvB,GAAE0H,IAAGO,GAAEjI,IAAGtsC,GAAE,UAAUq2C,EAAE/J,GAAE0H,IAAGnV,EAAE2W,EAAE,SAAS3W,GAAEyN,IAAG,IAAI0H,GAAEC,MAAMjV,QAAQH,IAAG5kC,GAAE,CAACswB,EAAEypB,GAAE,EAAE,EAAE8B,EAAExJ,GAAEA,GAAEwJ,EAAEF,KAAIxqC,GAAE,EAAG2qC,GAAE,EAAGE,EAAE,GAAGN,EAAErJ,GAAE0H,EAAEnV,GAAEC,EAAE,KAAK3N,EAAE,KAAKnV,EAAE,KAAKs6B,GAAE,GAAI/rB,GAAEtwB,GAAEk3B,GAAE5rB,GAAGyuC,KAAIzpB,GAAE,CAACtwB,IAAGk3B,GAAE3O,IAAI,IAAI5sB,GAAE2gD,MAAMC,UAAUjsB,GAAE4G,IAAGpxB,GAAEnK,GAAE6gD,OAAO5H,GAAEj5C,GAAE8gD,MAAM,OAAOz8C,GAAE6kC,EAAE+P,GAAE50C,GAAE+hB,EAAEjc,GAAE8uC,GAA1M,CAA6MvC,GAAE0H,IAAGh0C,GAAE,OAAO+b,EAAEuwB,GAAE0H,IAAG,OAAOA,GAAEA,GAAE8B,EAAEF,MAAKH,EAAE9hC,KAAK1Z,IAAGA,GAAiQ,YAAW4kC,EAAEyN,IAAG,OAAOA,SAAQ,EAAE,OAAO,IAAI3nC,IAAIk6B,QAAQ,EAAE,OAAOoV,MAAM0C,KAAK9X,GAAG,OAAO8W,GAAE9W,GAA8tO,IAAIviB,GAAEi5B,GAAEqB,GAAE,oBAAoBC,QAAQ,iBAAiBA,OAAO,KAAKlC,GAAE,oBAAoBhwC,IAAIiwC,GAAE,oBAAoBC,IAAIiC,GAAE,oBAAoBP,YAAO,UAAeC,WAAW,oBAAoBO,QAAQpzB,GAAEizB,GAAEC,OAAOG,IAAI,mBAAmB16B,GAAE,IAAI,kBAAiB,EAAGA,IAAG5hB,GAAEk8C,GAAEC,OAAOG,IAAI,mBAAmB,qBAAqB7C,GAAEyC,GAAEC,OAAOG,IAAI,eAAe,iBAAy2D1C,IAAt1D,oBAAoBuC,QAAQA,OAA4zD,GAAGrkC,OAAOkiC,UAAUl8C,aAAYg8C,GAAG,oBAAoBuC,SAASA,QAAQE,QAAQF,QAAQE,aAAQ,WAAgBC,sBAAsB,SAASrY,GAAG,OAAOrsB,OAAO2kC,oBAAoBtY,GAAGqX,OAAO1jC,OAAO0kC,sBAAsBrY,KAAKrsB,OAAO2kC,oBAAoB1Z,GAAGjrB,OAAO4kC,2BAA2B,SAASvY,GAAG,IAAIyN,GAAE,GAAG,OAAOkI,GAAG3V,GAAG/pB,QAAS,SAASk/B,IAAG1H,GAAE0H,IAAGxhC,OAAO4jC,yBAAyBvX,EAAEmV,MAAM1H,IAAG1sB,GAAG,GAAGra,GAAG,CAACiT,IAAI,SAASqmB,EAAEyN,IAAG,GAAGA,KAAI6H,GAAE,OAAOtV,EAAE,IAAsCA,GAAW5kC,GAAEswB,GAA/CtwB,GAAEw7C,GAAE5W,GAAG,IAAIjpC,GAAEqE,GAAEqyC,IAAG,OAAgBzN,GAA2GA,GAA9FtU,GAAEwrB,GAA8F97C,GAAEqyC,KAAhF,UAAU/hB,GAAEA,GAAEnV,MAAM,QAAQnb,GAAEswB,GAAE/R,WAAM,YAAW,EAAOve,GAAEkd,KAAK0nB,GAAEC,QAAG,EAAe,IAAIvU,GAAEtwB,GAAEqyC,IAAG,OAAOzN,EAAEkX,IAAI/B,GAAEzpB,IAAGA,GAAEA,KAAI8sB,GAAExY,EAAEmV,EAAE1H,KAAIgL,GAAEzY,GAAGA,EAAE1N,EAAEmb,IAAG0J,GAAEnX,EAAEiX,EAAEX,EAAE5qB,GAAEsU,IAAItU,IAAGkqB,IAAI,SAAS5V,EAAEyN,IAAG,OAAOA,MAAKmJ,GAAE5W,IAAIoY,QAAQ,SAASpY,GAAG,OAAOkY,QAAQE,QAAQxB,GAAE5W,KAAKxiC,IAAI,SAASwiC,EAAEyN,GAAE0H,IAAG,IAAI/5C,GAAE87C,GAAEN,GAAE5W,GAAGyN,IAAG,GAAG,cAAQ,EAAOryC,GAAEoC,IAAI,OAAOpC,GAAEoC,IAAI8a,KAAK0nB,EAAEC,EAAEkV,KAAG,EAAG,IAAInV,EAAEzzB,EAAE,CAAC,IAAImf,GAAE8sB,GAAE5B,GAAE5W,GAAGyN,IAAGnb,GAAE,cAAQ,EAAO5G,GAAE4pB,IAAG,GAAGhjB,IAAGA,GAAE6iB,IAAIA,GAAE,OAAOnV,EAAE1N,EAAEmb,IAAG0H,GAAEnV,EAAEoX,EAAE3J,KAAG,GAAG,EAAG,GAA/va,YAAWzN,EAAEyN,IAAG,OAAOzN,IAAIyN,GAAE,OAAO,EAAEzN,GAAG,EAAEyN,GAAEzN,GAAGA,GAAGyN,IAAGA,GAA4sav3B,CAAEi/B,GAAEzpB,WAAK,IAASypB,IAAGp+C,GAAEipC,EAAEmV,EAAE1H,KAAI,OAAM,EAAGgL,GAAEzY,GAAGC,GAAED,GAAG,OAAOA,EAAE1N,EAAEmb,MAAK0H,UAAI,IAASA,IAAG1H,MAAKzN,EAAE1N,IAAIkI,OAAOke,MAAMvD,KAAI3a,OAAOke,MAAM1Y,EAAE1N,EAAEmb,OAAMzN,EAAE1N,EAAEmb,IAAG0H,GAAEnV,EAAEoX,EAAE3J,KAAG,IAAI,GAAIkL,eAAe,SAAS3Y,EAAEyN,IAAG,YAAO,OAAWzN,EAAEmV,EAAE1H,KAAIA,MAAKzN,EAAEmV,GAAGnV,EAAEoX,EAAE3J,KAAG,EAAGgL,GAAEzY,GAAGC,GAAED,WAAWA,EAAEoX,EAAE3J,IAAGzN,EAAE1N,UAAU0N,EAAE1N,EAAEmb,KAAG,GAAI8J,yBAAyB,SAASvX,EAAEyN,IAAG,IAAI0H,GAAEyB,GAAE5W,GAAG5kC,GAAE88C,QAAQX,yBAAyBpC,GAAE1H,IAAG,OAAOryC,IAAE,CAAC66C,UAAS,EAAGC,aAAa,MAAMxqB,GAAG,cAAayqB,WAAW/6C,GAAE+6C,WAAW5/B,MAAM4+B,GAAE1H,MAAOmL,eAAe,WAAW5Y,GAAE,KAAKuV,eAAe,SAASvV,GAAG,OAAOrsB,OAAO4hC,eAAevV,EAAEmV,IAAI0D,eAAe,WAAW7Y,GAAE,MAAMrc,GAAG,GAAG+H,GAAEhlB,GAAI,SAASs5B,EAAEyN,IAAG9pB,GAAGqc,GAAG,WAAW,OAAOkV,UAAU,GAAGA,UAAU,GAAG,GAAGzH,GAAEqL,MAAMl/C,KAAKs7C,cAAevxB,GAAGg1B,eAAe,SAASlL,EAAE0H,IAAG,OAAqExxB,GAAGnmB,IAAI8a,KAAK1e,KAAK6zC,EAAE0H,QAAE,IAASxxB,GAAGnmB,IAAI,SAASiwC,EAAE0H,GAAE/5C,IAAG,OAAmFsL,GAAGlJ,IAAI8a,KAAK1e,KAAK6zC,EAAE,GAAG0H,GAAE/5C,GAAEqyC,EAAE,KAAK,IAA47DnqB,GAAG,IAAx7D,WAAW,WAAWmqB,IAAG,IAAIryC,GAAExB,KAAKA,KAAK+8C,EAAEsB,GAAEr+C,KAAK09C,GAAE,EAAG19C,KAAKm/C,QAAQ,SAAStL,GAAE/hB,GAAE4G,IAAG,GAAG,mBAAmBmb,IAAG,mBAAmB/hB,GAAE,CAAC,IAAI30B,GAAE20B,GAAEA,GAAE+hB,GAAE,IAAIvsC,GAAE9F,GAAE,OAAO,SAAS4kC,IAAG,IAAIyN,GAAE7zC,UAAK,IAASomC,KAAIA,GAAEjpC,IAAG,QAAQo+C,GAAED,UAAUn2C,OAAO3D,GAAEg6C,MAAMD,GAAE,EAAEA,GAAE,EAAE,GAAG7iB,GAAE,EAAEA,GAAE6iB,GAAE7iB,KAAIl3B,GAAEk3B,GAAE,GAAG4iB,UAAU5iB,IAAG,OAAOpxB,GAAE63C,QAAQ/Y,GAAG,SAASA,IAAG,IAAImV,GAAE,OAAOA,GAAEzpB,IAAGpT,KAAKwgC,MAAM3D,GAAE,CAAC1H,GAAEzN,IAAGqX,OAAOj8C,QAAQ,IAAI40C,GAAE,GAAG,mBAAmBtkB,IAAGsU,GAAE,QAAG,QAAY,mBAAmB1N,IAAG0N,GAAE,GAAGmV,GAAE1H,IAAG,CAAC,IAAIv3B,GAAE8iC,GAAE59C,IAAG2Y,GAAEojC,GAAE/7C,GAAEqyC,QAAE,GAAQiI,IAAE,EAAG,IAAI1F,GAAEtkB,GAAE3X,IAAG2hC,IAAE,CAAoBx/B,CAApB,QAAWw/B,GAAE19B,GAAE9B,IAAGygC,GAAEzgC,IAAG,MAAM,oBAAoB+iC,SAASjJ,cAAaiJ,QAAQjJ,GAAEh5C,KAAM,SAASgpC,IAAG,OAAO7iB,GAAEjH,GAAEoc,IAAG/lB,GAAEyzB,GAAE9pB,KAAM,SAAS8pB,IAAG,MAAMhoB,GAAE9B,IAAG8pB,MAAM7iB,GAAEjH,GAAEoc,IAAG/lB,GAAEyjC,GAAE95B,KAAI,IAAIu3B,IAAG,iBAAiBA,GAAE,CAAC,QAAG,KAAUuC,GAAEtkB,GAAE+hB,OAAMuC,GAAEvC,IAAGuC,KAAIlrB,KAAIkrB,QAAE,GAAQ50C,GAAEk8C,GAAGd,GAAExG,IAAE,GAAI1d,GAAE,CAAC,IAAIskB,GAAE,GAAGE,GAAE,GAAG31C,GAAE,WAAW61C,EAAEvJ,GAAEuC,GAAE4G,GAAEE,IAAGxkB,GAAEskB,GAAEE,IAAG,OAAO9G,GAAEhQ,GAAE,GAAGyN,KAAI7zC,KAAKs/C,mBAAmB,SAASlZ,GAAEyN,IAAG,GAAG,mBAAmBzN,GAAE,OAAO,SAASyN,IAAG,QAAQ0H,GAAED,UAAUn2C,OAAO2sB,GAAE0pB,MAAMD,GAAE,EAAEA,GAAE,EAAE,GAAG7iB,GAAE,EAAEA,GAAE6iB,GAAE7iB,KAAI5G,GAAE4G,GAAE,GAAG4iB,UAAU5iB,IAAG,OAAOl3B,GAAE89C,mBAAmBzL,GAAG,SAASA,IAAG,OAAOzN,GAAE8Y,WAAM,EAAO,CAACrL,IAAG4J,OAAO3rB,QAAQ,IAAIypB,GAAEzpB,GAAE4G,GAAEl3B,GAAE29C,QAAQ/Y,GAAEyN,GAAG,SAASzN,GAAEyN,IAAG0H,GAAEnV,GAAEtU,GAAE+hB,KAAK,MAAM,oBAAoBwL,SAAS3mB,cAAa2mB,QAAQ3mB,GAAEt7B,KAAM,SAASgpC,IAAG,MAAM,CAACA,GAAEmV,GAAEzpB,MAAM,CAAC4G,GAAE6iB,GAAEzpB,KAAI,kBAAkB,MAAM+hB,QAAE,EAAOA,GAAE0L,aAAav/C,KAAKw/C,cAAc3L,GAAE0L,YAAY,kBAAkB,MAAM1L,QAAE,EAAOA,GAAE4L,aAAaz/C,KAAK0/C,cAAc7L,GAAE4L,YAAY,IAAI3tB,GAAEtwB,EAAEy6C,UAAU,OAAOnqB,GAAE6tB,YAAY,SAASn+C,IAAG+5C,GAAE/5C,KAAI4kC,GAAE,GAAGyN,GAAEryC,MAAKA,GAA3ga,YAAWA,GAAG,OAAOqyC,GAAEryC,IAAI4kC,GAAE,GAAG5kC,GAAG,YAAWqyC,IAAG,IAAI0H,GAAE1H,IAAG,OAAOA,GAAE,IAAIryC,GAAErE,GAAE02C,GAAE6H,IAAGp/B,GAAEoc,GAAEmb,IAAG,GAAG12C,GAAE,CAAC,IAAIA,GAAEwV,IAAIxV,GAAE20B,EAAE,IAAIvqB,GAAE,OAAOq4C,EAAEziD,KAAI,OAAOA,GAAEo+C,EAAEp+C,GAAEmgD,GAAE,EAAG97C,GAAEk8C,GAAE7J,GAAEv3B,IAAGnf,GAAEmgD,GAAE,OAAQ97C,GAAEk8C,GAAE7J,GAAEv3B,IAAG,OAAOwV,GAAEtwB,GAAG,SAASqyC,GAAE0H,IAAGp+C,IAA55F,YAAWipC,EAAEyN,IAAG,OAAO,OAAMzN,GAAGA,EAAErmB,IAAI8zB,IAAGzN,EAAEyN,IAAo3FvsC,CAAEnK,GAAEo+C,EAAE1H,MAAK0H,IAAGnF,GAAE50C,GAAEqyC,GAAEzN,GAAEmV,OAAO,OAAM,IAAIa,IAAI56C,IAAGA,GAAtN,CAAyNA,GAAixZg8C,CAAEh8C,KAAI,IAAIswB,GAAEstB,GAAEp/C,MAAM04B,GAAE6kB,GAAEv9C,KAAKwB,QAAE,GAAQ,OAAOk3B,GAAEgjB,IAAGmC,GAAE,EAAGd,GAAEjrB,IAAG4G,IAAG5G,GAAE+tB,YAAY,SAAShM,GAAE0H,IAAG,IAAiFzpB,IAA3E+hB,IAAGA,GAAE6H,KAA0E2B,EAAE,OAAO95B,GAAEuO,GAAEypB,IAAG5oC,QAAE,EAAOmf,KAAIA,GAAE4tB,cAAc,SAAStZ,IAAGpmC,KAAK09C,EAAEtX,IAAGtU,GAAE0tB,cAAc,SAAS3L,IAAGA,KAAIwK,IAAGjY,GAAE,IAAIpmC,KAAK+8C,EAAElJ,IAAG/hB,GAAEguB,aAAa,SAAS1Z,GAAEmV,IAAG,IAAI/5C,GAAE,IAAIA,GAAE+5C,GAAEp2C,OAAO,EAAE3D,IAAG,EAAEA,KAAI,CAAC,IAAIswB,GAAEypB,GAAE/5C,IAAG,GAAG,OAAMvE,KAAKkI,QAAQ,eAAc46C,GAAG,CAAC3Z,GAAEtU,GAAEnV,MAAM,OAAOnb,IAAE,IAAK+5C,GAAEA,GAAEnH,MAAM5yC,GAAE,IAAI,IAAIk3B,GAAEnxB,GAAE,WAAW4c,EAAE,OAAO0vB,GAAEzN,IAAG1N,GAAE0N,GAAEmV,IAAGv7C,KAAKm/C,QAAQ/Y,GAAG,SAASA,IAAG,OAAO1N,GAAE0N,GAAEmV,OAAO/5C,EAAh7D,IAA+7D8nB,GAAGI,GAAGy1B,QAAWz1B,GAAG41B,mBAAmB70B,KAAKf,IAAOA,GAAGg2B,cAAcj1B,KAAKf,IAAOA,GAAG81B,cAAc/0B,KAAKf,IAAOA,GAAGo2B,aAAar1B,KAAKf,IAAOA,GAAGi2B,YAAYl1B,KAAKf,IAAOA,GAAGm2B,YAAYp1B,KAAKf,IAAI,SAAeJ,GCI1ljB02B,GAA6B,CACxC5rB,SAAS,EACTF,kBAAkB,EAClBhS,UAAW,GACXoS,cAAe,GACfG,gBAAgB,EAChBlL,OAAQ,CACN/F,kBAAmB,OAIVy8B,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRvQ,uBACH,OAAOutB,QAEJvtB,oBACHytB,SAAM9rB,SAAU,EACT8rB,OAEJztB,2BACHytB,SAAMhsB,kBAAmB,EACzBgsB,EAAM9rB,SAAU,EAChB8rB,EAAMh+B,UAAYa,GAAOb,UAClBg+B,OAEJztB,2BACHytB,SAAMhsB,kBAAmB,EACzBgsB,EAAM9rB,SAAU,EACT8rB,OAEJztB,+BACHytB,SAAM5rB,cAAgBvR,GAAOuR,cACtB4rB,OAEJztB,iCACHytB,SAAM32B,OAAO/F,kBAAoBw8B,GAAaz2B,OAAO/F,kBAC9C08B,OAEJztB,wBACAA,mBACHytB,SAAMzrB,gBAAiB,EAChByrB,OAEJztB,+BACAA,0BACHytB,SAAMzrB,gBAAiB,EAChByrB,OAEJztB,uBACHytB,SAAM32B,OAAO/F,kBAAoBT,GAAOS,kBACxC08B,EAAMzrB,gBAAiB,EAChByrB,OAEJztB,+BACAA,0BACHytB,SAAMzrB,gBAAiB,EAChByrB,UAGP,SAEHF,IC9DUA,GAA0B,CACrC5rB,SAAS,EACThqB,MAAO,KACP+qB,YAAY,EACZI,eAAgB,CACdzM,cAAc,EACdq3B,WAAW,EACXp3B,eAAe,EACfG,WAAW,EACXk3B,eAAe,IAINH,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRtO,iBACHwrB,SAAMjrB,iBAAkB,EAExBirB,EAAM91C,MAAQ2Y,GAAO3Y,MACd81C,OAEJxrB,kBACHwrB,SAAMjrB,iBAAkB,EAExBirB,EAAM91C,MAAQ,KACP81C,OAEJxrB,YACHwrB,SAAMjrB,iBAAkB,EACxBirB,EAAM91C,MAAQ,KACd81C,EAAM3qB,eAAiByqB,GAAazqB,eAC7B2qB,OAEJxrB,0BACHwrB,SAAM3qB,eAAexS,GAAOsF,QAAS,EAC9B63B,OAEJxrB,oBAEH,YADAwrB,EAAM9rB,QAAUrR,GAAOqR,SACvB,KAEGM,wBAEH,YADAwrB,EAAMjrB,gBAAkBlS,GAAOkS,iBAC/B,QAGA,OAAOirB,IAEVF,IChDUA,GAA0B,CACrCja,MAAO,CACLjpB,MAAO,GACPujC,cAAc,GAEhBpa,eAAgB,CAAC,CAAE9xB,MAAO,YAAam0B,QAAS,KAChDgY,yBAAyB,EACzBC,YAAa,CACX/b,KAAM,KACN9J,WAAW,IAIFulB,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRvN,wBACHyqB,SAAMna,MAAMjpB,MAAQiG,GAAOijB,YACvBjjB,GAAOjG,MACP,IAAIojC,EAAMna,MAAMjpB,SAAUiG,GAAOjG,OACrCojC,EAAMna,MAAMsa,aAAet9B,GAAOijB,YAC9Bga,GAAaja,MAAMsa,aACnBt9B,GAAOjG,MAAM3X,OAAS4d,GAAOqL,SAC1B8xB,OAEJzqB,iBACHyqB,SAAMna,MAAQia,GAAaja,MACpBma,OAEJzqB,0BAEH,YADAyqB,EAAMI,yBAA0B,GAChC,KAEG7qB,iCACHyqB,SAAMI,yBAA0B,EAChCJ,EAAMja,eAAiB,IAAI+Z,GAAa/Z,kBAAmBljB,GAAOkjB,gBAC3Dia,OAEJzqB,iCAEH,YADAyqB,EAAMI,yBAA0B,GAChC,KAEG7qB,uBACHyqB,SAAMK,YAAY7lB,WAAY,EACvBwlB,OAEJzqB,8BACHyqB,SAAMK,YAAY7lB,WAAY,EAC9BwlB,EAAMK,YAAY/b,KAAOzhB,GAAOyhB,KACzB0b,OAEJzqB,8BACHyqB,SAAMK,YAAY7lB,WAAY,EACvBwlB,OAEJzqB,uBACHyqB,SAAMK,YAAcP,GAAaO,YAC1BL,UAGP,OAAOA,IAEVF,IC7DUA,GAA0B,CACrC5rB,SAAS,EACTyE,uBAAuB,EACvBnd,KAAM,KACN6N,OAAQ,CACNgP,iBAAkB,CAChBnE,SAAS,EACTosB,KAAM,QAKCP,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACR3M,0BACAA,iBACH,OAAO2pB,QAEJ3pB,uBACH6pB,SAAMxkC,KAAOqH,GAAOrH,KACbwkC,OAEJ7pB,sBAEH,YADA6pB,EAAM9rB,SAAU,GAChB,KAEGiC,6BACH6pB,SAAMxkC,KAAOqH,GAAOrH,KACpBwkC,EAAM9rB,SAAU,EACT8rB,OAEJ7pB,6BAEH,YADA6pB,EAAM9rB,SAAU,GAChB,KAEGiC,gBACH6pB,SAAM32B,OAAOgP,iBAAiBioB,KAAO,KACrCN,EAAM32B,OAAOgP,iBAAiBnE,SAAU,EACjC8rB,OAEJ7pB,uBACH6pB,SAAM32B,OAAOgP,iBAAiBioB,KAAOz9B,GAAOW,QAC5Cw8B,EAAM32B,OAAOgP,iBAAiBnE,SAAU,EACjC8rB,OAEJ7pB,uBACH6pB,SAAM32B,OAAOgP,iBAAiBnE,SAAU,EACjC8rB,OAEJ7pB,qBAEH,YADA6pB,EAAM9rB,SAAU,GAChB,KAEGiC,4BACH6pB,SAAMxkC,KAAOqH,GAAOrH,KACpBwkC,EAAM9rB,SAAU,EACT8rB,OAEJ7pB,4BAEH,YADA6pB,EAAM9rB,SAAU,GAChB,KAEGiC,+BACH6pB,SAAM32B,OAAOgP,iBAAiBioB,KAAOz9B,GAAOW,QAC5Cw8B,EAAM32B,OAAOgP,iBAAiBnE,SAAU,EACjC8rB,OAEJ7pB,0CAEH,YADA6pB,EAAMxkC,KAAK8rB,gBAAkBzkB,GAAOykB,iBACpC,KAEGnR,qBAEH,YADA6pB,EAAMrnB,uBAAwB,GAC9B,KAEGxC,4BACH6pB,SAAMxkC,KAAOqH,GAAOrH,KACpBwkC,EAAMrnB,uBAAwB,EACvBqnB,OAEJ7pB,4BACH6pB,SAAMrnB,uBAAwB,EACvBqnB,UAGP,OAAOA,IAEVF,ICtFUA,GAA8B,CACzC55B,aAAc,KACdiU,gBAAgB,EAChB7Q,kBAAmB,CACjBhG,kBAAmB,MAErB8X,YAAa,KACbF,iBAAkB,KAClBZ,WAAY,CACVimB,cAAc,EACdzlB,0BAA2B,MAE7BvR,oBAAqB,CACnBzC,eAAgB,MAElBkU,cAAc,EACdR,WAAW,EACXE,oBAAa7kB,qBACb+kB,8BAA8B,GAGnBmlB,GAAUd,GAAQ,CAACe,EAAOn9B,aACrC,OAAQA,GAAOigB,WACRlK,yBAEH,YADAonB,EAAMxlB,WAAY,GAClB,KAEG5B,gCAIH,OAHAonB,EAAM95B,aAAerD,GAAOqD,aAC5B85B,EAAM7lB,gBAAiB,OACvB6lB,EAAMxlB,WAAY,GAClB,KAEG5B,gCAKH,OAJI/V,GAAO3Y,MAAM+2B,YACf+e,EAAM9kB,iBAAmBrY,GAAO3Y,MAAM+2B,gBAExC+e,EAAMxlB,WAAY,GAClB,KAEG5B,+BAEH,YADAonB,EAAMxlB,WAAY,GAClB,KAEG5B,yBACH,OAAOknB,QAEJlnB,0BACHonB,SAAM7lB,gBAAiB,EAChB6lB,OAEJpnB,gCAEH,YADAonB,EAAM12B,kBAAkBhG,kBAAoBT,GAAOS,mBACnD,KAEGsV,0CAEH,YADAonB,EAAM12B,kBAAoBw2B,GAAax2B,mBACvC,KAEGsP,8BAEH,YADAonB,EAAMz2B,oBAAoBzC,eAAiBjE,GAAOiE,gBAClD,KAEG8R,+BAEH,YADAonB,EAAMz2B,oBAAsBu2B,GAAav2B,qBACzC,KAEGqP,uBAEH,YADAonB,EAAMhlB,cAAe,GACrB,KAEGpC,8BAGH,OAFAonB,EAAM1lB,WAAWimB,cAAe,OAChCP,EAAMhlB,cAAe,GACrB,KAEGpC,8BAGH,OAFAonB,EAAM1lB,WAAWQ,0BAAwC,QAAZ0lB,MAAOt2C,aAAKhI,iBAAE++B,eAC3D+e,EAAMhlB,cAAe,GACrB,KAEGpC,sBAIH,OAHAonB,EAAM1lB,WAAWQ,0BACfglB,GAAaxlB,WAAWQ,+BAC1BklB,EAAMhlB,aAAe8kB,GAAa9kB,cAClC,KAEGpC,sBAEH,YADAonB,EAAM1lB,WAAWimB,cAAe,GAChC,KAEG3nB,qBAEH,YADAonB,EAAMtlB,YAAc7X,GAAO6X,aAC3B,KAEG9B,gCACHonB,SAAMplB,8BAA+B,EAC9BolB,OAEJpnB,0BAEH,YADAonB,EAAM5kB,YAAcvY,GAAOuY,aAC3B,QAGA,OAAO4kB,IAEVF,IC3GUA,GAAwC,CACnDrX,mBAAoB,GACpBv+B,MAAO,KACPu2C,QAAS,GAGEV,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRzH,qCACH,MAAMqlB,GAAiC,IAAIV,EAAMvX,sBAAuB5lB,GAAOsmB,SAC/E6W,SAAMvX,mBAAqBiY,GAASrQ,KAAK,CAACjpC,GAAGC,KAAMD,GAAEu5C,gBAAkBt5C,GAAEs5C,iBACzEX,EAAMS,UACCT,OAEJ3kB,mCACH,OAAOykB,KAEVA,8BCbI,MAAMA,GAAgC,CAC3CjiB,kBAAmB,KACnBQ,gBAAgB,EAChBL,mBAAoB,KACpB/B,4BAA4B,EAC5B2C,0BAA0B,EAC1BH,0BAA0B,EAC1BK,4BAA4B,EAC5BP,yBAA0B,KAC1BS,uCAAwC1oB,gBACxCgoB,MAAO,KACPY,2BAA4BtzB,UAC5BsyB,iBAAkB,CAChBhK,SAAS,EACTkX,SAAS,EACTjN,QAAS,IAEXoB,gBAAgB,EAChBE,kCAAkC,GAGvBsgB,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRnH,8CACAA,wCAGH,OAFAqkB,EAAMhhB,uCAAyC1oB,qBAC/C0pC,EAAMvhB,0BAA2B,GACjC,KAEG9C,oCAOH,OANAqkB,EAAMlhB,4BAA6B,EACnCkhB,EAAMniB,kBAAoBhb,GAAOnZ,WACjCs2C,EAAM/jB,4BAA6B,EACnC+jB,EAAMvhB,0BAA2B,EACjCuhB,EAAMhhB,uCAAyC1oB,kBAC/C0pC,EAAMzgB,eAAiB1c,GAAOsnB,gBAC9B,KAEGxO,oCAMH,OALAqkB,EAAMlhB,4BAA6B,EACnCkhB,EAAM/jB,4BAA6B,EACnC+jB,EAAMhhB,uCAAyC1oB,YAC/C0pC,EAAMniB,kBAAoBiiB,GAAajiB,uBACvCmiB,EAAMzgB,gBAAiB,GACvB,KAEG5D,6BAKH,OAJAqkB,EAAMlhB,4BAA6B,EACnCkhB,EAAMniB,kBAAoBiiB,GAAajiB,kBACvCmiB,EAAM/jB,2BAA6BpZ,GAAOoZ,gCAC1C+jB,EAAM1hB,MAAQwhB,GAAaxhB,OAC3B,KAEG3C,kDAGH,YAFAqkB,EAAMhhB,uCACJ8gB,GAAa9gB,wCACf,KAEGrD,qCAGH,OAFAqkB,EAAMhiB,mBAAqBnb,GAAOnZ,gBAClCs2C,EAAMphB,0BAA2B,GACjC,KAEGjD,qCAEH,YADAqkB,EAAMphB,0BAA2B,GACjC,KAEGjD,8BAEH,YADAqkB,EAAMhiB,mBAAqB8hB,GAAa9hB,oBACxC,KAEGrC,wCAEH,YADAqkB,EAAMzgB,gBAAiB,GACvB,KAEG5D,+CAGH,OAFAqkB,EAAMniB,kBAAoBhb,GAAOnZ,gBACjCs2C,EAAMzgB,gBAAiB,GACvB,KAEG5D,+CAIH,OAHAqkB,EAAMhiB,mBAAqB8hB,GAAa9hB,mBACxCgiB,EAAMniB,kBAAoBiiB,GAAajiB,uBACvCmiB,EAAMzgB,gBAAiB,GACvB,KAEG5D,uBAGH,OAFAqkB,EAAM9hB,iBAAiBhK,SAAU,OACjC8rB,EAAM9hB,iBAAiBC,QAAU2hB,GAAa5hB,iBAAiBC,SAC/D,KAEGxC,qBAKH,OAJAqkB,EAAM9hB,iBAAiBhK,SAAU,OACC,IAA9BrR,GAAOW,QAAQyK,aACjB+xB,EAAM9hB,iBAAiBC,QAAU2hB,GAAa5hB,iBAAiBC,UAEjE,KAEGxC,iCACAA,8BAIH,OAHAqkB,EAAM9hB,iBAAiBhK,SAAU,EACjC8rB,EAAM9hB,iBAAiBC,QAAU,IAAI6hB,EAAM9hB,iBAAiBC,WAAYtb,GAAOsb,cAC/E6hB,EAAM9hB,iBAAiBkN,QAAUvoB,GAAOuoB,SACxC,KAEGzP,4BAEH,YADAqkB,EAAM9hB,iBAAiBhK,SAAU,GACjC,KAEGyH,8BAGH,OAFAqkB,EAAM9gB,2BAA6Brc,GAAO3Y,MAAMqlC,YAChDyQ,EAAM9hB,iBAAiBhK,SAAU,GACjC,KAEGyH,iCAEH,YADAqkB,EAAM9hB,iBAAmB4hB,GAAa5hB,kBACtC,KAEGvC,sCAEH,YADAqkB,EAAM9gB,2BAA6B4gB,GAAa5gB,4BAChD,KAEGvD,6BAEH,YADAqkB,EAAM3hB,gBAAiB,GACvB,KAEG1C,oCAKH,OAJAqkB,EAAMniB,kBAAkB94B,QAAU8d,GAAO9d,QACzCi7C,EAAM1hB,MAAQzb,GAAOwoB,cACrB2U,EAAM3hB,gBAAiB,OACvB2hB,EAAMzgB,gBAAiB,GACvB,KAEG5D,oCASH,OARAqkB,EAAM3hB,gBAAiB,EACvB2hB,EAAMzgB,gBAAiB,OAErB/hC,OAAOsgB,aAAaC,QAAQ/I,eAC5BxX,OAAO2D,SAASC,WAAa,IAAIP,kBAEjCm/C,EAAMvgB,kCAAmC,IAE3C,KAEG9D,gCAIH,OAHAqkB,EAAMniB,kBAAkB94B,QAAU+6C,GAAajiB,kBAAkB94B,QACjEi7C,EAAM3hB,eAAiByhB,GAAazhB,oBACpC2hB,EAAM1hB,MAAQwhB,GAAaxhB,OAC3B,KAEG3C,kBAEH,YADAqkB,EAAM1hB,MAAQzb,GAAOyb,OACrB,KAEG3C,4CAGH,OAFAqkB,EAAM1hB,MAAQwhB,GAAaxhB,WAC3B0hB,EAAMzhB,yBAA2BuhB,GAAavhB,0BAC9C,KAEG5C,iBAEH,YADAqkB,EAAM1hB,MAAQwhB,GAAaxhB,OAC3B,KAEG3C,qCAEH,YADAqkB,EAAMzhB,yBAA2B1b,GAAO0b,0BACxC,KAEG5C,mCAEH,YADAqkB,EAAMvhB,0BAA2B,GACjC,KAEG9C,+BAEH,YADAqkB,EAAMvhB,0BAA2B,GACjC,KAEG9C,wBAEH,YADAqkB,EAAMzgB,eAAiB1c,GAAO0c,gBAC9B,KAEG5D,4CAEH,YADAqkB,EAAMvgB,iCAAmCqgB,GAAargB,kCACtD,QAGA,SAEHqgB,mBC9LI,MAAMA,GAA+B,CAC1Cc,eAAgBlhB,eAGLqgB,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRnD,gBAEH,YADAqgB,EAAMY,eAAiBlhB,iBACvB,KAEGC,uBAEH,YADAqgB,EAAMY,eAAiBlhB,iBACvB,KAEGC,uBAEH,YADAqgB,EAAMY,eAAiBlhB,cACvB,KAEGC,0BACH,OAAOmgB,WAGP,SAEHA,ICZUC,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACR9C,qCACHggB,SAAMvf,mBAAqB5d,GAAO6pB,MAC3BsT,OAEJhgB,uCACHggB,SAAMrf,qBAAuB9d,GAAO6pB,MAC7BsT,OAEJhgB,4BACHggB,SAAM91C,MAAQ2Y,GAAO3Y,MACd81C,UAGP,OAAOA,IArB4B,CACvCvf,mBAAoB,KACpBE,qBAAsB,KACtBz2B,MAAO,OCDI41C,GAA8B,CACzCljC,MAAO,GACPujC,cAAc,EACdj2C,MAAO,MAGI61C,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACR+d,+BACHb,SAAMpjC,MAAQojC,EAAMpjC,MACjB2gC,OAAO16B,GAAOwqB,WACdgD,KAAK,CAACjpC,GAAGC,MAAO,IAAIpH,KAAKoH,GAAEy5C,cAAgB,IAAI7gD,KAAKmH,GAAE05C,cACzDd,EAAMG,aAAet9B,GAAOwqB,UAAUpoC,OAAS4d,GAAOqL,SAC/C8xB,OAEJa,8BACHb,SAAM91C,MAAQ2Y,GAAO3Y,MACd81C,OAEJa,yBACHb,SAAMpjC,MAAQkjC,GAAaljC,MAC3BojC,EAAMG,aAAeL,GAAaK,aAC3BH,UAGP,OAAOA,IAEVF,ICrCUiB,GAAoD,CAC/DhrC,0CACAA,wCACAA,wCACAA,uBCJWirC,GAA4C,CACvDjrC,sCACAA,0CACAA,0CACAA,0CACAA,kECDK,MAAM+pC,GAA2B,CACtC5rB,SAAS,EACT+sB,kBAAkB,EAClBC,aAAc,GACdC,eAAgB,GAChB13B,aAAc,KACd23B,oBAAgBn3C,EAChBo3C,iBAAiB,EACjBC,eAAgB,CACd/R,OAAQgS,aACRC,oBAAqB,KACrB7lC,iBAAkB,KAClBH,KAAM,KACNkzB,aAAc,GACdG,aAAc,IAEhB4S,kBAAmB,CACjBhB,QAAS,KACTlR,OAAQgS,aACRxS,eAAgB,KAChB2S,gBAAiB,KACjBC,mBAAoB,MAEtBC,qBAAsB,CACpBC,yBAA0B,CACxB/d,cAAe,KACfmM,eAAgB,GAChBE,eAAgB,GAChB2R,qBAAsB,IAExBC,mBAAoB,OAIXhC,GAAUd,GAAQ,CAACe,EAAOn9B,mBACrC,OAAQA,GAAOigB,WACRkf,6BACHhC,SAAMkB,aAAepB,GAAaoB,aAC3BlB,OAEJgC,wBAEH,YADAhC,EAAM9rB,SAAU,GAChB,KAEG8tB,+BAGH,OAFAhC,EAAM9rB,SAAU,OAChB8rB,EAAMkB,aAAer+B,GAAOW,SAC5B,KAEGw+B,+BAEH,YADAhC,EAAM9rB,SAAU,GAChB,KAEG8tB,0BAEH,YADAhC,EAAM9rB,SAAU,GAChB,KAEG8tB,iCAGH,OAFAhC,EAAM9rB,SAAU,OAChB8rB,EAAMmB,eAAiBt+B,GAAOW,SAC9B,KAEGw+B,iCAEH,YADAhC,EAAM9rB,SAAU,GAChB,KAEG8tB,6BACHhC,SAAMv2B,aAAeq2B,GAAar2B,aAC3Bu2B,OAEJgC,wBAGH,OAFAhC,EAAM9rB,SAAU,OAChB8rB,EAAMv2B,aAAeq2B,GAAar2B,cAClC,KAEGu4B,+BAGH,OAFAhC,EAAM9rB,SAAU,OAChB8rB,EAAMv2B,aAAe5G,GAAOW,SAC5B,KAEGw+B,+BAEH,YADAhC,EAAM9rB,SAAU,GAChB,KAEG8tB,+BACHhC,SAAMoB,eAAiBtB,GAAasB,eAC7BpB,OAEJgC,0BAGH,OAFAhC,EAAM9rB,SAAU,OAChB8rB,EAAMoB,eAAiBtB,GAAasB,gBACpC,KAEGY,iCAGH,OAFAhC,EAAM9rB,SAAU,OAChB8rB,EAAMoB,eAAiBv+B,GAAOW,SAC9B,KAEGw+B,iCAEH,YADAhC,EAAM9rB,SAAU,GAChB,KAEG8tB,kBAEH,YADAhC,EAAMsB,eAAe/R,OAASgS,iBAC9B,KAEGS,yBAIH,OAHAhC,EAAMsB,eAAe/R,OAASgS,aAC9BvB,EAAMsB,eAAe3lC,iBAAmBkH,GAAOW,QAAQ+H,SAASe,aAChE0zB,EAAMsB,eAAe9lC,KAAOqH,GAAOW,QAAQhI,MAC3C,KAEGwmC,yBAWH,OAVAhC,EAAMsB,eAAe/R,OAASgS,aAC9BvB,EAAMsB,eAAeE,oBAAwC,QAAlBhB,MAAOt2C,MAAMA,aAAKhI,iBAAE++B,UAC3D8f,YAAqD,QAAlBnX,MAAO1/B,MAAMA,aAAKqZ,iBAAE0d,aACzD+e,EAAMiB,kBAAmB,GAEvBD,YAA6C,QAAlBnX,MAAO3/B,MAAMA,aAAKuZ,iBAAEwd,aACjD+e,EAAMqB,iBAAkB,GAE1BrB,EAAMsB,eAAe5S,aAAe7rB,GAAO6rB,kBAC3CsR,EAAMsB,eAAezS,aAAehsB,GAAOgsB,cAC3C,KAEGmT,0BAEH,YADAhC,EAAMsB,eAAe/R,OAAS1sB,GAAO0sB,QACrC,KAEGyS,4BAGH,OAFAhC,EAAMsB,eAAe/R,OAASuQ,GAAawB,eAAe/R,YAC1DyQ,EAAMiB,iBAAmBnB,GAAamB,kBACtC,KAEGe,wCAGH,OAFAhC,EAAMiB,iBAAmBnB,GAAamB,sBACtCjB,EAAMsB,eAAeE,oBAAsB,MAC3C,KAEGQ,+BAEH,YADAhC,EAAMsB,eAAiBxB,GAAawB,gBACpC,KAEGU,4BAGH,OAFAhC,EAAMsB,eAAezS,aAAe,QACpCmR,EAAMsB,eAAe5S,aAAe,IACpC,KAEGsT,0BAGH,OAFAhC,EAAMyB,kBAAoB3B,GAAa2B,uBACvCzB,EAAM9rB,SAAU,GAChB,KAEG8tB,iCAIH,OAHAhC,EAAMyB,kBAAkBhB,SAAU,EAClCT,EAAMyB,kBAAkB1S,eAAiBlsB,GAAOksB,oBAChDiR,EAAM9rB,SAAU,GAChB,KAEG8tB,iCAIH,OAHAhC,EAAM9rB,SAAU,EAChB8rB,EAAMyB,kBAAkBhB,SAAU,OAClCT,EAAMyB,kBAAkBC,gBAAkB7+B,GAAO3Y,OACjD,KAEG83C,6BAIH,OAHAhC,EAAMyB,kBAAkBhB,QAAUX,GAAa2B,kBAAkBhB,QACjET,EAAMyB,kBAAkB1S,eAAiB+Q,GAAa2B,kBAAkB1S,oBACxEiR,EAAMyB,kBAAkBC,gBAAkB5B,GAAa2B,kBAAkBC,iBACzE,KAEGM,8BAEH,YADAhC,EAAMyB,kBAAkBE,mBAAqB9+B,GAAOW,SACpD,KAEGw+B,uBAGH,OAFAhC,EAAM9rB,SAAU,OAChB8rB,EAAMyB,kBAAkBlS,OAASgS,iBACjC,KAEGS,8BAGH,OAFAhC,EAAMyB,kBAAkBlS,OAASgS,kBACjCvB,EAAM9rB,SAAU,GAChB,KAEG8tB,8BAGH,OAFAhC,EAAMyB,kBAAkBlS,OAASgS,kBACjCvB,EAAM9rB,SAAU,GAChB,KAEG8tB,8BAGH,OAFAhC,EAAM4B,qBAAqBG,mBAAqB,UAChD/B,EAAM9rB,SAAU,GAChB,KAEG8tB,iCAGH,OAFAhC,EAAM4B,qBAAqBC,yBAA2Bh/B,GAAOW,aAC7Dw8B,EAAM9rB,SAAU,GAChB,KAEG8tB,iCAGH,OAFAhC,EAAM4B,qBAAqBG,mBAAqBl/B,GAAO3Y,WACvD81C,EAAM9rB,SAAU,GAChB,KAEG8tB,2BAEH,YADAhC,EAAMqB,gBAAkBvB,GAAauB,iBACrC,QAGA,OAAOrB,IAEVF,ICrNUA,GAA6B,CACxC/nC,WAAY,KACZkqC,qBAAsB,KACtB/tB,SAAS,EACT2Q,YAAa,KACbqd,SAAU,GACVC,yBAA0B,KAC1BC,cAAc,EACd/d,eAAgB,CACdnQ,SAAS,EACTtX,MAAO,GACPylC,cAAc,IAILtC,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRwf,4BACAA,iCACH,OAAOtC,OAEJsC,8BACHtC,SAAMkC,SAAS12B,YAAc3I,GAAOW,QAAQgI,YAC5Cw0B,EAAMjoC,WAAa8K,GAAOW,QAAQzL,WAC3BioC,OAEJsC,wCACHtC,SAAMkC,SAAS12B,YAAc3I,GAAOW,QAAQgI,YAC5Cw0B,EAAMiC,qBAAuBp/B,GAAOW,QAAQzL,WACrCioC,OAEJsC,mCACAA,wCACH,OAAOtC,OAEJsC,2BACHtC,SAAMkC,SAAWpC,GAAaoC,SAC9BlC,EAAMoC,aAAetC,GAAasC,aAC3BpC,OAEJsC,0BAGH,OAFAtC,EAAM3b,eAAenQ,SAAU,OAC/B8rB,EAAM3b,eAAeznB,MAAQ,IAC7B,KAEG0lC,iCAGH,OAFAtC,EAAM3b,eAAenQ,SAAU,OAC/B8rB,EAAM3b,eAAeznB,MAAQiG,GAAOwhB,gBACpC,KAEGie,iCAEH,YADAtC,EAAM3b,eAAenQ,SAAU,GAC/B,KAEGouB,8BAGH,OAFAtC,EAAMnb,YAAchiB,GAAOW,aAC3Bw8B,EAAMoC,cAAe,GACrB,KAEGE,8BAGH,OAFAtC,EAAMnb,YAAcib,GAAajb,iBACjCmb,EAAMoC,cAAe,GACrB,KAEGE,2BAEH,YADAtC,EAAMkC,SAASzd,SAAW5hB,GAAOW,SACjC,KAEG8+B,uBAEH,YADAtC,EAAMnb,YAAcib,GAAajb,aACjC,KAEGyd,0BAEH,YADAtC,EAAM3b,eAAiByb,GAAazb,gBACpC,KAEGie,0BAGH,OAFAtC,EAAM3b,eAAenQ,SAAU,OAC/B8rB,EAAM3b,eAAege,cAAe,GACpC,KAEGC,iCAGH,OAFAtC,EAAM3b,eAAenQ,SAAU,OAC/B8rB,EAAMmC,yBAA2Bt/B,GAAOW,SACxC,KAEG8+B,iCAIH,OAHAtC,EAAM3b,eAAenQ,SAAU,EAC/B8rB,EAAMmC,yBzDqKN,YAA0Cj4C,GAM9C,MAAO,CACLk3B,UALAl3B,EAAM+2B,YAAclrB,yCAChB9J,IAA2Bk1B,EAAqDj3B,IAC/EA,EAAM+2B,UAIX/sB,QAAShK,EAAMo3B,aACf5W,GAAI,KACJ63B,aAAc,KACdz0B,MAAO,KACPoqB,OAAQ,KACRsK,KAAM,KACNC,QAAS,MyDnL0BC,CAAgC7/B,GAAO3Y,MAAMA,YAC9E81C,EAAM3b,eAAege,cAAe,GACpC,KAEGC,gCAGH,OAFAtC,EAAMmC,yBAA2BrC,GAAaqC,8BAC9CnC,EAAM3b,eAAege,aAAevC,GAAazb,eAAege,cAChE,KAEGC,mBACH,MAAMK,GAAW3C,EAAM3b,eAAeznB,MAAM9X,IAAKw/B,IAASzqB,+BACrDyqB,IAAI,CACPxB,KAAMwB,GAAK5Z,KAAO7H,GAAOiL,MAAQnY,aAA4BA,cAG/D,YADAqqC,EAAM3b,eAAeznB,MAAQ+lC,IAC7B,KAEGL,0BAKH,OAJAtC,EAAM3b,eAAenQ,SAAU,OAC/B8rB,EAAM3b,eAAeznB,MAAQojC,EAAM3b,eAAeznB,MAAMvb,OACrDijC,IAASA,GAAK5Z,KAAO7H,GAAOiL,QAE/B,KAEGw0B,uCAKH,YAJAtC,EAAMnb,YAAWhrB,+BACZmmC,EAAMnb,aAAW,CACpBqJ,MAAOrrB,GAAOW,WAEhB,KAEG8+B,uCAKH,KAEGA,yCAKH,YAJAtC,EAAMnb,YAAWhrB,+BACZmmC,EAAMnb,aAAW,CACpBqJ,MAAO,CAAE5hB,QAASzJ,GAAOW,QAAQo/B,kBAEnC,QAGA,OAAO5C,IAEVF,kBCzII,MAAMA,GAAmC,CAC9C5rB,SAAS,EACT2uB,eAAgB,GAChB1C,cAAc,GAGHJ,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRggB,8BACH,OAAOhD,QAEJgD,0BAGH,OAFA9C,EAAM6C,eAAiB/C,GAAa+C,oBACpC7C,EAAM9rB,SAAU,GAChB,KAEG4uB,8BAEH,YADA9C,EAAM9rB,SAAU,GAChB,KAEG4uB,iCAIH,OAHA9C,EAAM9rB,SAAU,EAChB8rB,EAAM6C,eAAiB,IAAI7C,EAAM6C,kBAAmBhgC,GAAOggC,qBAC3D7C,EAAMG,aAAet9B,GAAOggC,eAAe59C,OAAS4d,GAAOqL,UAC3D,KAEG40B,iCAEH,YADA9C,EAAM9rB,SAAU,GAChB,QAGA,OAAO8rB,IAEVF,ICjCUA,GAA6B,CACxC7M,YAAa,KACbD,SAAU,CACR9e,SAAS,EACTtX,MAAO,GACPujC,cAAc,GAEhB3M,SAAU,CACR52B,MAAO,GACPujC,cAAc,EACdjsB,SAAS,GAEX6uB,eAAgB,CACdvoB,WAAW,EACX8J,KAAM,KACNgD,gBAAiB,GACjB0b,eAAgB,GAChBtP,mBAAoB,IAEtBrqB,OAAQ,CACN45B,iBAAkB,MAEpBC,2BAA4B,CAC1BjoC,UAAW,CACT2B,MAAO,GACPsX,SAAS,GAEXivB,eAAgB,CACdvmC,MAAO,GACPsX,SAAS,GAEXkvB,eAAgB,CACdxmC,MAAO,GACPsX,SAAS,GAEXmvB,uBAAwB,CACtBzmC,MAAO,GACPsX,SAAS,KAKF6rB,GAAUd,GAAQ,CAACe,EAAOn9B,mBACrC,OAAQA,GAAOigB,WACRwgB,oBAEH,YADAtD,EAAMhN,SAAS9e,SAAU,GACzB,KAEGovB,2BACHtD,SAAMhN,SAASp2B,MAAQ,IAAIojC,EAAMhN,SAASp2B,SAAUiG,GAAOW,SAC3Dw8B,EAAM/M,YAAcpwB,GAAOowB,YAC3B+M,EAAMhN,SAASmN,aAAet9B,GAAOW,QAAQve,OAAS4d,GAAOqL,SAC7D8xB,EAAMhN,SAAS9e,SAAU,EAElB8rB,OAEJsD,2BAEH,YADAtD,EAAMhN,SAAS9e,SAAU,GACzB,KAEGovB,oBACHtD,SAAMhN,SAAW8M,GAAa9M,SAC9BgN,EAAM/M,YAAc6M,GAAa7M,YAC1B+M,OAEJsD,oBAKH,OAJAtD,EAAMxM,SAAStf,SAAU,OACC,IAAtBrR,GAAOoL,aACT+xB,EAAMxM,SAAS52B,MAAQkjC,GAAatM,SAAS52B,QAE/C,KAEG0mC,2BACHtD,SAAMxM,SAAS52B,MAAQ,IAAIojC,EAAMxM,SAAS52B,SAAUiG,GAAOW,SAC3Dw8B,EAAMxM,SAAS2M,aAAet9B,GAAOW,QAAQve,OAAS4d,GAAOqL,SAC7D8xB,EAAMxM,SAAStf,SAAU,EAClB8rB,OAEJsD,2BAEH,YADAtD,EAAMxM,SAAStf,SAAU,GACzB,KAEGovB,oBACHtD,SAAMxM,SAAWsM,GAAatM,SACvBwM,OAEJsD,0BACHtD,SAAM+C,eAAevoB,WAAY,EAC1BwlB,OAEJsD,iCACHtD,SAAM+C,eAAiB,CACrBze,KAAMzhB,GAAOhI,QACb2f,WAAW,EACX8M,gBAAiB,GACjB0b,eAAgB,GAChBtP,mBAAoB,IAEfsM,OAEJsD,iCACHtD,SAAM+C,eAAevoB,WAAY,EAC1BwlB,OAEJsD,0BACHtD,SAAM+C,eAAiBjD,GAAaiD,eAC7B/C,OAEJsD,4BACHtD,SAAM32B,OAAO45B,iBAAmB,KACzBjD,OAEJsD,mCACHtD,SAAM32B,OAAO45B,iBAAmBpgC,GAAOhI,QAChCmlC,OAEJsD,4BACHtD,SAAM32B,OAAO45B,iBAAmBnD,GAAaz2B,OAAO45B,iBAC7CjD,OAEJsD,yCACHtD,SAAM+C,eAAezb,gBAAkBzkB,GAAOykB,gBACvC0Y,OAEJsD,iCACHtD,SAAM+C,eAAeC,eAAiBngC,GAAO4wB,QACtCuM,OAEJsD,qCACHtD,SAAM+C,eAAerP,mBAAqB7wB,GAAO6wB,mBAC1CsM,OAEJsD,0CAEH,YADAtD,EAAMkD,2BAA2BjoC,UAAUiZ,SAAU,GACrD,KAEGovB,iDACHtD,SAAMkD,2BAA2BjoC,UAAU2B,MAAQiG,GAAOW,QAC1Dw8B,EAAMkD,2BAA2BjoC,UAAUiZ,SAAU,EAC9C8rB,OAEJsD,iDAEH,YADAtD,EAAMkD,2BAA2BjoC,UAAUiZ,SAAU,GACrD,KAEGovB,+CAEH,YADAtD,EAAMkD,2BAA2BC,eAAejvB,SAAU,GAC1D,KAEGovB,sDACHtD,SAAMkD,2BAA2BC,eAAevmC,MAAQiG,GAAOW,QAC/Dw8B,EAAMkD,2BAA2BC,eAAejvB,SAAU,EACnD8rB,OAEJsD,sDAEH,YADAtD,EAAMkD,2BAA2BC,eAAejvB,SAAU,GAC1D,KAEGovB,+CAEH,YADAtD,EAAMkD,2BAA2BE,eAAelvB,SAAU,GAC1D,KAEGovB,sDACHtD,SAAMkD,2BAA2BE,eAAexmC,MAAQiG,GAAOW,QAC/Dw8B,EAAMkD,2BAA2BE,eAAelvB,SAAU,EACnD8rB,OAEJsD,sDAEH,YADAtD,EAAMkD,2BAA2BE,eAAelvB,SAAU,GAC1D,KAEGovB,wCAEH,YADAtD,EAAMkD,2BAA2BG,uBAAuBnvB,SAAU,GAClE,KAEGovB,+CACHtD,SAAMkD,2BAA2BG,uBAAuBzmC,MAAQiG,GAAOW,QACvEw8B,EAAMkD,2BAA2BG,uBAAuBnvB,SAAU,EAC3D8rB,OAEJsD,+CAEH,YADAtD,EAAMkD,2BAA2BG,uBAAuBnvB,SAAU,GAClE,KAEGovB,sCACH,MAAM1xB,GAA8B,QAA1BgY,GAAoB,QAApB4W,KAAMuC,sBAAc7gD,iBAAEoiC,YAAI/gB,iBAAE2vB,OAAOqQ,UAC1CnQ,IAAUA,GAAM1oB,KAAO7H,GAAOwwB,SAMjC,YAHI2M,EAAM+C,eAAeze,KAAK4O,OAAOthB,MACnCouB,EAAM+C,eAAeze,KAAK4O,OAAOthB,IAAGgiB,UAAY/wB,GAAO+wB,YAEzD,KAEG0P,+CACH,MAAMjgC,GAAiC,QAA7BwmB,KAAMxgB,OAAO45B,wBAAgBx/B,iBAAEyvB,OAAOqQ,UAC7CnQ,IAAUA,GAAM1oB,KAAO7H,GAAOwwB,SAGjC,YADA2M,EAAM32B,OAAO45B,iBAAiB/P,OAAO7vB,IAAGuwB,UAAY/wB,GAAO+wB,WAC3D,QAGA,OAAOoM,IAEVF,IC5MUA,GAA4B,CACvCrM,QAAS,CACP72B,MAAO,GACPujC,cAAc,GAEhBpM,iBAAkB,CAAC,CAAE9/B,MAAO7T,aAAsBA,CAAEgoC,QAAS,KAC7Dob,2BAA2B,EAC3BC,cAAe,CACbnf,KAAM,KACN9J,WAAW,EACX8M,gBAAiB,GACjBoc,gBAAiB,IAEnBC,YAAa,CACXzvB,SAAS,EACTtX,MAAO,KAIEmjC,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACR8gB,0BACH5D,SAAMvM,QAAQ72B,MAAQiG,GAAOijB,YACzBjjB,GAAOjG,MACP,IAAIojC,EAAMvM,QAAQ72B,SAAUiG,GAAOjG,OACvCojC,EAAMvM,QAAQ0M,aAAet9B,GAAOijB,YAChCga,GAAarM,QAAQ0M,aACrBt9B,GAAOjG,MAAM3X,OAAS4d,GAAOqL,SAC1B8xB,OAEJ4D,mBACH5D,SAAMvM,QAAUqM,GAAarM,QACtBuM,OAEJ4D,4BAEH,YADA5D,EAAMwD,2BAA4B,GAClC,KAEGI,mCACH5D,SAAMwD,2BAA4B,EAClCxD,EAAMjM,iBAAmB,IAAI+L,GAAa/L,oBAAqBlxB,GAAOkxB,kBAC/DiM,OAEJ4D,mCAEH,YADA5D,EAAMwD,2BAA4B,GAClC,KAEGI,yBACH5D,SAAMyD,cAAcjpB,WAAY,EACzBwlB,OAEJ4D,gCACH5D,SAAMyD,cAAcjpB,WAAY,EAChCwlB,EAAMyD,cAAcnf,KAAOzhB,GAAOyhB,KAC3B0b,OAEJ4D,gCACH5D,SAAMyD,cAAcjpB,WAAY,EACzBwlB,OAEJ4D,wCACH5D,SAAMyD,cAAcnc,gBAAkBzkB,GAAOjG,MACtCojC,OAEJ4D,kCACH5D,SAAMyD,cAAcC,gBAAkB7gC,GAAOjG,MACtCojC,OAEJ4D,yBACH5D,SAAMyD,cAAgB3D,GAAa2D,cAC5BzD,OAEJ4D,uBAGH,OAFA5D,EAAM2D,YAAYzvB,SAAU,OAC5B8rB,EAAM2D,YAAY/mC,MAAQ,IAC1B,KAEGgnC,8BAGH,OAFA5D,EAAM2D,YAAYzvB,SAAU,OAC5B8rB,EAAM2D,YAAY/mC,MAAQiG,GAAOjG,OACjC,KAEGgnC,8BAEH,YADA5D,EAAM2D,YAAYzvB,SAAU,GAC5B,KAEG0vB,oBAEH,YADA5D,EAAM2D,YAAY/mC,MAAQojC,EAAM2D,YAAY/mC,MAAMvb,OAAQijC,IAASA,GAAK5Z,KAAO7H,GAAO6H,KACtF,QAGA,OAAOs1B,IAEVF,IC7FUA,GAA4B,CACvC5rB,SAAS,EACT8gB,cAAe,GACfvtB,cAAe,KACfo8B,iBAAiB,GAGN9D,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRghB,uBACH,OAAOhE,QAEJgE,yBAGH,OAFA9D,EAAM9rB,SAAU,OAChB8rB,EAAMhL,cAAgB8K,GAAa9K,eACnC,KAEG8O,gCAGH,OAFA9D,EAAM9rB,SAAU,OAChB8rB,EAAMhL,cAAgBnyB,GAAOmyB,eAC7B,KAEG8O,gCAEH,YADA9D,EAAM9rB,SAAU,GAChB,KAEG4vB,mBAGH,OAFA9D,EAAM9rB,SAAU,OAChB8rB,EAAM6D,iBAAkB,GACxB,KAEGC,0BAGH,OAFA9D,EAAM9rB,SAAU,OAChB8rB,EAAM6D,iBAAkB,GACxB,KAEGC,0BACH9D,EAAM9rB,SAAU,EAChB8rB,EAAM6D,iBAAkB,OAErBC,yBAGH,OAFA9D,EAAM9rB,SAAU,OAChB8rB,EAAMv4B,cAAgBq4B,GAAar4B,eACnC,KAEGq8B,gCAGH,OAFA9D,EAAM9rB,SAAU,OAChB8rB,EAAMv4B,cAAgB5E,GAAO4E,eAC7B,KAEGq8B,gCAEH,YADA9D,EAAM9rB,SAAU,GAChB,QAGA,OAAO8rB,IAEVF,ICxDUA,GAA4B,CACvC5rB,SAAS,EACT4hB,MAAO,EACPC,UAAW,GACXE,OAAQ,GACRkK,cAAc,GAGHJ,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRihB,uBACH,OAAOjE,QAEJiE,wBAMH,OALA/D,EAAM9rB,SAAU,OACZrR,GAAOijB,cACTka,EAAMjK,UAAY+J,GAAa/J,UAC/BiK,EAAMG,aAAeL,GAAaK,eAEpC,KAEG4D,+BAQH,OAPA/D,EAAM9rB,SAAU,EAChB8rB,EAAMlK,MAAQjzB,GAAOizB,MACrBkK,EAAMjK,UAAY,IAAIiK,EAAMjK,aAAclzB,GAAOkzB,WACjDiK,EAAMG,aAAet9B,GAAOkzB,UAAU9wC,OAAS4O,WAC1CgP,GAAOmzB,aACVgK,EAAM/J,OAASpzB,GAAOozB,SAExB,KAEG8N,+BAEH,YADA/D,EAAM9rB,SAAU,GAChB,QAGA,OAAO8rB,IAEVF,ICnCUC,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRkhB,mBAEH,YADAhE,EAAM9rB,SAAU,GAChB,KAEG8vB,+BACAA,0BAEH,YADAhE,EAAM9rB,SAAU,GAChB,QAGA,SAhBkC,CACtCA,SAAS,ICHE+vB,GAAgE,CAC3EhN,WAAY,GACZI,WAAW,EACX/H,oBAAqB,KACrB4U,cAAe,MCNV,IAAKC,GAKX,MALD,OAAYA,UAAqB,KAC/BA,YACAA,0CACAA,sCACAA,oBAJUA,GAAZ,IAAYA,GAKX,yBCUM,MAAMrE,GAAiC,CAC5C5rB,SAAS,EACTkwB,qBAAsB,CACpBC,uBAAwB,CACtBznC,MAAO,GACPwuB,SAAS,EACTlX,SAAS,EACTklB,mBAAoB,MAEtBkL,6BAA6B,EAC7B5M,yBAA0B,KAC1B6M,eAAe,EACfC,sBAAsB,EACtBC,2BAA4BnuC,gBAC5BouC,6BAA8B94C,WAEhC4c,uBAAwB,CACtBhF,QAAS,KACTmhC,iBAAkB,MAEpBC,sBAAuB,CACrBC,2BAA4B,KAC5BC,eAAe,EACf5M,OAAQ,IAEV6M,aAAc,CACZD,eAAe,EACf5M,OAAQ,IAEV8M,YAAa,CACXC,uBAAwB,CACtBxM,aAAc,KACdyM,cAAe,EACZlvC,aAAyB,MACzBA,WAAuB,OAG5B8uC,eAAe,EACf5M,OAAQ,IAEViN,oBAAqB,KACrBC,eAAgB,CACd3E,SAAS,EACTqE,eAAe,EACf5M,OAAQ,IAEVmN,YAAa,CACXC,aAAc,MAEhBC,cAAe,CACbC,iBAAkB,KAClBV,eAAe,EACf5M,OAAQ,IAEVzvB,gBAAiB,CACfg9B,mBAAoB,KACpB3/B,SAAU,KACVlE,YAAa,KACb82B,YAAa,GACbF,mBAAoB,KACpBkN,4BAA6BrvC,iBAC7BmP,YAAa,CACXxD,UAAW,GACXu2B,kBAAmB,KACnBnkB,cAAe,IAEjBuxB,0BAA0B,EAC1Bv2B,0BAA2B,KAC3BC,YAAa,KACbu2B,wBAAyB,KACzB9N,iBAAkB,KAClB+N,wBAAyB,KACzBl9B,uBAAwB,CACtBm9B,oBAAqB,KACrB/tC,WAAY,KACZ2iB,YAAa,KACbynB,yBAA0B,KAC1B4D,gBAAiB,CACfv6B,YAAa,MAEfw6B,4BAA6B,KAC7Bt9B,mBAAoB,CAClBqb,OAAQ,EACRjsB,MAAO,KACP4Z,SAAU,GACVu0B,iBAAkB,MAEpBxiB,SAAU,KACVyiB,6BAA8B,OAGlCC,gBAAgB,EAChBC,wBAAwB,EACxBC,6BAA6B,EAC7BC,uBAAwB,KACxBC,mBAAoB,GACpBC,kBAAkB,EAClBC,sBAAuB,KACvBC,2BAA4B,KAC5BC,2BAA2B,EAC3BC,wBAAwB,EACxBC,oBAAoB,EACpBC,oBAAoB,EACpBC,mBAAmB,GAGRhH,GAAUd,GAAQ,CAACe,EAAOn9B,8CACrC,OAAQA,GAAOigB,WACRkkB,wBAEH,YADAhH,EAAMoE,qBAAqBK,2BAA6BnuC,iBACxD,KAEG0wC,+BAIH,YAHAhH,EAAMoE,qBAAqBK,2BAA6B5hC,GAAOqlB,QAC3D5xB,aACAA,aACJ,KAEG0wC,+BAEH,YADAhH,EAAMoE,qBAAqBK,2BAA6BnuC,aACxD,KAEG0wC,+BAGH,YAFAhH,EAAMoE,qBAAqBK,2BACzB3E,GAAasE,qBAAqBK,4BACpC,KAEGuC,qBAEH,YADAhH,EAAMmG,eAAiBtjC,GAAOsjC,gBAC9B,KAEGa,mCAEH,YADAhH,EAAMoG,uBAAyBvjC,GAAOujC,wBACtC,KAEGY,+BAEH,YADAhH,EAAM8G,mBAAqBjkC,GAAOikC,oBAClC,KAEGE,2BAGH,OAFAhH,EAAMmG,gBAAiB,OACvBnG,EAAMoE,qBAAqB1M,yBAA2B70B,GAAOqb,kBAC7D,KAEG8oB,mCAEH,YADAhH,EAAMmG,gBAAiB,GACvB,KAEGa,qCAMH,OALAhH,EAAMmG,gBAAiB,OACvBnG,EAAMoE,qBAAqB1M,yBAA2B,CACpDuP,eAAgBpkC,GAAOqkC,KACvB74B,QAASxL,GAAOwL,UAElB,KAEG24B,4BAUH,OATAhH,EAAMoE,qBAAqBC,uBAAuBznC,MAAQ,IACrDojC,EAAMoE,qBAAqBC,uBAAuBznC,SAClDiG,GAAOjG,OAEZojC,EAAMoE,qBAAqBC,uBAAuBjZ,QAAUvoB,GAAOuoB,QACnE4U,EAAMoE,qBAAqBC,uBAAuBjL,oBAAqB,EACvE4G,EAAMoE,qBAAqBG,eAAgB,EAC3CvE,EAAMoE,qBAAqBI,sBAAuB,OAClDxE,EAAMmG,gBAAiB,GACvB,KAEGa,4BAKH,OAJAhH,EAAMoE,qBAAqBE,6BAA8B,EACzDtE,EAAMoE,qBAAqBG,eAAgB,EAC3CvE,EAAMoE,qBAAqBI,sBAAuB,OAClDxE,EAAMmG,gBAAiB,GACvB,KAEGa,8BAMH,OALAhH,EAAMmG,gBAAiB,OACvBnG,EAAMoE,qBAAqB1M,yBAA2B,CACpD7oB,QAAShM,GAAOK,QAAQ2L,QACxBR,QAASjwB,cAEX,KAEG4oD,sCAEH,YADAhH,EAAMmG,gBAAiB,GACvB,KAEGa,qCAiBH,OAXInP,SAAch1B,GAAO+f,IAAIhmB,MAAM,KACjCojC,EAAMv3B,gBAAgBg9B,mBAAqB5iC,GAAO+f,IAAIhmB,MAAM,IAE9DojC,EAAMoE,qBAAqBC,uBAAuBznC,MAAM5B,QACnD6H,GAAO+f,IAAIhmB,MAAMvb,OAAQijC,MAAWA,KAEzC0b,EAAMoE,qBAAqBC,uBAAuBjL,mBAChDv2B,GAAO+f,IAAIwW,mBACb4G,EAAMoE,qBAAqBC,uBAAuBjZ,QAAUvoB,GAAO+f,IAAIwI,QACvE4U,EAAMoE,qBAAqBG,eAAgB,OAC3CvE,EAAMmG,gBAAiB,GACvB,KAEGa,qCAGH,OAFAhH,EAAMoE,qBAAqBM,6BAA+B7hC,GAAO3Y,MAAMqlC,YACvEyQ,EAAMmG,gBAAiB,GACvB,KAEGa,4CAGH,YAFAhH,EAAMoE,qBAAqBM,6BACzB5E,GAAasE,qBAAqBM,8BACpC,KAEGsC,iCAEH,YADAhH,EAAM4E,sBAAwB9E,GAAa8E,uBAC3C,KAEGoC,iCAEH,YADAhH,EAAMoE,qBAAqBE,6BAA8B,GACzD,KAEG0C,0BAEH,YADAhH,EAAMoE,qBAAuBtE,GAAasE,sBAC1C,KAEG4C,4BAMH,YALIhH,EAAMoE,qBAAqBC,uBAAuBznC,MAAM3X,OAAS,IACnE+6C,EAAMoE,qBAAqBC,uBAAuBznC,MAChDojC,EAAMoE,qBAAqBC,uBAAuBznC,MAAMs3B,MAAM,EAAG,GACnE8L,EAAMoE,qBAAqBC,uBAAuBjZ,SAAU,IAE9D,KAEG4b,sCAEH,YADAhH,EAAMyG,sBAAwB5jC,GAAO+f,IAAIsF,SACzC,KAEG8e,oCAEH,YADAhH,EAAMyG,sBAAwB3G,GAAa2G,uBAC3C,KAEGO,4BAEH,YADAhH,EAAMv3B,gBAAgBqvB,iBAAmBgI,GAAar3B,gBAAgBqvB,kBACtE,KAEGkP,6BAEH,YADAhH,EAAMv3B,gBAAgBqvB,iBAAmBj1B,GAAOi1B,kBAChD,KAEGkP,wCAGH,OAFAhH,EAAMqG,4BAA8BxjC,GAAOskC,8BAC3CnH,EAAMv3B,gBAAgBqvB,iBAAmBj1B,GAAOi1B,kBAChD,KAEGkP,uCAEH,YADAhH,EAAMqG,4BAA8BvG,GAAauG,6BACjD,KAEGW,gCAMH,OALAhH,EAAMmG,gBAAiB,OACvBnG,EAAMv3B,gBAAgB3C,SAAQjM,+BACzBmmC,EAAMv3B,gBAAgB3C,UACtBjD,GAAOiD,WAEZ,KAEGkhC,uCASH,OARAhH,EAAMmG,gBAAiB,EACvBnG,EAAM+E,aAAa7M,OAASr1B,GAAOo1B,mBAAmBC,OACtD8H,EAAM+E,aAAaD,cAAgBjiC,GAAOo1B,mBAAmBZ,UAC7D2I,EAAMv3B,gBAAgB2G,0BACpBvM,GAAOo1B,mBAAmB7oB,+BACtBvM,GAAOo1B,mBAAmB5oB,cAC9B2wB,EAAMv3B,gBAAgB4G,YAAcxM,GAAOo1B,mBAAmB5oB,cAEhE,KAEG23B,uCAMH,OAL4B,QAAxBpd,GAAY,QAAZ4W,MAAOt2C,aAAKhI,iBAAE+0C,kBAAU1zB,iBAAEte,UAC5B+6C,EAAM+E,aAAa7M,OAAS,IAAIr1B,GAAO3Y,MAAM+sC,aAE/C+I,EAAM+E,aAAahO,WAAal0B,GAAO0sB,YACvCyQ,EAAMmG,gBAAiB,GACvB,KAEGa,wBAEH,YADAhH,EAAM+E,aAAejF,GAAaiF,cAClC,KAEGiC,+BAEH,YADAhH,EAAMv3B,gBAAgBg9B,mBAAqB5iC,GAAO4iC,oBAClD,KAEGuB,8BAEH,YADAhH,EAAMv3B,gBAAgBg9B,mBAAqB3F,GAAar3B,gBAAgBg9B,oBACxE,KAEGuB,gCACAA,iCAEH,YADAhH,EAAMmG,gBAAiB,GACvB,KAEGa,kCAGH,OAFAhH,EAAMgF,YAAYC,uBAAuBxM,aAAe51B,GAAO41B,kBAC/DuH,EAAMmG,gBAAiB,GACvB,KAEGa,kCAGH,OAFAhH,EAAMgF,YAAYjO,WAAal0B,GAAO0sB,YACtCyQ,EAAMmG,gBAAiB,GACvB,KAEGa,yBAIH,OAHAhH,EAAMgF,YAAYjO,WAAa+I,GAAakF,YAAYjO,gBACxDiJ,EAAMgF,YAAYC,uBAAuBxM,aACvCqH,GAAakF,YAAYC,uBAAuBxM,cAClD,KAEGuO,wCAIH,OAHAhH,EAAMgF,YAAYC,uBAAuBC,cAAcriC,GAAO0I,SAAS67B,iBACrEvkC,GAAO0I,SAAS87B,wBAClBrH,EAAMmG,gBAAiB,GACvB,KAEGa,wCAGH,OAFAhH,EAAMgF,YAAYjO,WAAal0B,GAAO0sB,YACtCyQ,EAAMmG,gBAAiB,GACvB,KAEGa,+BAIH,OAHAhH,EAAMgF,YAAYC,uBAAuBC,cAAcriC,GAAOukC,iBAC5DtH,GAAakF,YAAYC,uBAAuBC,cAAcriC,GAAOukC,sBACvEpH,EAAMgF,YAAYjO,WAAa+I,GAAakF,YAAYjO,YACxD,KAEGiQ,mCAGH,OAFAhH,EAAMmG,gBAAiB,OACvBnG,EAAMv3B,gBAAgB7G,YAAciB,GAAOjB,aAC3C,KAEGolC,0CAIH,OAHAhH,EAAMmG,gBAAiB,EACvBnG,EAAMgF,YAAY9M,OAASr1B,GAAOy1B,yBAAyBJ,YAC3D8H,EAAMgF,YAAYF,cAAgBjiC,GAAOy1B,yBAAyBjB,WAClE,KAEG2P,0CAMH,OAL4B,QAAxBM,GAAY,QAAZzd,MAAO3/B,aAAKuZ,iBAAEwzB,kBAAUpzB,iBAAE5e,UAC5B+6C,EAAMgF,YAAY9M,OAAS,IAAIr1B,GAAO3Y,MAAM+sC,aAE9C+I,EAAMgF,YAAYjO,WAAal0B,GAAO0sB,YACtCyQ,EAAMmG,gBAAiB,GACvB,KAEGa,uBAEH,YADAhH,EAAMgF,YAAclF,GAAakF,aACjC,KAEGgC,mCAKH,OAJAhH,EAAMmG,gBAAiB,EACvBnG,EAAMv3B,gBAAgBjD,YAAYxD,UAAYa,GAAOb,UACrDg+B,EAAMv3B,gBAAgBjD,YAAY+yB,kBAAoB11B,GAAO01B,uBAC7DyH,EAAM4E,sBAAsBC,4BAA6B,GACzD,KAEGmC,0CAIH,OAHAhH,EAAMmG,gBAAiB,EACvBnG,EAAM4E,sBAAsB1M,OAASr1B,GAAOy1B,yBAAyBJ,YACrE8H,EAAM4E,sBAAsBE,cAAgBjiC,GAAOy1B,yBAAyBjB,WAC5E,KAEG2P,0CAMH,OAL4B,QAAxBlf,GAAY,QAAZyf,MAAOr9C,aAAK6Z,iBAAEkzB,kBAAU/yB,iBAAEjf,UAC5B+6C,EAAM4E,sBAAsB1M,OAAS,IAAIr1B,GAAO3Y,MAAM+sC,aAExD+I,EAAM4E,sBAAsB7N,WAAal0B,GAAO0sB,YAChDyQ,EAAMmG,gBAAiB,GACvB,KAEGa,iBACH,IAAIQ,GAAkBxH,EAAMv3B,gBAAgBjD,YAAYxD,UAAUuW,KAC/DtW,IAAYA,GAAQw3B,cAAgB52B,GAAOZ,QAAQw3B,aAOtD,YALI+N,GACFA,GAAkB3kC,GAAOZ,QAEzB+9B,EAAMv3B,gBAAgBjD,YAAYxD,UAAUhH,KAAK6H,GAAOZ,UAE1D,KAEG+kC,gCAEH,YADAhH,EAAMv3B,gBAAgBjD,YAAY4O,cAAgBvR,GAAOuR,eACzD,KAEG4yB,6BAKH,OAJAhH,EAAMx3B,uBAAyB3F,GAAOS,kBACtC08B,EAAM4E,sBAAsBC,2BAC1BhiC,GAAOS,kBAAkBE,QAAQ0kB,aACnC8X,EAAMmG,eAAiBtjC,GAAOS,kBAAkBE,QAAQ0kB,SACxD,KAEG8e,6BAGH,OAFAhH,EAAMmG,gBAAiB,OACvBnG,EAAM4E,sBAAsBC,4BAA6B,GACzD,KAEGmC,2CAEH,YADAhH,EAAMx3B,uBAAuB0f,QAAUrlB,GAAOw0B,WAC9C,KAEG2P,kCAEH,YADAhH,EAAMx3B,uBAAyBs3B,GAAat3B,wBAC5C,KAEGw+B,qBAEH,YADAhH,EAAMv3B,gBAAgB3C,SAAS8zB,SAAW/2B,GAAO+2B,UACjD,KAEGoN,kCAEH,YADAhH,EAAM9rB,SAAU,GAChB,KAEG8yB,yCAMH,OALAhH,EAAM9rB,SAAU,EAChB8rB,EAAMv3B,gBAAgBiwB,YAAc71B,GAAO61B,iBACvC+O,QACFzH,EAAMv3B,gBAAgB+vB,mBAAqB31B,GAAO61B,YAAY,KAEhE,KAEGsO,yCAEH,YADAhH,EAAM9rB,SAAU,GAChB,KAEG8yB,sCAIH,YAHInkC,GAAO+f,MACTod,EAAMmF,oBAAsBtiC,GAAO+f,MAErC,KAEGokB,6CAIH,YAHInkC,GAAO+f,MACTod,EAAM0G,2BAA6B7jC,GAAO+f,MAE5C,KAEGokB,4CAIH,YAHInkC,GAAO+f,MACTod,EAAM2G,0BAA4B9jC,GAAO+f,MAE3C,KAEGokB,yCAIH,YAHInkC,GAAO+f,MACTod,EAAM4G,uBAAyB/jC,GAAO+f,MAExC,KAEGokB,6BAEH,YADAhH,EAAMv3B,gBAAgB+vB,mBAAmBvoB,iBAAmBpN,GAAOoN,kBACnE,KAEG+2B,oCAGH,YAFAhH,EAAMv3B,gBAAgB+vB,mBAAmBtoB,wBACvCrN,GAAOqN,yBACT,KAEG82B,0CAGH,OAFAhH,EAAMv3B,gBAAgB+vB,mBAAqB31B,GAAO21B,wBAClDwH,EAAMv3B,gBAAgBi9B,4BAA8B7iC,GAAO6iC,6BAC3D,KAEGsB,iDAIH,OAHAhH,EAAMmG,gBAAiB,EACvBnG,EAAMoF,eAAelN,OAASr1B,GAAOy1B,yBAAyBJ,YAC9D8H,EAAMoF,eAAeN,cAAgBjiC,GAAOy1B,yBAAyBjB,WACrE,KAEG2P,iDAMH,OAL4B,QAAxB/e,GAAY,QAAZnD,MAAO56B,aAAKka,iBAAE6yB,kBAAU1yB,iBAAEtf,UAC5B+6C,EAAMoF,eAAelN,OAAS,IAAIr1B,GAAO3Y,MAAM+sC,aAEjD+I,EAAMoF,eAAerO,WAAal0B,GAAO0sB,YACzCyQ,EAAMmG,gBAAiB,GACvB,KAEGa,gCAEH,YADAhH,EAAMoF,eAAiBtF,GAAasF,gBACpC,KAEG4B,uCAEH,YADAhH,EAAMoF,eAAe3E,SAAU,GAC/B,KAEGuG,uCAEH,YADAhH,EAAMoF,eAAerO,WAAal0B,GAAO3Y,MAAMqlC,QAC/C,KAEGyX,+BAEH,YADAhH,EAAMqF,YAAYC,aAAeziC,GAAO+f,KACxC,KAEGokB,wBAEH,YADAhH,EAAMqF,YAAYC,aAAexF,GAAauF,YAAYC,cAC1D,KAEG0B,0BAEH,YADAhH,EAAMoF,eAAiBtF,GAAasF,gBACpC,KAEG4B,qCAEH,YADAhH,EAAMv3B,gBAAgBk9B,yBAA2B9iC,GAAO8iC,0BACxD,KAEGqB,8BAIH,OAHAhH,EAAMv3B,gBAAgBE,uBAAuBo9B,gBAAgBv6B,YAC3D3I,GAAOW,QAAQgI,iBACjBw0B,EAAMv3B,gBAAgBE,uBAAuB5Q,WAAa8K,GAAOW,QAAQzL,YACzE,KAEGivC,uBAGH,YAFAhH,EAAMv3B,gBAAgBE,uBAAuBo9B,gBAAgBv6B,YAC3Ds0B,GAAar3B,gBAAgBE,uBAAuBo9B,gBAAgBv6B,aACtE,KAEGw7B,uBAEH,YADAhH,EAAMv3B,gBAAgBE,uBAAuB+R,YAAc7X,GAAO6X,aAClE,KAEGssB,2BACHhH,SAAMv3B,gBAAgBE,uBAAuBo9B,gBAAgBthB,SAC3D5hB,GAAOW,QAAQihB,SACVub,OAEJgH,8BACHhH,SAAMv3B,gBAAgBE,uBAAuBD,mBAAqB7F,GAAOW,QAClEw8B,OAEJgH,sCACHhH,SAAMv3B,gBAAgBE,uBAAuBm9B,oBAAsBjjC,GAAOW,QACnEw8B,OAEJgH,gCACHhH,SAAMv3B,gBAAgBE,uBAAuB8a,SAAW5gB,GAAO4gB,SACxDuc,OAEJgH,yBACHhH,SAAMv3B,gBAAgBE,uBAAuBm9B,oBAAsB,CACjE5X,MAAOrrB,GAAOW,SAETw8B,OAEJgH,yBACHhH,SAAMv3B,gBAAgBE,uBAAuBm9B,oBAAsB,CACjE5X,MAAOrrB,GAAO0I,UAETy0B,OAEJgH,yBAGIhH,KAEJgH,sCACHhH,SAAMv3B,gBAAgBE,uBAAuBm9B,oBAC3ChG,GAAar3B,gBAAgBE,uBAAuBm9B,oBAC/C9F,OAEJgH,iCACH,IAAI5lB,GACJ,OAIEA,GAHAve,GAAOW,QAAQkkC,uBACf7kC,GAAOW,QAAQkkC,wBAA0BvD,QAE7BthC,GAAOW,QAAQkkC,sBAEf7kC,GAAOW,QAAQ4d,UAE7B4e,EAAMv3B,gBAAgBE,uBAAuBw5B,yBAAwBtoC,+BAChEgJ,GAAOW,SAAO,CACjB4d,eAEK4e,OAEJgH,iCAGH,OAFAhH,EAAMv3B,gBAAgBE,uBAAuBw5B,yBAA2Bt/B,GAAO3Y,WAC/E81C,EAAMmG,gBAAiB,GACvB,KAEGa,yBACHhH,SAAMv3B,gBAAgBE,uBAAuBw5B,yBAC3CrC,GAAar3B,gBAAgBE,uBAAuBw5B,yBAC/CnC,OAEJgH,yCAGH,YAFAhH,EAAMv3B,gBAAgBE,uBAAuBu9B,6BAC3CrjC,GAAOqjC,8BACT,KAEGc,wCAGH,YAFAhH,EAAMv3B,gBAAgBE,uBAAuBu9B,6BAC3CpG,GAAar3B,gBAAgBE,uBAAuBu9B,8BACtD,KAEGc,oBAEH,YADAhH,EAAMmG,gBAAiB,GACvB,KAEGa,2BACHhH,SAAMv3B,gBAAgBE,uBAAuBq9B,4BAA8BnjC,GAAOW,QAClFw8B,EAAMv3B,gBAAgBE,uBAAuBD,mBAAmBgJ,SAAW7O,GAAOW,QAC/EkO,SACC7O,GAAOW,QAAQkO,SACfouB,GAAar3B,gBAAgBE,uBAAuBD,mBAAmBgJ,SAC3EsuB,EAAMmG,gBAAiB,EAChBnG,OAEJgH,2BAQH,OAPAhH,EAAMv3B,gBAAgBE,uBAAuBq9B,4BAA2BnsC,+BACnEgJ,GAAO3Y,OAAK,CACf+sC,WAAYp0B,GAAO3Y,MAAMA,MAAMguC,OAAOpzC,IAAKoF,IAAUA,GAAMy9C,gBAE7D3H,EAAMv3B,gBAAgBE,uBAAuBD,mBAAmBgJ,SAC9DouB,GAAar3B,gBAAgBE,uBAAuBD,mBAAmBgJ,cACzEsuB,EAAMmG,gBAAiB,GACvB,KAEGa,6BACHhH,SAAMv3B,gBAAgBE,uBAAuBD,mBAAmBu9B,mBAAmBpjC,GAChFW,QAAQkO,UACP7O,GAAOW,QAAQkO,SAAS4D,MAAOgP,KAAgC,IAAvBA,GAAKkW,eAE1CwF,OAEJgH,6BACHhH,SAAMv3B,gBAAgBE,uBAAuBD,mBAAmBu9B,kBAAmB,EACnFjG,EAAMmG,gBAAiB,EAChBnG,OAEJgH,0BACHhH,SAAMv3B,gBAAgBE,uBAAuBD,mBAAmBu9B,iBAC9DnG,GAAar3B,gBAAgBE,uBAAuBD,mBAAmBu9B,iBAClEjG,OAEJgH,uBAKH,OAJAhH,EAAMv3B,gBAAgBE,uBAAuBq9B,4BAC3ClG,GAAar3B,gBAAgBE,uBAAuBq9B,iCACtDhG,EAAMv3B,gBAAgBE,uBAAuBD,mBAC3Co3B,GAAar3B,gBAAgBE,uBAAuBD,oBACtD,KAEGs+B,uBAGH,YAFAhH,EAAMv3B,gBAAgBE,uBACpBm3B,GAAar3B,gBAAgBE,wBAC/B,KAEGq+B,yBAEH,YADAhH,EAAMuF,cAAgBzF,GAAayF,eACnC,KAEGyB,sBAIH,OAHAhH,EAAMuF,cAAgBzF,GAAayF,cACnCvF,EAAMmG,gBAAiB,OACvBnG,EAAMv3B,gBAAgB3C,SAAS7C,UAAYJ,GAAOI,WAClD,KAEG+jC,6BAIH,OAHAhH,EAAMuF,cAAcT,cAAgBjiC,GAAOy1B,yBAAyBjB,UACpE2I,EAAMuF,cAAcrN,OAASr1B,GAAOy1B,yBAAyBJ,YAC7D8H,EAAMmG,gBAAiB,GACvB,KAEGa,6BASH,OAR4B,QAAxBnkB,GAAY,QAAZ+kB,MAAO19C,aAAKsa,iBAAEyyB,kBAAUtyB,iBAAE1f,UAC5B+6C,EAAMuF,cAAcrN,OAAS,IAAIr1B,GAAO3Y,MAAM+sC,YAC1Cp0B,GAAO3Y,MAAM+sC,WAAWhvC,SAAS2M,yBACnCorC,EAAMuF,cAAcC,kBAAmB,IAG3CxF,EAAMuF,cAAcxO,WAAal0B,GAAO0sB,YACxCyQ,EAAMmG,gBAAiB,GACvB,KAEGa,uCAEH,YADAhH,EAAMuF,cAAcT,cAAgBjiC,GAAOiiC,eAC3C,KAEGkC,iCAEH,YADAhH,EAAMmG,gBAAiB,GACvB,KAEGa,wCAEH,YADAhH,EAAMv3B,gBAAgBm9B,wBAA0B/iC,GAAOW,SACvD,KAEGwjC,wCAKH,OAJAhH,EAAMv3B,gBAAgBm9B,yBACP,QAAb9W,GAAM,MAAN9N,QAAM,EAANA,GAAQ92B,aAAK0a,iBAAE1a,QAAS+5C,GAC1BjE,EAAMv3B,gBAAgBo/B,+BAAiChlC,GAAO3Y,MAAMqlC,YACpEyQ,EAAMmG,gBAAiB,GACvB,KAEGa,mCAKH,OAJAhH,EAAMv3B,gBAAgBm9B,wBACpB9F,GAAar3B,gBAAgBm9B,6BAC/B5F,EAAMv3B,gBAAgBo/B,+BACpB/H,GAAar3B,gBAAgBo/B,gCAC/B,KAEGb,uBAEH,YADAhH,EAAMmG,gBAAiB,GACvB,KAEGa,8BAMH,OALAhH,EAAMmG,gBAAiB,EACvBnG,EAAMv3B,gBAAgBo9B,wBAA0BhjC,GAAOW,aACnDskC,GAAuBjlC,GAAOW,QAAQyzB,cACxC+I,EAAM6G,oBAAqB,IAE7B,KAEGG,8BACH,MAAMnB,IAAuC,QAAbjX,GAAM,MAAN5N,QAAM,EAANA,GAAQ92B,aAAK6a,iBAAE7a,QAAS+5C,GAOxD,OANAjE,EAAMv3B,gBAAgBo9B,wBAA0BA,GAC5CiC,GAAuBjC,GAAwB5O,cACjD+I,EAAM6G,oBAAqB,GAE7B7G,EAAMv3B,gBAAgBo/B,+BAAiChlC,GAAO3Y,MAAMqlC,YACpEyQ,EAAMmG,gBAAiB,GACvB,KAEGa,gCAKH,OAJAhH,EAAMv3B,gBAAgBo9B,wBACpB/F,GAAar3B,gBAAgBo9B,6BAC/B7F,EAAMv3B,gBAAgBo/B,+BACpB/H,GAAar3B,gBAAgBo/B,gCAC/B,KAEGb,mCAEH,YADAhH,EAAMsG,uBAAyBzjC,GAAOklC,MACtC,KAEGf,qCAEH,YADAhH,EAAMuG,mBAAqB1jC,GAAOs2B,MAClC,KAEG6N,6BAEH,YADAhH,EAAMwG,iBAAmB3jC,GAAO2jC,kBAChC,KAEGQ,gCAEH,YADAhH,EAAM+G,kBAAoBlkC,GAAOmlC,wBACjC,KAEGhB,kCAEH,YADAhH,EAAM+G,kBAAoBjH,GAAaiH,mBACvC,KAEGC,+BACHhH,EAAMv3B,gBAAgBE,uBAAuBm9B,oBAC3ChG,GAAar3B,gBAAgBE,uBAAuBm9B,4BAGtD,SAEHhG,IC3wBUA,GAA0B,CACrC5rB,SAAS,EACT+zB,eAAe,EACftwC,KAAM,CACJK,UAAW,KACXC,SAAU,KACVH,MAAO,KACPI,YAAa,KACbgwC,sBAAsB,EACtBrO,aAAa,EACbsO,SAAS,EACTpd,0BAA2B,MAE7Bqd,4BAA6B,MAGlBrI,GAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACRulB,qBACH,OAAOvI,QAEJuI,qBACAA,mBACHrI,SAAM9rB,SAAU,EACT8rB,OAEJqI,uBACHrI,SAAM9rB,SAAU,EAChB8rB,EAAMiI,eAAgB,EACtBjI,EAAMroC,KAAIkC,6CACLmmC,EAAMroC,MACNkL,GAAOlL,MAAI,CACdO,YAAa2K,GAAOlL,KAAKO,YAAYg8B,OAAM,MAEtC8L,OAEJqI,iBACHrI,EAAM9rB,SAAU,EAChB8rB,EAAMiI,eAAgB,EACtB,MAAMC,GACJlI,EAAMroC,KAAKuwC,sBAAwBlI,EAAMroC,KAAKO,cAAgB2K,GAAOlL,KAAKO,YAC5E8nC,SAAMroC,KAAIkC,6CACLmmC,EAAMroC,MACNkL,GAAOlL,MAAI,CACduwC,0BAEKlI,OAEJqI,wBACHrI,SAAM9rB,SAAU,EAChB8rB,EAAMroC,KAAIkC,6CACLmmC,EAAMroC,MACNkL,GAAOlL,MAAI,CACdO,YAAa2K,GAAOlL,KAAKO,YAAYg8B,OAAM,MAEtC8L,OAEJqI,8BACHrI,SAAM9rB,SAAU,EACT8rB,OAEJqI,qCACHrI,SAAM9rB,SAAU,EAChB8rB,EAAMroC,KAAIkC,+BAAQmmC,EAAMroC,MAASkL,GAAOlL,MACjCqoC,OAEJqI,6BACAA,4BACAA,0CACAA,0BACHrI,SAAM9rB,SAAU,EACT8rB,OAEJqI,0BACHrI,SAAM9rB,SAAU,EAChB8rB,EAAMoI,4BAA8BvlC,GAAO3Y,MAAM+2B,UAC1C+e,OAEJqI,uCAEH,YADArI,EAAMoI,4BAA8BtI,GAAasI,6BACjD,QAGA,OAAOpI,IAEVF,ICrFUA,GAA6B,CACxC5rB,SAAS,EACTpc,MAAO,KACP4Z,SAAU,GACVgpB,cAAc,EACdxwC,MAAO,KACPo+C,cAAc,GAGHvI,GAAUd,GAAQ,CAACe,EAAOn9B,aACrC,OAAQA,GAAOigB,WACRylB,wBACH,OAAOzI,QAEJyI,oBAGH,OAFAvI,EAAM9rB,SAAU,OAChB8rB,EAAMtF,aAAeoF,GAAapF,cAClC,KAEG6N,qBAEH,YADAvI,EAAM9rB,SAAU,GAChB,KAEGq0B,iCACAA,6BAEH,YADAvI,EAAM9rB,SAAU,GAChB,KAEGq0B,2BAGH,OAFAvI,EAAM9rB,SAAU,OAChB8rB,EAAM91C,MAAQ,CAAEguC,OAAQr1B,GAAO3Y,MAAMguC,SACrC,KAEGqQ,sBAEH,YADAvI,EAAMloC,MAAQ+K,GAAO/K,OACrB,KAEGywC,0BAEH,YADAvI,EAAMtF,eACN,KAEG6N,4BAGH,OAFAvI,EAAM9rB,SAAU,OAChB8rB,EAAMtuB,SAAW7O,GAAO6O,UACxB,KAEG62B,yBAGH,OAFAvI,EAAM91C,MAAQ41C,GAAa51C,WAC3B81C,EAAMsI,cAAe,GACrB,KAEGC,yBAEH,YADAvI,EAAMsI,cAAe,GACrB,KAEGC,gCAEH,YADAvI,EAAMsI,cAAe,GACrB,KAEGC,gCAGH,OAFAvI,EAAMsI,cAAe,OACrBtI,EAAM91C,MAAoB,QAAZs2C,MAAOt2C,aAAKhI,iBAAEgI,OAC5B,QAGA,OAAO81C,IAEVF,mBClEI,MAIMC,EAAUd,GAAQ,CAACe,EAAOn9B,MAC7BA,GAAOigB,OACR0lB,sBACHxI,EAAMxf,YAAc3d,GAAO2d,YAI3B,EAXwC,CAC5CA,YAAahqB,iBCFFspC,EAA8B,CACzC5rB,SAAS,EACTgnB,cAAe,IAGJ6E,EAAUd,GAAQ,CAACe,EAAOn9B,MACrC,OAAQA,GAAOigB,WACR2lB,yBACH,OAAO3I,OAEJ2I,oBAEH,YADAzI,EAAM9rB,SAAU,GAChB,KAEGu0B,2BAGH,OAFAzI,EAAM9rB,SAAU,OAChB8rB,EAAM9E,cAAgBr4B,GAAOq4B,eAC7B,KAEGuN,2BAEH,YADAzI,EAAM9rB,SAAU,GAChB,KAEGu0B,gCACAA,gCAEH,YADAzI,EAAM9E,cAAgBr4B,GAAOs4B,iBAAiBD,eAC9C,QAGA,OAAO8E,IAEVF,iBClBI,IAAM4I,GAAb,MAAM,QAIJ7oD,YACU6rB,GACmBlsB,IADnBM,aACmBA,iBAL7BA,aAAkB1B,wBAOhB0B,KAAK8rB,SAAUC,QAAWrsB,IAG5BmpD,oBAAoBzlC,WAClB,MAAQpG,QAAmBoG,GAAX+I,IAAM,SAAK/I,GAArB,SACN,OAAOpjB,KAAK4rB,KAAK7L,IAAgC,GAAG/f,KAAKisB,sBAAsBjP,aAAe,CAC5FmP,OAAQ,IAAIC,KAAW,CACrBC,YAAYuC,SAAmB7U,+BAC1BoS,IAAM,CACTgC,WAA6B,QAAjB2b,MAAO3b,kBAAU/rB,iBAAE0B,WAC/BsqB,SAAUjC,GAAOiC,SAAStqB,kBAMlCglD,oBAAoB1lC,IAClB,OAAOpjB,KAAK4rB,KAAKgB,KAA4B,GAAG5sB,KAAKisB,4BAA6B7I,GAAS,CACzF+I,OAAQ,IAAIC,KAAW,CACrBC,WAAY,CAAEP,QAAS9rB,KAAK8rB,6DA3BvB88B,GAAoB/oD,kBAMrB8C,mCANCimD,EAAoB3xC,QAApB2xC,EAAoB,qBAFnB,SAEDA,GAAb,GCmFO,MAAMG,GAAU,CACrBnP,GACAzU,GACAsH,GACAU,GACAyF,GC7FF,MAAM,QAoGJ7yC,YACUsiC,GACAG,GACAwmB,GACA/kD,IAHAjE,iBACAA,eACAA,6BACAA,eAvGVA,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsmB,OACPpmB,QAAS,EAAGnf,cACV1jB,KAAKgpD,qBAAqBH,oBAAmB9uC,+BAAM2J,IAAO,CAAEyK,WAAY,KAAKjtB,MAC3E8D,OAAK89B,IACHmmB,MAAgD,CAC9ClG,eAAgBjgB,GAAIigB,eAAe/9C,IAAKkkD,IAAWnvC,+BAC9CmvC,IAAM,CACTzgB,KAAM6F,GAAuB4a,GAAOzgB,SAEtCra,SAAU1K,GAAQ0K,aAGtB8U,OAAW,KAAMC,QAAG8lB,cAM5BjpD,+BAA2B0iC,QAAa,IACtC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsmB,QACP1hB,QAAiB,IAAMvnC,KAAKiE,OAAOE,OAAOglD,QAC1C5nD,OAAO,EAAC,CAAG6nD,QAA6C,MAAnBA,QAAmB,EAAnB3B,GAAqBpH,gBAC1Dxd,QAAS,GAAInf,YAAW0lC,MACtBppD,KAAKgpD,qBACFH,oBAAmB9uC,+BACf2J,IAAO,CACVyK,WAAYgd,KAAKC,KAAKge,GAAoBrG,eAAe59C,OAASue,GAAQ0K,UAAY,KAEvFltB,MACC8D,OAAK89B,IACHmmB,MAAgD,CAC9ClG,eAAgBjgB,GAAIigB,eAAe/9C,IAAKkkD,IAAWnvC,+BAC9CmvC,IAAM,CACTzgB,KAAM6F,GAAuB4a,GAAOzgB,SAEtCra,SAAU1K,GAAQ0K,aAGtB8U,OAAW,KAAMC,QAAG8lB,cAM9BjpD,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsmB,QACP7lB,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,yBAAiCA,CAAEA,uBAAgCA,KAG3F,CAAEkE,UAAU,IAGdxE,2BAAuB0iC,QAAa,IAClC1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsmB,QACPpmB,QAAS,EAAGzf,cACVpjB,KAAKgpD,qBAAqBF,oBAAoB1lC,IAASliB,MACrD8D,OAAKqkD,IACHJ,MAAgD,CAC9CI,cAAatvC,+BACRsvC,IAAa,CAChB5gB,KAAM6F,GAAuB+a,GAAc5gB,YAIjDvF,OAAW,KAAMC,QAAG8lB,cAM5BjpD,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsmB,QACP7lB,OAAI,KACFpjC,KAAKwiC,OAAOmU,QAAQr2C,cAAuBA,CAAEA,SAAkBA,KAGrE,CAAEkE,UAAU,IAGdxE,kCAA8B0iC,QAC5B,IACE1iC,KAAKqiC,SAASnhC,MACZyhC,QAAOsmB,QACP7lB,OAAI,KACFpjC,KAAKwiC,OAAOp4B,MAAM9J,yBAAkCA,CAAEA,qBAA8BA,KAG1F,CAAEkE,UAAU,oDAjGH8kD,GAAoBzpD,4EAApBypD,EAAoBryC,QAApBqyC,EAAoB,YAApBA,GAAb,GD+FEpgB,GACApC,GACA1E,GACA6H,GACA8J,GACAkH,GACAtV,GACAsI,GACArG,GACA6N,GACAxH,GACAlC,GACA7H,GACAkT,GACAZ,GACAzB,GACAqF,IAGWmP,GAAuC,CAClDl0B,UAAWm0B,GACXC,wBAAyBC,GACzBC,YAAaC,GACbC,cAAeC,GACf5gC,UAAW6gC,GACXC,aAAcC,GACdC,mBAAoBC,GACpBhK,UAAWiK,GACXthC,aAAcuhC,GACdC,gBAAiBC,GACjBC,iBAAkBC,EAClBC,YAAaC,GACbvK,cAAewK,EACfC,UAAWC,GACX9hC,WAAY+hC,GACZhiC,cAAeiiC,GACfC,YAAaC,GACbC,eAAgBC,GAChBC,aAAcC,GACd7iC,iBAAkB8iC,GAClBC,WAAYC,GACZxiC,YAAayiC,GACbviC,aAAcwiC,IAOH7gC,GAAuE,EAAL,mGExJnEi2B,EAKX,MALD,OAAYA,QAAmB,KAC7BA,qDACAA,qEACAA,kEACAA,qEAJUA,EAAZ,IAAYA,GAKX,GAEM,MAAM6K,GAAqBj5B,QAChCouB,EAAoB6K,oBACpB94B,WAGW+4B,GAA2Bl5B,QACtCouB,EAAoB8K,0BACpB/4B,WAGWg5B,GAA0Bn5B,QACrCouB,EAAoB+K,yBACpBh5B,WAGWi5B,GAAqBp5B,QAAaouB,EAAoBgL,uQCvB5D,MAEMC,GAAqBl4B,QAFE,cAIvBm4B,GAAqBj4B,QAAeg4B,EAAqB3jC,GACpEA,EAAQA,EAAM+4B,aAAe,IAGlB8K,GAAuBl4B,QAAeg4B,EAAqB3jC,GACtEA,EAAQA,EAAMg5B,eAAiB,IAGpB8K,GAA0Bn4B,QAAeg4B,EAAqB3jC,KACzEA,GAAQA,EAAM+L,SAGHg4B,GAA4Bp4B,QAAeg4B,EAAqB3jC,KAC3EA,GAAQA,EAAM+L,SAGHi4B,GAAqBr4B,QAAeg4B,EAAqB3jC,GACpEA,EAAQA,EAAMsB,aAAe,MAGlB2iC,GAAuBt4B,QAAeg4B,EAAqB3jC,GACtEA,EAAQA,EAAMi5B,eAAiB,MAGpBiL,GAAuBv4B,QAAeg4B,EAAqB3jC,GACtEA,EAAQA,EAAMm5B,eAAiB,MAGpBgL,GAAmCx4B,QAC9Cg4B,EACC3jC,GAAuBA,EAAQA,EAAMs5B,kBAAkBhB,QAAU,MAGvD8L,GAAuBz4B,QAAeg4B,EAAqB3jC,GACtEA,EAAQA,EAAMs5B,kBAAkB1S,eAAiB,MAGtCyd,GAAyB14B,QAAeg4B,EAAqB3jC,GACxEA,EAAQA,EAAMs5B,kBAAkBlS,OAAS,MAG9Bkd,GAA2B34B,QAAeg4B,EAAqB3jC,GAC1EA,EAAQA,EAAMsB,aAAa6kB,QAAU,IAG1Boe,GAAkC54B,QAC7Cg4B,EACC3jC,GAAuBA,EAAQA,EAAMsB,aAAakjC,eAAiB,IAOzDC,IAJ6B94B,QAAeg4B,EAAqB3jC,GAC5EA,EAAQA,EAAMm5B,eAAe/R,OAAS,OAGHzb,QAAeg4B,EAAqB3jC,GACvEA,EAAQA,EAAMs5B,kBAAkBC,gBAAkB,OAGvCmL,GAAyB/4B,QAAeg4B,EAAqB3jC,KACxEA,GAAQA,EAAM84B,kBAGH6L,GAA4Bh5B,QAAeg4B,EAAqB3jC,GAC3EA,EAAQA,EAAMm5B,eAAeE,oBAAsB,MAGxCuL,GAA2Bj5B,QAAeg4B,EAAqB3jC,IAAqB,OAC/F,SAA+B,QAAvB9D,KAAMo9B,yBAAiBv/C,iBAAEy/C,mBAAqB,OAG3CqL,GAA0Bl5B,QAAeg4B,EAAqB3jC,GACzEA,EAAQA,EAAMm5B,eAAe5S,aAAe,IAGjCue,IAA0Bn5B,QAAeg4B,EAAqB3jC,GACzEA,EAAQA,EAAMm5B,eAAezS,aAAe,IAGjCqe,GAAiCp5B,QAC5Cg4B,EACC3jC,GAAuBA,EAAQA,EAAMy5B,qBAAqBC,yBAA2B,MAG3EsL,GAA4Br5B,QAAeg4B,EAAqB3jC,GAC3EA,EAAQA,EAAMy5B,qBAAqBG,mBAAqB,MAG7CqL,IAA6Bt5B,QAAeg4B,EAAqB3jC,KAC5EA,GAAQA,EAAMk5B,gBAAkB,gDCoF3B,IAAKE,EAKX,MALD,OAAYA,QAAoB,KAC9BA,uBACAA,+BACAA,yBACAA,yBAJUA,EAAZ,IAAYA,GAKX,EALWA,qaC5JAS,EAqDX,MArDD,OAAYA,SAAgB,KAC1BA,2DAEAA,mDACAA,kEACAA,kEAEAA,wDACAA,uEACAA,uEAEAA,8DAEAA,mDACAA,kEACAA,kEAEAA,mEAEAA,wDACAA,uEACAA,uEAEAA,sCACAA,qDACAA,qDACAA,kEACAA,wEACAA,0DACAA,uDACAA,2DAEAA,wDACAA,uEACAA,uEAEAA,iEAEAA,iDACAA,gEACAA,gEAEAA,8DAEAA,6CACAA,4DACAA,4DAEAA,gEACAA,2EACAA,2EAEAA,wDApDUA,EAAZ,IAAYA,IAqDX,GAEM,MAAMqL,GAAyB56B,QAAauvB,EAAiBqL,wBACvDvhC,GAAoB2G,QAAauvB,EAAiBl2B,mBAClDwhC,GAA2B76B,QACtCuvB,EAAiBsL,0BACjB16B,WAEW26B,GAA2B96B,QACtCuvB,EAAiBuL,0BACjB36B,WAGWxG,GAAsBqG,QAAauvB,EAAiB51B,qBACpDohC,GAA6B/6B,QACxCuvB,EAAiBwL,4BACjB56B,WAEW66B,GAA6Bh7B,QACxCuvB,EAAiByL,4BACjB76B,WAGW86B,GAAyBj7B,QAAauvB,EAAiB0L,wBACvDrhC,GAAoBoG,QAC/BuvB,EAAiB31B,mBACjBuG,WAEW+6B,GAA2Bl7B,QACtCuvB,EAAiB2L,0BACjB/6B,WAEWg7B,GAA2Bn7B,QACtCuvB,EAAiB4L,0BACjBh7B,WAGWi7B,GAA2Bp7B,QAAauvB,EAAiB6L,0BACzDthC,GAAsBkG,QACjCuvB,EAAiBz1B,qBACjBqG,WAEWk7B,GAA6Br7B,QACxCuvB,EAAiB8L,4BACjBl7B,WAEWm7B,GAA6Bt7B,QACxCuvB,EAAiB+L,4BACjBn7B,WAMWhG,GAAc6F,QACzBuvB,EAAiBp1B,aACjBgG,WAEWo7B,GAAqBv7B,QAChCuvB,EAAiBgM,oBACjBp7B,WAOWq7B,GAAqBx7B,QAChCuvB,EAAiBiM,oBACjBr7B,WAMWs7B,GAA2Bz7B,QAAauvB,EAAiBkM,0BACzDC,IAAwB17B,QACnCuvB,EAAiBoM,mCAENC,GAAwB57B,QAAauvB,EAAiBqM,uBACtDC,GAAsB77B,QACjCuvB,EAAiBsM,qBACjB17B,WAEW27B,IAAwB97B,QAAauvB,EAAiBuM,uBAKtD1hC,GAAsB4F,QACjCuvB,EAAiBn1B,qBACjB+F,WAEW47B,IAA6B/7B,QACxCuvB,EAAiBwM,4BACjB57B,WAEW67B,IAA6Bh8B,QACxCuvB,EAAiByM,4BACjB77B,WAMW87B,IAAyBj8B,QAAauvB,EAAiB0M,wBAKvDC,IAA0Bl8B,QACrCuvB,EAAiB2M,yBACjB/7B,WAMW9F,IAAmB2F,QAC9BuvB,EAAiBl1B,kBACjB8F,WAEWg8B,IAA0Bn8B,QACrCuvB,EAAiB4M,yBACjBh8B,WAIWi8B,IAA0Bp8B,QACrCuvB,EAAiB6M,yBACjBj8B,WAMW7F,IAAiB0F,QAC5BuvB,EAAiBj1B,gBACjB6F,WAGWk8B,IAAwBr8B,QAAauvB,EAAiB8M,uBAEtDC,IAAwBt8B,QACnCuvB,EAAiB+M,uBACjBn8B,WAMWo8B,IAA0Bv8B,QACrCuvB,EAAiBgN,yBACjBp8B,WAGWq8B,IAA6Bx8B,QACxCuvB,EAAiBiN,4BACjBr8B,WAGWs8B,IAA6Bz8B,QACxCuvB,EAAiBkN,4BACjBt8B,WAMWu8B,IAAuB18B,QAAauvB,EAAiBmN,2JClP3D,MAEMC,GAAuBx7B,QAFE,gBAIzBy7B,GAAoBv7B,QAAes7B,EAAuBjnC,IAAuB,MAC5F,SAAsB,QAAdq1B,IAAM0E,gBAAQhgD,eAAEspB,YAAc,KAG3B8jC,GAAmBx7B,QAAes7B,EAAuBjnC,GACpEA,EAAQA,EAAMpQ,WAAa,IAGhBw3C,GAA6Bz7B,QACxCs7B,EACCjnC,GAAyBA,EAAQA,EAAM85B,qBAAuB,IAGpDuN,GAA4B17B,QACvCs7B,EACCjnC,GAAyBA,EAAQA,EAAMkc,eAAiB,MAG9CorB,GAAoB37B,QAAes7B,EAAuBjnC,GACrEA,EAAQA,EAAM0c,YAAc,MAGjB6qB,GAAoC57B,QAC/Cs7B,EACCjnC,GAAyBA,EAAQA,EAAMg6B,yBAA2B,MAQxDwN,IALkC77B,QAC7Cs7B,EACCjnC,KAAyBA,GAAQA,EAAMkc,eAAege,eAGfvuB,QACxCs7B,EACCjnC,KAAyBA,GAAQA,EAAMkc,eAAenQ,UAG5C07B,GAAoB97B,QAAes7B,EAAuBjnC,IAAuB,QAC5F,SAAgC,QAAxBu2B,EAAiB,QAAjBlB,IAAM3Y,mBAAW3iC,eAAEgsC,aAAK3qB,eAAE+I,QAAU,OAGjCujC,GAAuB/7B,QAAes7B,EAAuBjnC,IAAuB,MAC/F,YAAQA,EAAM+L,UAA+B,QAApBspB,IAAMnZ,sBAAcniC,eAAEgyB,SAAU,kDCdpD,IAAKve,EAGX,MAHD,OAAYA,QAAiB,KAC3BA,kBACAA,sBAFUA,EAAZ,IAAYA,GAGX,EAHWA,6XChBA2sC,EA8CX,MA9CD,OAAYA,SAAkB,KAC5BA,gDACAA,kEACAA,kEAEAA,yEACAA,wFACAA,wFAEAA,4DAEAA,yDACAA,wEACAA,wEACAA,yDAEAA,mDACAA,kEACAA,kEACAA,mDACAA,4DAEAA,yDACAA,wEACAA,wEACAA,sEAEAA,0DACAA,yEACAA,yEAEAA,yDACAA,wEACAA,wEAEAA,sEACAA,qFACAA,qFAEAA,sEACAA,qFACAA,qFAEAA,2EACAA,0FACAA,0FA7CUA,EAAZ,IAAYA,IA8CX,GAKM,MAAM71B,GAAmBgG,QAC9B6vB,EAAmB71B,kBACnBmG,WAEWk9B,GAA0Br9B,QACrC6vB,EAAmBwN,yBACnBl9B,WAEWm9B,GAA0Bt9B,QACrC6vB,EAAmByN,yBACnBn9B,WAMWjG,GAA6B8F,QACxC6vB,EAAmB31B,4BACnBiG,WAEWo9B,GAAoCv9B,QAC/C6vB,EAAmB0N,mCACnBp9B,WAEWq9B,GAAoCx9B,QAC/C6vB,EAAmB2N,mCACnBr9B,WAGWs9B,GAAuBz9B,QAAa6vB,EAAmB4N,sBAKvD3sB,GAAsB9Q,QAAa6vB,EAAmB/e,qBACtD4sB,GAA6B19B,QACxC6vB,EAAmB6N,4BACnBv9B,WAEWw9B,GAA6B39B,QACxC6vB,EAAmB8N,4BACnBx9B,WAOWy9B,IALsB59B,QAAa6vB,EAAmBgO,sBAKnC79B,QAC9B6vB,EAAmB+N,kBACnBz9B,YAEW29B,GAA0B99B,QACrC6vB,EAAmBiO,yBACnB39B,WAEW49B,GAA0B/9B,QACrC6vB,EAAmBkO,yBACnB59B,WAEW69B,GAAmBh+B,QAAa6vB,EAAmBmO,kBAEnDC,GAAuBj+B,QAClC6vB,EAAmBoO,sBACnB99B,WAMWhC,GAAsB6B,QACjC6vB,EAAmB1xB,qBACnBgC,WAEW+9B,GAA6Bl+B,QACxC6vB,EAAmBqO,4BACnB/9B,WAEWg+B,GAA6Bn+B,QACxC6vB,EAAmBsO,4BACnBh+B,WAGWi+B,IAA4Bp+B,QAAa6vB,EAAmBuO,2BAE5DrtB,GAAe/Q,QAC1B6vB,EAAmB9e,cACnB5Q,WAEWk+B,GAAsBr+B,QAAa6vB,EAAmBwO,qBACtDC,IAAsBt+B,QAAa6vB,EAAmByO,qBAEtDrtB,GAAsBjR,QACjC6vB,EAAmB5e,qBACnB9Q,WAEWo+B,IAA6Bv+B,QACxC6vB,EAAmB0O,4BAERC,IAA6Bx+B,QACxC6vB,EAAmB2O,4BAMRttB,IAA4BlR,QAAa6vB,EAAmB3e,2BAC5DutB,IAAmCz+B,QAC9C6vB,EAAmB4O,kCACnBt+B,WAEWu+B,IAAmC1+B,QAC9C6vB,EAAmB6O,kCACnBv+B,WAMWgR,IAA4BnR,QACvC6vB,EAAmB1e,2BACnBhR,WAEWw+B,IAAmC3+B,QAC9C6vB,EAAmB8O,kCACnBx+B,WAEWy+B,IAAmC5+B,QAC9C6vB,EAAmB+O,kCACnBz+B,WAMWiR,IAA8BpR,QACzC6vB,EAAmBze,6BACnBjR,WAEW0+B,IAAqC7+B,QAChD6vB,EAAmBgP,oCACnB1+B,WAEW2+B,IAAqC9+B,QAChD6vB,EAAmBiP,oCACnB3+B,2FCpNK,MAEM4+B,GACX59B,QAHqC,sBAU1Bq1B,IAL+Bn1B,QAC1C09B,EACCrpC,GAA+BA,EAAQA,EAAM06B,eAAe59C,OAAS,IAG/B6uB,QACvC09B,EACCrpC,GAA+BA,GAAgB,OAGrCspC,GAAuB39B,QAClC09B,EACCrpC,GAA+BA,EAAQA,EAAM06B,eAAiB,IAGpD6O,GAA8B59B,QACzC09B,EACCrpC,KAA+BA,GAAQA,EAAM+L,UAGTJ,QACrC09B,EACCrpC,KAA+BA,GAAQA,EAAMg4B,aAAe,qIC1BnD2C,EASX,MATD,OAAYA,QAAwB,KAClCA,4DACAA,wEACAA,6EACAA,6EACAA,8DACAA,6EACAA,6EACAA,uEARUA,EAAZ,IAAYA,GASX,GAKM,MAAM6F,GAAsBl2B,QACjCqwB,EAAyB6F,qBACzB/1B,WAEW++B,GAA0Bl/B,QACrCqwB,EAAyB6O,yBACzB/+B,WAEWg/B,GAA6Bn/B,QACxCqwB,EAAyB8O,4BACzBh/B,WAEWi/B,GAA6Bp/B,QACxCqwB,EAAyB+O,4BAMdjJ,GAAsBn2B,QACjCqwB,EAAyB8F,qBACzBh2B,WAEWk/B,GAA6Br/B,QACxCqwB,EAAyBgP,4BACzBl/B,WAEWm/B,GAA6Bt/B,QACxCqwB,EAAyBiP,4BAMdC,GAA0Bv/B,QACrCqwB,EAAyBkP,yPClDpB,MAEMC,GAA4Br+B,QAFR,gBAIpBs+B,GAAwBp+B,QACnCm+B,EACC9pC,KAAyBA,GAAQA,EAAM6qB,SAAS9e,SAGtCi+B,GAAiBr+B,QAAem+B,EAA4B9pC,GACvEA,EAAQA,EAAM6qB,SAASp2B,MAAQ,MAGpBw1C,GAA2Bt+B,QACtCm+B,EACC9pC,KAAyBA,GAAQA,EAAM6qB,SAASmN,cAGtCkS,GAAiBv+B,QAAem+B,EAA4B9pC,GACvEA,EAAQA,EAAMqrB,SAAS52B,MAAQ,MAGpB01C,GAA2Bx+B,QACtCm+B,EACC9pC,KAAyBA,GAAQA,EAAMqrB,SAAS2M,cAGtCoS,GAAwBz+B,QACnCm+B,EACC9pC,KAAyBA,GAAQA,EAAMqrB,SAAStf,SAGtCs+B,GAAuB1+B,QAClCm+B,EACC9pC,GAAyBA,EAAQA,EAAM46B,eAAiB,MAG9C0P,GAA+B3+B,QAC1Cm+B,EACC9pC,GAAyBA,EAAQA,EAAM46B,eAAezb,gBAAkB,IAG9DorB,GAAuB5+B,QAClCm+B,EACC9pC,GAAyBA,EAAQA,EAAM46B,eAAeC,eAAiB,IAG7D2P,GAAyB7+B,QACpCm+B,EACC9pC,GAAyBA,EAAQA,EAAMkB,OAAO45B,iBAAmB,MAGvD2P,GAA2B9+B,QACtCm+B,EACC9pC,GAAyBA,EAAQA,EAAM46B,eAAerP,mBAAqB,IAGjEmf,GAAoB/+B,QAAem+B,EAA4B9pC,GAC1EA,EAAQA,EAAM8qB,YAAc,MAGjB6f,GAAuCh/B,QAClDm+B,EACC9pC,GAAyBA,EAAQA,EAAM+6B,2BAA2BjoC,UAAU2B,MAAQ,IAG1Em2C,GAA4Cj/B,QACvDm+B,EACC9pC,GAAyBA,EAAQA,EAAM+6B,2BAA2BC,eAAevmC,MAAQ,IAG/Eo2C,GAA4Cl/B,QACvDm+B,EACC9pC,GAAyBA,EAAQA,EAAM+6B,2BAA2BE,eAAexmC,MAAQ,IAG/Eq2C,GAAqCn/B,QAChDm+B,EACC9pC,GACCA,EAAQA,EAAM+6B,2BAA2BG,uBAAuBzmC,MAAQ,IAG/Ds2C,GAAqCp/B,QAChDm+B,EACC9pC,KACCA,GAaJ,WACE+6B,GAEA,OACEA,EAA2BjoC,UAAUiZ,SACrCgvB,EAA2BC,eAAejvB,SAC1CgvB,EAA2BE,eAAelvB,SAC1CgvB,EAA2BG,uBAAuBnvB,QApB1Ci/B,CAA6BhrC,EAAM+6B,6BAGlCkQ,GAA6Bt/B,QACxCm+B,EACC9pC,IAAuB,SAAC,OAACA,EAAkC,QAA1B7D,EAAoB,QAApBN,KAAM++B,sBAAc7gD,iBAAEoiC,YAAI/gB,eAAE2vB,OAAS,KAG5DmgB,IAA+Bv/B,QAC1Cm+B,EACC9pC,IAAuB,OAAC,OAACA,EAAqC,QAA7BnE,KAAMqF,OAAO45B,wBAAgB/gD,iBAAEgxC,OAAS,IAUtBhf,sdC9F1CovB,EA4CX,MA5CD,OAAYA,SAAkB,KAC5BA,yCACAA,2DACAA,2DACAA,4CACAA,yDACAA,wEACAA,uEACAA,yDACAA,4CACAA,2DACAA,2DACAA,4CACAA,6DACAA,4EACAA,2EACAA,6DACAA,yEACAA,wFACAA,wFACAA,yDACAA,wEACAA,wEACAA,kEACAA,iFACAA,iFACAA,2FACAA,0GACAA,0GACAA,sGACAA,qHACAA,qHACAA,uGACAA,sHACAA,sHACAA,uFACAA,sGACAA,sGACAA,oEACAA,mFACAA,mFACAA,uFACAA,sGACAA,sGA3CUA,EAAZ,IAAYA,IA4CX,GAEM,MAAM1S,GAAgBne,QAC3B6wB,EAAmB1S,eACnBhe,WAGW0gC,GAAuB7gC,QAClC6wB,EAAmBgQ,sBACnB1gC,WAOW2gC,GAAuB9gC,QAClC6wB,EAAmBiQ,sBACnB3gC,WAGW4gC,GAAgB/gC,QAAa6wB,EAAmBkQ,eAEhDziB,GAAsBte,QACjC6wB,EAAmBvS,qBACnBne,WAGW6gC,GAA6BhhC,QACxC6wB,EAAmBmQ,4BACnB7gC,WAGW8gC,GAA6BjhC,QACxC6wB,EAAmBoQ,4BACnB9gC,WAGW+gC,GAAsBlhC,QAAa6wB,EAAmBqQ,qBAEtDjiB,GAAgBjf,QAC3B6wB,EAAmB5R,eACnB9e,WAQWghC,GAAuBnhC,QAClC6wB,EAAmBsQ,sBACnBhhC,WAMWihC,GAAuBphC,QAClC6wB,EAAmBuQ,sBACnBjhC,WAGWkhC,GAAgBrhC,QAAa6wB,EAAmBwQ,eAKhD9iB,GAAwBve,QACnC6wB,EAAmBtS,uBACnBpe,WAEWmhC,GAA+BthC,QAC1C6wB,EAAmByQ,8BACnBnhC,WAEWohC,GAA+BvhC,QAC1C6wB,EAAmB0Q,8BACnBphC,WAEWqhC,GAAwBxhC,QAAa6wB,EAAmB2Q,uBAKxDhjB,GAA8Bxe,QACzC6wB,EAAmBrS,6BACnBre,WAGWshC,GAAqCzhC,QAChD6wB,EAAmB4Q,oCACnBthC,WAEWuhC,GAAqC1hC,QAChD6wB,EAAmB6Q,oCAMRpiB,IAAsBtf,QACjC6wB,EAAmBvR,qBACnBnf,WAEWwhC,GAA6B3hC,QACxC6wB,EAAmB8Q,4BACnBxhC,WAEWyhC,GAA6B5hC,QACxC6wB,EAAmB+Q,4BAMRC,IAA0B7hC,QACrC6wB,EAAmBgR,yBACnB1hC,WAEW2hC,GAAiC9hC,QAC5C6wB,EAAmBiR,gCACnB3hC,WAEW4hC,IAAiC/hC,QAC5C6wB,EAAmBkR,gCAGRnjB,IAAsC5e,QACjD6wB,EAAmBjS,qCACnBze,WAEW6hC,IAA6ChiC,QACxD6wB,EAAmBmR,4CACnB7hC,WAEW8hC,IAA6CjiC,QACxD6wB,EAAmBoR,4CACnB9hC,WAGW0e,IAA2C7e,QACtD6wB,EAAmBhS,0CACnB1e,WAEW+hC,IAAkDliC,QAC7D6wB,EAAmBqR,iDACnB/hC,WAEWgiC,IAAkDniC,QAC7D6wB,EAAmBsR,iDACnBhiC,WAGW2e,IAA2C9e,QACtD6wB,EAAmB/R,0CACnB3e,WAEWiiC,IAAkDpiC,QAC7D6wB,EAAmBuR,iDACnBjiC,WAEWkiC,IAAkDriC,QAC7D6wB,EAAmBwR,iDACnBliC,WAGW4e,IAAoC/e,QAC/C6wB,EAAmB9R,mCACnB5e,WAEWmiC,IAA2CtiC,QACtD6wB,EAAmByR,0CACnBniC,WAEWoiC,IAA2CviC,QACtD6wB,EAAmB0R,0CACnBpiC,WAGWqiC,IAA2BxiC,QACtC6wB,EAAmB2R,0BACnBriC,WAEWsiC,IAAkCziC,QAC7C6wB,EAAmB4R,iCACnBtiC,WAEWuiC,IAAkC1iC,QAC7C6wB,EAAmB6R,iCAGRC,IAAoC3iC,QAC/C6wB,EAAmB8R,mCACnBxiC,WAEWyiC,IAA2C5iC,QACtD6wB,EAAmB+R,0CACnBziC,WAEW0iC,IAA2C7iC,QACtD6wB,EAAmBgS,qJChQd,MAEMC,GAA2B3hC,QAFR,eAInB4hC,GAAgB1hC,QAAeyhC,EAA2BptC,GACrEA,EAAQA,EAAMsrB,QAAQ72B,MAAQ,IAGnB64C,GAA0B3hC,QACrCyhC,EACCptC,KAAwBA,GAAQA,EAAMsrB,QAAQ0M,cAGpCuV,GAAyB5hC,QACpCyhC,EACCptC,GAAwBA,EAAQA,EAAM4rB,iBAAmB,IAG/C4hB,GAAsB7hC,QAAeyhC,EAA2BptC,GAC3EA,EAAQA,EAAMs7B,cAAgB,MAGnBmS,GAAoB9hC,QAAeyhC,EAA2BptC,GACzEA,EAAQA,EAAMw7B,YAAc,MAGjBkS,GAAkC/hC,QAC7CyhC,EACCptC,KAAwBA,GAAQA,EAAMq7B,0BAA4B,sTCxBzDI,EA+BX,MA/BD,OAAYA,SAAiB,KAC3BA,sCACAA,wDACAA,wDACAA,4DACAA,2EACAA,2EACAA,yCACAA,sDACAA,mEACAA,qEACAA,qEACAA,sEACAA,qFACAA,qFACAA,iEACAA,gFACAA,gFACAA,sDAEAA,kDACAA,iEACAA,iEAEAA,qCACAA,oDACAA,oDAEAA,2CACAA,0DACAA,0DA9BUA,EAAZ,IAAYA,IA+BX,GAEM,MAAM/R,GAAepf,QAAamxB,EAAkB/R,cAAcjf,WAE5DkjC,GAAsBrjC,QACjCmxB,EAAkBkS,qBAClBljC,WAGWmjC,GAAsBtjC,QACjCmxB,EAAkBmS,qBAClBnjC,WAGWkf,GAAwBrf,QAAamxB,EAAkB9R,uBACvDkkB,GAA+BvjC,QAC1CmxB,EAAkBoS,8BAClBpjC,WAEWqjC,GAA+BxjC,QAC1CmxB,EAAkBqS,8BAClBrjC,WAGWsjC,GAAezjC,QAAamxB,EAAkBsS,cAK9ChkB,GAAqBzf,QAChCmxB,EAAkB1R,oBAClBtf,WAEWujC,GAA2B1jC,QACtCmxB,EAAkBuS,0BAClBvjC,WAEWwjC,GAA4B3jC,QACvCmxB,EAAkBwS,2BAClBxjC,WAEWyjC,GAA4B5jC,QAAamxB,EAAkByS,2BAC3DC,GAAqB7jC,QAAamxB,EAAkB0S,oBAKpDtkB,GAA6Bvf,QACxCmxB,EAAkB5R,4BAClBpf,WAEW2jC,GAAoC9jC,QAC/CmxB,EAAkB2S,mCAClB3jC,WAEW4jC,GAAoC/jC,QAC/CmxB,EAAkB4S,mCAMPtlB,GAAuBze,QAClCmxB,EAAkB1S,sBAClBte,WAEW6jC,GAA8BhkC,QACzCmxB,EAAkB6S,6BAClB7jC,WAEW8jC,GAA8BjkC,QACzCmxB,EAAkB8S,6BAMPrkB,GAAmB5f,QAAamxB,EAAkBvR,kBAClDskB,IAA0BlkC,QACrCmxB,EAAkB+S,yBAClB/jC,WAEWgkC,GAA0BnkC,QAAamxB,EAAkBgT,yBAEzDzkB,GAAa1f,QACxBmxB,EAAkBzR,YAClBvf,WAEWikC,IAAoBpkC,QAAamxB,EAAkBiT,mBACnDC,GAAoBrkC,QAC/BmxB,EAAkBkT,mBAClBlkC,WAGWwf,IAAgB3f,QAC3BmxB,EAAkBxR,eAClBxf,WAEWmkC,IAAuBtkC,QAAamxB,EAAkBmT,sBACtDC,IAAuBvkC,QAClCmxB,EAAkBoT,sBAClBpkC,kKCxIUkxB,EAcX,MAdD,OAAYA,QAAiB,KAC3BA,+CAEAA,qDACAA,oEACAA,oEAEAA,qDACAA,oEACAA,oEAEAA,wCACAA,uDACAA,uDAbUA,EAAZ,IAAYA,GAcX,GAEM,MAAMmT,GAAmBxkC,QAAaqxB,EAAkBmT,kBAElDziB,GAAqB/hB,QAAaqxB,EAAkBtP,oBACpD0iB,GAA4BzkC,QACvCqxB,EAAkBoT,2BAClBtkC,WAEWukC,GAA4B1kC,QAAaqxB,EAAkBqT,2BAE3D1iB,GAAqBhiB,QAChCqxB,EAAkBrP,oBAClB7hB,WAEWwkC,GAA4B3kC,QACvCqxB,EAAkBsT,2BAClBxkC,WAEWykC,GAA4B5kC,QAAaqxB,EAAkBuT,2BAE3D1iB,GAAeliB,QAC1BqxB,EAAkBnP,cAClB/hB,WAEW0kC,GAAsB7kC,QAAaqxB,EAAkBwT,qBACrDC,GAAsB9kC,QAAaqxB,EAAkByT,qGCxC3D,MAEMC,GAA2B5jC,QAFR,eAInB6jC,GAAoB3jC,QAAe0jC,EAA2BrvC,GACzEA,GAAgB,MAGLliB,GAAsB6tB,QAAe0jC,EAA2BrvC,KAC3EA,GAAQA,EAAM+L,SAOHwhB,IAJqB5hB,QAAe0jC,EAA2BrvC,GAC1EA,EAAQA,EAAM8tB,OAAS,KAGiBniB,QACxC0jC,EACCrvC,GAAwBA,EAAQA,EAAM4tB,UAAU9wC,OAAS,sGCjBhD8+C,EAKX,MALD,OAAYA,QAAiB,KAC3BA,+CACAA,mDACAA,kEACAA,kEAJUA,EAAZ,IAAYA,GAKX,GAEM,MAAM2T,GAAmBjlC,QAAasxB,EAAkB2T,kBAElDC,GAAoBllC,QAC/BsxB,EAAkB4T,mBAClB/kC,WAWWglC,GAA2BnlC,QACtCsxB,EAAkB6T,0BAClBhlC,WAQWilC,GAA2BplC,QAAasxB,EAAkB8T,mHCjC3D7T,EAIX,MAJD,OAAYA,QAAgB,KAC1BA,sCACAA,uDACAA,uDAHUA,EAAZ,IAAYA,GAIX,GAEM,MAAM5N,GAAe3jB,QAC1BuxB,EAAiB5N,cACjBxjB,WAEWklC,GAAsBrlC,QAAauxB,EAAiB8T,qBACpDC,GAAsBtlC,QAAauxB,EAAiB+T,4nBCT1D,MAEMC,GAAgCpkC,QAFH,oBAM7BqkC,GAAyBnkC,QACpCkkC,EACC7vC,IACCA,GAAQA,GAAMi8B,qBAAqBK,2BAA6BnuC,gBAGvD4hD,GAA2BpkC,QACtCkkC,EACC7vC,KAA2B,OAC1B,YAA4C,QAApCgwC,MAAM3vC,uBAAuBhF,eAAOthB,iBAAEk2D,uBAAyB,GAG9DC,GAAuBvkC,QAClCkkC,EACC7vC,MAA6BA,IAAQA,GAAMg+B,gBAGjCnO,GAAoBlkB,QAC/BkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgB4G,YAAc,MAG/D0oB,GAAkCjkB,QAC7CkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgB2G,0BAA4B,MAG7EkpC,GAAwBxkC,QACnCkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAkB,MAGnD8vC,GAAiBzkC,QAC5BkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgB3C,SAAW,MAG5D0yC,GAA8B1kC,QACzCkkC,EACC7vC,MAA6BA,IAAQA,GAAM48B,aAAaD,eAG9C2T,GAAqB3kC,QAChCkkC,EACC7vC,IAA6BA,GAAQA,GAAM48B,aAAe,MAGhD2T,GAAiC5kC,QAC5CkkC,EACC7vC,MAA6BA,IAAQA,GAAM68B,YAAYF,eAG7C6T,GAAiC7kC,QAC5CkkC,EACC7vC,MAA6BA,IAAQA,GAAMy8B,sBAAsBE,eAGvD8T,GAAuB9kC,QAClCkkC,EACC7vC,IAA6BA,GAAQA,GAAMi9B,eAAiB,MAGlDyT,GAAoB/kC,QAC/BkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgBiwB,YAAc,IAG/D7kB,GAAkBC,QAC7BkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgBjD,YAAYxD,UAAY,MAGzE82C,GAAoBhlC,QAC/BkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgBjD,YAAc,MAG/DuzC,GAAmCjlC,QAC9CkkC,EACC7vC,IAA6BA,GAAQA,GAAMK,uBAAyB,MAG1DwwC,IAAiCllC,QAC5CkkC,EACC7vC,MAA6BA,IAAQA,GAAMM,gBAAgBk9B,0BASjDsT,IAN0BnlC,QACrCkkC,EACC7vC,KAA2B,OAC1B,UAAuD,QAA/CgwC,MAAM1vC,gBAAgBjD,YAAY4O,qBAAalyB,iBAAE4C,IAAKmV,IAAMA,GAAE+C,MAAQ,MAG5C8W,QACpCkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgBjD,YAAY4O,cAAgB,KAG7E8kC,IAA6BplC,QACxCkkC,EACC7vC,IAA6BA,GAAQA,GAAMi8B,qBAAuB,MASxD9M,KAN2BxjB,QACtCkkC,EACC7vC,IACCA,GAAQA,GAAMi8B,qBAAqBC,uBAAuBjL,mBAAqB,OAGrCtlB,QAC5CkkC,EACC7vC,IAA6BA,GAAQA,GAAMi8B,qBAAqB1M,yBAA2B,OAGjFyhB,IAA+BrlC,QAC1CkkC,EACC7vC,IAA6BA,GAAQA,GAAM68B,YAAYC,uBAAyB,MAGtEmU,IAAoBtlC,QAC/BkkC,EACC7vC,IAA6BA,GAAQA,GAAM68B,YAAc,MAG/CqU,IAA8BvlC,QACzCkkC,EACC7vC,IAA6BA,GAAQA,GAAMy8B,sBAAwB,MAGzDjM,IAA2B7kB,QACtCkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgB+vB,mBAAqB,MAGtE8gB,IAAoCxlC,QAC/CkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgBi9B,4BAA8B,MAG/E6T,IAA4BzlC,QACvCkkC,EACC7vC,IAA6BA,GAAQA,GAAMg9B,oBAAsB,MAGvDqU,IAAmC1lC,QAC9CkkC,EACC7vC,IAA6BA,GAAQA,GAAMu+B,2BAA6B,MAG9D+S,IAAqB3lC,QAChCkkC,EACC7vC,IAA6BA,GAAQA,GAAMk9B,YAAYC,aAAe,MAiB5DoU,KAdyB5lC,QACpCkkC,EACC7vC,eACC,SAAsB,QAAtBgwC,GAAK,MAALwB,QAAK,EAALA,GAAOlxC,uBAAevmB,iBAAEs2C,sBACoB,QAAxCohB,MAAMnxC,gBAAgB+vB,0BAAkBj1B,iBAAE0M,iBAC1C,IAG8B6D,QACpCkkC,EACC7vC,KAA2B,UAC1B,aAAiD,QAAzCyxC,GAAqB,QAArBzB,MAAM1vC,uBAAevmB,iBAAEs2C,0BAAkBj1B,iBAAE2M,wBAA0B,IAGrC4D,QAC1CkkC,EACC7vC,MAA6BA,IAAQA,GAAMy+B,yBAGjCiT,IAAkC/lC,QAC7CkkC,EACC7vC,MAA6BA,IAAQA,GAAMw+B,2BAGjC0I,IAAoBv7B,QAC/BkkC,EACC7vC,KAA2B,OAC1B,UAAoE,QAA5DgwC,MAAM1vC,gBAAgBE,uBAAuBo9B,uBAAe7jD,iBAAEspB,YAAc,KAG3EsuC,IAAuBhmC,QAClCkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgBE,uBAAyB,MAG1EoxC,IAAwBjmC,QACnCkkC,EACC7vC,KAA2B,OAC1B,UAAoD,QAA5CgwC,MAAM1vC,gBAAgBE,8BAAsBzmB,iBAAE6jD,gBAAkB,OAG/D6J,IAAoB97B,QAC/BkkC,EACC7vC,KAA2B,UAC1B,UAA+E,QAAvEyxC,GAAgE,QAAhEzB,MAAM1vC,gBAAgBE,uBAAuBm9B,2BAAmB5jD,iBAAEgsC,aAAK3qB,iBAAE+I,QAAU,OAGlF0tC,IAAyClmC,QACpDkkC,EACC7vC,IACCA,GAAQA,GAAMM,gBAAgBE,uBAAuBw5B,yBAA2B,MAGvE8X,IAAwBnmC,QACnCkkC,EACC7vC,KAA2B,OAC1B,UAAwE,QAAhEgwC,MAAM1vC,gBAAgBE,uBAAuBm9B,2BAAmB5jD,iBAAEg4D,MAAQ,OAGzEC,IAAkBrmC,QAC7BkkC,EACC7vC,YACC,MAAMiyC,GAAsC,QAAtBjC,GAAK,MAALwB,QAAK,EAALA,GAAOlxC,uBAAevmB,iBAAEymB,uBAAuBw5B,yBACrE,OAAOiY,IACLA,GAAch5B,WAAan1B,UAC3BmuD,GAAc5X,KACZ4X,GAAc5X,KACd,OAIK6X,IAAqBvmC,QAChCkkC,EACC7vC,YACC,MAAMiyC,GAAsC,QAAtBjC,GAAK,MAALwB,QAAK,EAALA,GAAOlxC,uBAAevmB,iBAAEymB,uBAAuBw5B,yBACrE,OAAOiY,IACLA,GAAch5B,WAAan1B,UAC3BmuD,GAAc3X,QACZ2X,GAAc3X,QACd,OAIK6X,IAAiCxmC,QAC5CkkC,EACC7vC,IAA6BA,GAAQA,GAAMs+B,sBAAwB,MAGzD8T,IAA4CzmC,QACvDkkC,EACC7vC,IACCA,GAAQA,GAAMM,gBAAgBE,uBAAuBq9B,4BAA8B,MAG1EwU,IAA2B1mC,QACtCkkC,EACC7vC,IACCA,GAAQA,GAAMM,gBAAgBE,uBAAuBD,mBAAqB,MAWjE+xC,KARwB3mC,QACnCkkC,EACC7vC,kBACC,aACqE,QAAjEuyC,GAA6C,QAA7Cd,GAAqB,QAArBzB,MAAM1vC,uBAAevmB,iBAAEymB,8BAAsBpF,iBAAEmF,0BAAkBjF,iBAAEwiC,iBACnE,IAGqCnyB,QAC3CkkC,EACC7vC,kBACC,UAC+E,QAA3EuyC,GAA8C,QAA9Cd,GAAsB,QAAtBzB,GAAK,MAALwB,QAAK,EAALA,GAAOlxC,uBAAevmB,iBAAEymB,8BAAsBpF,iBAAEyiC,mCAA2BviC,iBAAEwzB,WAC7E,MAGK0jB,IAAgC7mC,QAC3CkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgBm9B,wBAA0B,MAG3EgV,IAAgC9mC,QAC3CkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgBo9B,wBAA0B,MAG3EgV,IAA+B/mC,QAC1CkkC,EACC7vC,IAA6BA,GAAQA,GAAMi+B,uBAAyB,MAG1D0U,IAA2BhnC,QACtCkkC,EACC7vC,MAA6BA,IAAQA,GAAM2+B,oBAGjCiU,IAAoCjnC,QAC/CkkC,EACC7vC,MAA6BA,IAAQA,GAAMk+B,6BAGjC2U,IAAiBlnC,QAC5BkkC,EACC7vC,IAA6BA,GAAQA,GAAMM,gBAAgB3C,SAAS8zB,SAAW,IAGrEqhB,IAA+BnnC,QAC1CkkC,EACC7vC,IAA6BA,GAAQA,GAAMm+B,uBAAyB,MAG1D4U,IAAsBpnC,QACjCkkC,EACC7vC,IAA6BA,GAAQA,GAAMo9B,cAAgB,MAGjD4V,IAA2BrnC,QACtCkkC,EACC7vC,IAA6BA,GAAQA,GAAMo+B,mBAAqB,IAGtD6U,IAAyBtnC,QACpCkkC,EACC7vC,MAA6BA,IAAQA,GAAMq+B,kBAGjC6U,IAAuCvnC,QAClDkkC,EACC7vC,KAA2B,UAC1B,aAAuD,QAA/CyxC,GAAsB,QAAtBzB,GAAK,MAALwB,QAAK,EAALA,GAAOlxC,uBAAevmB,iBAAE2jD,+BAAuBtiC,iBAAE+3C,+BAAiC,GAGjFC,IAAmCznC,QAC9CkkC,EACC7vC,KAA2B,OAC1B,UAA8B,QAAtBgwC,GAAK,MAALwB,QAAK,EAALA,GAAOlxC,uBAAevmB,iBAAE2lD,+BAAiC,OAGxD2T,IAA0B1nC,QACrCkkC,EACC7vC,KAA6BA,IAAQA,GAAM0+B,oBAGjC4U,IAAgC3nC,QAC3CkkC,EACC7vC,MAA6BA,IAAQA,GAAM4+B,kBAAoB,+5CC1StDC,EAuJX,MAvJD,OAAYA,SAAsB,KAChCA,qDACAA,uEACAA,uEACAA,uEACAA,qDACAA,gEACAA,kFACAA,yFACAA,0EACAA,iEACAA,iEACAA,uEACAA,sFACAA,sFACAA,iGACAA,uEACAA,sFACAA,sFACAA,mEACAA,wFACAA,sFACAA,kFACAA,iEACAA,4EACAA,6DACAA,6EACAA,iEACAA,uEACAA,qEACAA,8DACAA,6EACAA,6EACAA,0DACAA,+DACAA,8EACAA,8EACAA,2DACAA,4EACAA,2FACAA,2FACAA,yEACAA,oEACAA,mFACAA,mFACAA,uDACAA,oEACAA,mFACAA,mFACAA,0DACAA,kEACAA,iFACAA,iFACAA,wEACAA,uFACAA,uFACAA,kEACAA,mFACAA,kGACAA,kGACAA,yDACAA,wEACAA,wEACAA,yDACAA,2EACAA,0FACAA,0FACAA,8DACAA,oDACAA,mEACAA,mEACAA,iGACAA,8EACAA,2DACAA,0EACAA,0EACAA,uDACAA,sEACAA,sEACAA,uDACAA,uDACAA,gEACAA,sEACAA,wEACAA,uFACAA,uFACAA,0EACAA,4CACAA,2DACAA,2DACAA,4CACAA,2DACAA,2DACAA,6DACAA,4EACAA,4EACAA,2DACAA,4FACAA,0FACAA,gDACAA,+DACAA,+DACAA,oDACAA,mEACAA,mEACAA,6DACAA,uDACAA,uDACAA,mDACAA,kEACAA,kEACAA,iDACAA,wFACAA,8EACAA,6FACAA,6FACAA,2DACAA,oDACAA,mEACAA,mEACAA,yFACAA,6EACAA,4FACAA,4FACAA,iFACAA,sDACAA,qEACAA,qEACAA,0EACAA,gFACAA,gFACAA,sEACAA,qFACAA,qFACAA,mEACAA,uFACAA,mGACAA,mGACAA,kFACAA,qFACAA,kGACAA,kGACAA,8FACAA,+EACAA,8FACAA,8FACAA,4EACAA,wEACAA,wEACAA,4EACAA,sEAtJUA,EAAZ,IAAYA,IAuJX,GAKM,MAAMn5B,GAAoB4E,QAC/Bu0B,EAAuBn5B,mBACvB+E,WAEW8oC,GAA2BjpC,QACtCu0B,EAAuB0U,0BACvB9oC,WAEW+oC,GAA2BlpC,QACtCu0B,EAAuB2U,0BAEZC,GAA2BnpC,QACtCu0B,EAAuB4U,0BAMZzV,GAAiB1zB,QAC5Bu0B,EAAuBb,gBACvBvzB,WAMWipC,GAA+BppC,QAC1Cu0B,EAAuB6U,8BACvBjpC,WAMWkpC,G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gB,EAChB16O,gBAAiB,EACjBC,eAAgB,EAChBO,IAAK,GAEPykP,gBAAiB,CACfC,QAAS,kCACTE,QAAS,kCACTD,MAAO,iCAET7F,qBAAsB,CACpBqB,KAAM,SACNG,QAAS,SAEX8C,mBAAoB,CAClBx7I,OAAQ,OACR5rF,MAAO,OACPC,OAAQ,OACRusO,MAAO,QAETC,uBAAwB,CACtB,MAAOp5R,EAAOq5R,6CAId,MAAOr5R,EAAOs5R,oDAEhBlI,cAAe,CACb,kBACA,kBACA,0BACA,2BACA,kBACA,qBACA,qBACA,yBACA,8BACA,qBACA,aACA,aACA,QACA,YACA,OACA,cACA,YACA,mBACA,eACA,aACA,eACA,0BACA,oBACA,0BACA,yBACA,uBACA,cACA,iBACA,cACA,SACA,aACA,eACA,gBACA,cACA,UACA,UACA,UACA,cACA,gBACA,iBACA,eACA,aACA,cACA,cAEFU,cAAe,CACbx5P,eAAgB,CACdxzD,KAAM,kBACN2C,MAAO,mBAET8nD,OAAQ,CACNzqD,KAAM,qBACN2C,MAAO,sBAETkpE,IAAK,CACH7rE,KAAM,MACN2C,MAAO,OAETojT,eAAgB,CACd/lT,KAAM,aACN2C,MAAO,mBAET0oE,gBAAiB,CACfrrE,KAAM,mBACN2C,MAAO,oBAET2oE,eAAgB,CACdtrE,KAAM,kBACN2C,MAAO,mBAET+oE,WAAY,CACV1rE,KAAM,cACN2C,MAAO,gBAGXwnT,kBAAmB,CACjB,eAAgB,UAChB,gBAAiB,UACjB3gQ,SAAU,UACV6mJ,YAAa,UAEfokH,qBAAsB,CACpB,kBAAmB,UACnB,qBAAsB,YACtBC,WAAY,SACZ,mBAAoB,eACpB,kBAAmB,cACnB7oP,IAAK,SACL,cAAe,wBAInBixO,EAAU/4T,OAAS4vU,EACjB,CACE,YACA,0BACA,gBACA,4BACA,cACA,gBACA,cACA,cACA,mBACA,mBACA,eACA,0BACA,gBACA,cACA,oBACA,uBACA,uBACA,sBACA,mBAEF,kBAGFnkB,EAAOC,QAAUqN,GAEf,CAAC,sBAAsB,IAAI,WAAW,KAAK,GAAG,CAAC,SAASpN,EAAQF,EAAOC,GA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swR,MAEFL,GAAqBt0H,SAASu0H,GAEvBG,EAeT,aACEzzV,SAASimG,eAAe,8BAA8B2tB,UAAU9vH,IAAI,UAsGtE,aACE,IACI+vV,GACFC,EACAC,EACAC,GACAC,EACAC,GACAC,GACAC,GAREC,EAA0Br0V,SAASimG,eAAemtP,YAUlDiB,EACFA,EAAwBzgO,UAAUsG,OAAO,WAI3C25N,GAAwB7zV,SAASgT,cAAc,SAC/C8gV,EAAc9zV,SAASgT,cAAc,OACrC+gV,EAA2B/zV,SAASgT,cAAc,OAClDghV,GAAeh0V,SAASgT,cAAc,OACtCihV,EAAkBj0V,SAASgT,cAAc,OACzCkhV,GAAkBl0V,SAASgT,cAAc,OACzCmhV,GAAiBn0V,SAASgT,cAAc,UACxCohV,GAAep0V,SAASgT,cAAc,UAEtC6gV,GAAsB7uU,GAAK,qCAC3B6uU,GAAsBt7J,UA7HxB,aAgGE,MA/FqB,CACnB,IAAM66J,iBAA6B,KACnC,iBACA,IACA,IAAMA,WAAuB,KAC7B,uBACA,mBACA,mBACA,UACA,WACA,aACA,eACA,kCACA,KA0E6Bv7S,OAxED,CAC5B,IAAMu7S,oBAAgC,KACtC,iBACA,yBACA,2BACA,uBACA,eACA,gBACA,0BACA,KAGuB,CACvB,IAAMA,eAA2B,KACjC,gBACA,gBACA,+DACA,sBACA,oBACA,mBACA,qBACA,sBACA,iCACA,gBACA,kBACA,oBACA,KAGyB,CACzB,IAAMA,iBAA6B,KACnC,gBACA,gBACA,uBACA,uBACA,gBACA,+DACA,sBACA,oBACA,mBACA,kBACA,oBACA,KAGkB,CAClB,IAAMA,UAAsB,KAC5B,+DACA,sBACA,oBACA,mBACA,qBACA,sBACA,kBACA,oBACA,KAGsB,CACtB,IAAMA,eAA2B,KACjC,+DACA,sBACA,oBACA,mBACA,qBACA,sBACA,kBACA,oBACA,gBACA,MAWe3kT,KAAK,MA6BY6lT,GAElCR,EAAY9uU,GAAKouU,WAEjBW,EAAyB/uU,GAAKouU,oBAE9BY,GAAahvU,GAAKouU,YAClBY,GAAaz7J,UAjNb,grFAmNA07J,EAAgBjvU,GAAKouU,UAC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BACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,cACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,cACA,iBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,cACA,iBACA,eACA,kBACA,cACA,iBACA,eACA,kBACA,eACA,kBACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,aACA,gBACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,qBACA,kBACA,qBACA,YACA,eACA,YACA,eACA,WACA,cACA,WACA,cACA,YACA,eACA,eACA,kBACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,gBACA,mBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,UACA,aACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,eACA,kBACA,cACA,YACA,eACA,eACA,kBACA,cACA,iBACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,iBACA,oBACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,aACA,gBACA,YACA,eACA,YACA,eACA,Y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IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,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","sources":["en-US-POSIX.js","./src/app/app-routing.module.ts","./src/app/auth-config.ts","./src/app/base/components/layout/components/footer-bottom/footer-bottom.component.html","./src/app/base/components/layout/components/footer-bottom/footer-bottom.component.ts","./src/app/base/components/layout/components/footer-container/footer-container.component.ts","./src/app/base/components/layout/components/footer-container/footer-container.component.html","./src/app/base/components/layout/components/footer-links/footer-link/footerlink.component.html","./src/app/base/components/layout/components/footer-links/footer-link/footerlink.component.ts","./src/app/base/components/layout/components/footer-links/footer-links.component.html","./src/app/base/components/layout/components/footer-links/footer-links.component.ts","./src/app/base/components/layout/components/footer-top/footer-top.component.html","./src/app/base/components/layout/components/footer-top/footer-top.component.ts","./src/app/base/components/layout/components/header-container/header-container.component.ts","./src/app/base/components/layout/components/header-container/header-container.component.html","./src/app/base/components/layout/components/header-top/language-selector/language-selector.component.html","./src/app/base/components/layout/components/header-top/language-selector/language-selector.component.ts","./src/app/base/components/layout/components/header-top/party-header/leave-party-popup/leave-party-popup.component.ts","./src/app/base/components/layout/components/header-top/party-header/leave-party-popup/leave-party-popup.component.html","./src/app/base/components/layout/components/header-top/party-header/party-header.component.html","./src/app/base/components/layout/components/header-top/party-header/party-header.component.ts","./src/app/base/components/layout/components/header-top/header-top.component.html","./src/app/base/components/layout/components/header-top/header-top.component.ts","./src/app/base/components/layout/components/search-box/search-box.component.ts","./src/app/base/components/layout/components/search-box/search-box.component.html","./src/app/base/components/layout/components/header-top/cart-icon/cart-icon.component.html","./src/app/base/components/layout/components/header-top/cart-icon/cart-icon.component.ts","./src/app/base/components/layout/components/header-content/header-content.component.html","./src/app/base/components/layout/components/header-content/header-content.component.ts","./src/app/base/components/layout/components/header-navigation/header-navigation.component.html","./src/app/base/components/layout/components/header-navigation/header-navigation.component.ts","./src/app/core/enums/consultant-header-content.enum.ts","./src/app/modules/consultant/consultant-widget/consultant-widget.component.html","./src/app/modules/consultant/consultant-widget/consultant-widget.component.ts","./src/app/modules/consultant/my-story-banner/my-story-banner.component.html","./src/app/modules/consultant/my-story-banner/my-story-banner.component.ts","./src/app/base/components/layout/components/header-consultant/header-consultant.component.html","./src/app/base/components/layout/components/header-consultant/header-consultant.component.ts","./src/app/base/components/layout/components/header-offers/header-offers.component.html","./src/app/base/components/layout/components/header-offers/header-offers.component.ts","./src/app/base/components/layout/default-layout/default-layout.component.ts","./src/app/base/components/layout/default-layout/default-layout.component.html","./src/app/core/constants/consultant-locator-error-message.ts","./src/app/core/constants/country-name.ts","./src/app/core/constants/create-payment-error-type-translations.ts","./src/app/core/constants/find-consultant.ts","./src/app/core/constants/form-error-messages.ts","./src/app/core/constants/image-placeholders.ts","./src/app/core/constants/locale.ts","./src/app/core/constants/page-title.ts","./src/app/core/constants/password-max-length.ts","./src/app/core/constants/patterns.ts","./src/app/core/constants/payment.consts.ts","./src/app/core/constants/pfas-state.ts","./src/app/core/constants/ph-error-messages.ts","./src/app/core/constants/product.const.ts","./src/app/core/constants/routes.const.ts","./src/app/core/constants/screen-sizes.ts","./src/app/core/constants/search.ts","./src/app/core/constants/sna-error-messages.ts","./src/app/core/constants/zip-code-minimum-length.ts","./src/app/core/enums/address-type.enum.ts","./src/app/core/enums/catalog-type.enum.ts","./src/app/core/enums/consultant-financial-state.enum.ts","./src/app/core/enums/consultant-finder-type.enum.ts","./src/app/core/enums/consultant-locator-error-type.enum.ts","./src/app/core/enums/consultant-submission-error-type.enum.ts","./src/app/core/enums/country.enum.ts","./src/app/core/enums/create-card-payment-error-type.enum.ts","./src/app/core/enums/create-voucher-error-type.enum.ts","./src/app/core/enums/footer-bg-shade.enum.ts","./src/app/core/enums/form-error-type.enum.ts","./src/app/core/enums/kushki-form-id-types.enum.ts","./src/app/core/enums/local-storage-key.enum.ts","./src/app/core/enums/locale.ts","./src/app/core/enums/log-level.enum.ts","./src/app/core/enums/media-suffix.enum.ts","./src/app/core/enums/melissa-error-code.ts","./src/app/core/enums/payment-handler-type.enum.ts","./src/app/core/enums/payment-method-type.enum.ts","./src/app/core/enums/payment-provider-type.enum.ts","./src/app/core/enums/payment-type.enum.ts","./src/app/core/enums/ph-exception-error-type.enum.ts","./src/app/core/enums/phone-number-type.enum.ts","./src/app/core/enums/product-type.enum.ts","./src/app/core/enums/request-source.enum.ts","./src/app/core/enums/router-query-param.enum.ts","./src/app/core/enums/search.enum.ts","./src/app/core/enums/start-now-app.enum.ts","./src/app/core/enums/successful-status.enum.ts","./src/app/core/enums/thumbnail.enum.ts","./src/app/core/enums/website-mode.enum.ts","./src/app/core/services/app-init.service.ts","./src/app/core/services/appcues.service.ts","./src/app/core/services/auth.service.ts","./src/app/core/enums/gtm-event.enum.ts","./src/app/core/services/gtm.service.ts","./src/app/core/services/local-storage.service.ts","./node_modules/rxjs/_esm2015/internal/operators/timeInterval.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./src/app/core/services/timer.service.ts","./src/app/core/services/logger.service.ts","./src/app/shared/utils/logrocket-utils.ts","./src/app/core/services/logrocket.service.ts","./src/app/core/services/order.service.ts","./src/app/core/services/start-now-app.service.ts","./src/app/core/services/voucher.service.ts","./src/app/core/store/address/address-state-models.ts","./src/app/core/store/address/address.actions.ts","./src/app/core/store/address/index.ts","./src/app/core/store/auth/auth.actions.ts","./src/app/core/store/auth/index.ts","./src/app/core/store/blog/blog.actions.ts","./src/app/core/store/cart/cart.actions.ts","./src/app/core/store/cart/index.ts","./src/app/core/store/checkout/checkout.actions.ts","./src/app/core/store/checkout/index.ts","./src/app/core/store/conditional-content/conditional-content.actions.ts","./src/app/core/store/consultant/consultant.actions.ts","./src/app/core/store/consultant/index.ts","./src/app/core/store/contact-us/contact-us-state-models.ts","./src/app/core/store/contact-us/contact-us.actions.ts","./src/app/core/store/footer/footer.actions.ts","./src/app/core/store/footer/index.ts","./src/app/shared/utils/error-utils.ts","./src/app/shared/utils/get-error-message.ts","./src/app/core/constants/ph-error-titles.ts","./src/app/shared/utils/get-error-title.ts","./src/app/core/services/user.service.ts","./src/app/core/services/country-state.service.ts","./src/app/core/store/address/address.effects.ts","./src/app/core/services/payment.service.ts","./src/app/core/store/payment/payment.effects.ts","./src/app/core/store/auth/auth.effects.ts","./src/app/core/services/blog.service.ts","./src/app/core/store/blog/blog.effects.ts","./src/app/shared/utils/object-transform-utils.ts","./src/app/core/services/cart.service.ts","./src/app/core/store/cart/cart.effects.ts","./src/app/core/constants/appcues-event.ts","./src/app/core/services/checkout.service.ts","./src/app/core/store/checkout/checkout.effects.ts","./src/app/core/services/conditional-content.service.ts","./src/app/core/store/conditional-content/conditional-content.effects.ts","./src/app/core/services/consultant.service.ts","./src/app/core/store/consultant/consultant.effects.ts","./src/app/core/services/contact-us.service.ts","./src/app/core/store/contact-us/contact-us.effects.ts","./src/app/core/services/footerlink.service.ts","./src/app/core/store/footer/footer.effects.ts","./src/app/core/services/magazine.service.ts","./src/app/core/store/magazine/magazine.effects.ts","./src/app/shared/utils/localize-date-utils.ts","./src/app/core/store/order/order.effects.ts","./src/app/core/enums/product-error-type.enum.ts","./src/app/core/services/product.service.ts","./src/app/core/services/catalog.service.ts","./src/app/core/services/recipe.service.ts","./src/app/core/services/vimeo.service.ts","./src/app/core/store/product/product.effects.ts","./src/app/core/store/recipe/recipe.effects.ts","./src/app/shared/utils/text-utils.ts","./src/app/core/services/return.service.ts","./src/app/core/store/return/return.effects.ts","./src/app/core/services/search.service.ts","./src/app/core/store/search/search.effects.ts","./src/app/core/services/share.service.ts","./src/app/core/store/share/share.effects.ts","./src/app/core/constants/toaster.config.ts","./src/app/shared/utils/sna-error-handling-utils.ts","./src/app/core/store/start-now-app/start-now-app.effects.ts","./src/app/core/store/user/user.effects.ts","./src/app/core/store/voucher/voucher.effects.ts","./src/app/core/services/wishlist.service.ts","./src/app/core/store/wishlist/wishlist.effects.ts","./node_modules/immer/dist/immer.esm.mjs","./src/app/core/store/address/address.reducer.ts","./src/app/core/store/auth/auth.reducer.ts","./src/app/core/store/blog/blog.reducer.ts","./src/app/core/store/cart/cart.reducer.ts","./src/app/core/store/checkout/checkout.reducer.ts","./src/app/core/store/conditional-content/conditional-content.reducer.ts","./src/app/core/store/consultant/consultant.reducer.ts","./src/app/core/store/contact-us/contact-us.reducer.ts","./src/app/core/store/footer/footer.reducer.ts","./src/app/core/store/magazine/magazine.reducer.ts","./src/app/core/constants/ec-order-submission-error-types.ts","./src/app/core/constants/ec-payment-error-types.ts","./src/app/core/store/order/order.reducer.ts","./src/app/core/store/payment/payment.reducer.ts","./src/app/core/store/product-review/product-review.reducer.ts","./src/app/core/store/product/product.reducer.ts","./src/app/core/store/recipe/recipe.reducer.ts","./src/app/core/store/return/return.reducer.ts","./src/app/core/store/search/search.reducer.ts","./src/app/core/store/share/share.reducer.ts","./src/app/core/constants/default-failed-submitted-consultant-info.ts","./src/app/core/enums/bank-transfer-error-type.enum.ts","./src/app/core/store/start-now-app/start-now-app.reducer.ts","./src/app/core/store/user/user.reducer.ts","./src/app/core/store/voucher/voucher.reducer.ts","./src/app/core/store/website-mode/website-mode.reducer.ts","./src/app/core/store/wishlist/wishlist.reducer.ts","./src/app/core/services/product-review.service.ts","./src/app/core/store/index.ts","./src/app/core/store/product-review/product-review.effect.ts","./src/app/core/store/magazine/magazine.actions.ts","./src/app/core/store/order/index.ts","./src/app/core/store/order/order-state-models.ts","./src/app/core/store/order/order.actions.ts","./src/app/core/store/payment/index.ts","./src/app/core/store/payment/payment-state-models.ts","./src/app/core/store/payment/payment.actions.ts","./src/app/core/store/product-review/index.ts","./src/app/core/store/product-review/product-review.action.ts","./src/app/core/store/product/index.ts","./src/app/core/store/product/product.actions.ts","./src/app/core/store/recipe/index.ts","./src/app/core/store/recipe/recipe.actions.ts","./src/app/core/store/return/return.actions.ts","./src/app/core/store/search/index.ts","./src/app/core/store/search/search.actions.ts","./src/app/core/store/share/share.actions.ts","./src/app/core/store/start-now-app/index.ts","./src/app/core/store/start-now-app/start-now-app.actions.ts","./src/app/core/store/user/index.ts","./src/app/core/store/user/user.actions.ts","./src/app/core/store/voucher/index.ts","./src/app/core/store/voucher/voucher.actions.ts","./src/app/core/store/website-mode/index.ts","./src/app/core/store/website-mode/website-mode.actions.ts","./src/app/core/store/wishlist/index.ts","./src/app/core/store/wishlist/wishlist.actions.ts","./src/app/shared/components/plus-minus-counter/plus-minus-counter.component.ts","./src/app/shared/components/plus-minus-counter/plus-minus-counter.component.html","./src/app/modules/cart/components/order-line/order-line.component.html","./src/app/modules/cart/components/order-line/order-line.component.ts","./src/app/modules/cart/components/delete-from-cart-confirm-dialog/delete-from-cart-confirm-dialog.component.ts","./src/app/modules/cart/components/delete-from-cart-confirm-dialog/delete-from-cart-confirm-dialog.component.html","./src/app/modules/cart/components/order-lines/order-lines.component.html","./src/app/modules/cart/components/order-lines/order-lines.component.ts","./src/app/core/enums/promotion-message.enum.ts","./src/app/core/constants/promotion-message-locale.ts","./src/app/modules/cart/components/cart-promotion-message/cart-promotion-message.component.html","./src/app/modules/cart/components/cart-promotion-message/cart-promotion-message.component.ts","./src/app/modules/cart/components/cart-totals/cart-totals.component.html","./src/app/modules/cart/components/cart-totals/cart-totals.component.ts","./src/app/modules/cart/components/cart-item-updated-warning-modal/cart-item-updated-warning-modal.component.ts","./src/app/modules/cart/components/cart-item-updated-warning-modal/cart-item-updated-warning-modal.component.html","./src/app/modules/cart/components/cart-page/cart-page.component.html","./src/app/modules/cart/components/cart-page/cart-page.component.ts","./src/app/core/enums/checkout-page-id.enum.ts","./src/app/modules/cart/components/checkout-page/checkout-payment/billing-address-form/billing-address-form.component.html","./src/app/modules/cart/components/checkout-page/checkout-payment/billing-address-form/billing-address-form.component.ts","./src/app/modules/cart/components/checkout-page/checkout-payment/saved-paypal-payment/saved-paypal-payment.component.ts","./src/app/modules/cart/components/checkout-page/checkout-payment/saved-paypal-payment/saved-paypal-payment.component.html","./src/app/modules/cart/components/checkout-page/checkout-payment/checkout-voucher/checkout-voucher.component.html","./src/app/modules/cart/components/checkout-page/checkout-payment/checkout-voucher/checkout-voucher.component.ts","./src/app/modules/cart/components/checkout-page/checkout-order-summary/failed-order-submit-modal/failed-order-item/failed-order-item.component.html","./src/app/modules/cart/components/checkout-page/checkout-order-summary/failed-order-submit-modal/failed-order-item/failed-order-item.component.ts","./src/app/modules/cart/components/checkout-page/checkout-order-summary/failed-order-submit-modal/failed-order-submit-modal.component.html","./src/app/modules/cart/components/checkout-page/checkout-order-summary/failed-order-submit-modal/failed-order-submit-modal.component.ts","./src/app/modules/cart/components/checkout-page/checkout-payment/checkout-payment.component.html","./src/app/modules/cart/components/checkout-page/checkout-payment/checkout-payment.component.ts","./src/app/modules/cart/components/checkout-page/checkout-personal-info/shipping-address-form/shipping-address-form.component.html","./src/app/modules/cart/components/checkout-page/checkout-personal-info/shipping-address-form/shipping-address-form.component.ts","./src/app/modules/cart/components/checkout-page/checkout-personal-info/my-address-popup/my-address-popup.component.html","./src/app/modules/cart/components/checkout-page/checkout-personal-info/my-address-popup/my-address-popup.component.ts","./src/app/modules/cart/components/checkout-page/checkout-personal-info/login-modal/login-modal.component.ts","./src/app/modules/cart/components/checkout-page/checkout-personal-info/login-modal/login-modal.component.html","./src/app/modules/cart/components/checkout-page/checkout-personal-info/checkout-personal-info.component.html","./src/app/modules/cart/components/checkout-page/checkout-personal-info/checkout-personal-info.component.ts","./src/app/core/constants/order-submission-error-messages.ts","./src/app/modules/cart/components/checkout-page/checkout-order-summary/party-box/party-box.component.html","./src/app/modules/cart/components/checkout-page/checkout-order-summary/party-box/party-box.component.ts","./src/app/shared/validators/dropdown-required.validator.ts","./src/app/modules/cart/components/checkout-page/app-cart-pfas-popup/app-cart-pfas-popup.component.html","./src/app/modules/cart/components/checkout-page/app-cart-pfas-popup/app-cart-pfas-popup.component.ts","./src/app/modules/cart/components/checkout-page/checkout-order-summary/party-verification-failed-modal/party-verification-failed-modal.component.ts","./src/app/modules/cart/components/checkout-page/checkout-order-summary/party-verification-failed-modal/party-verification-failed-modal.component.html","./src/app/modules/cart/components/checkout-page/checkout-order-summary/checkout-order-summary.component.html","./src/app/modules/cart/components/checkout-page/checkout-order-summary/checkout-order-summary.component.ts","./src/app/modules/cart/components/checkout-page/checkout-order-confirmation/checkout-register-user/checkout-register-user.component.html","./src/app/modules/cart/components/checkout-page/checkout-order-confirmation/checkout-register-user/checkout-register-user.component.ts","./src/app/modules/cart/components/checkout-page/checkout-order-confirmation/checkout-order-confirmation.component.html","./src/app/modules/cart/components/checkout-page/checkout-order-confirmation/checkout-order-confirmation.component.ts","./src/app/modules/cart/components/checkout-page/checkout-page.component.html","./src/app/modules/cart/components/checkout-page/checkout-page.component.ts","./src/app/core/services/cart-feature-guard.service.ts","./src/app/core/services/empty-cart-guard.service.ts","./src/app/modules/cart/cart-routing.module.ts","./src/app/modules/cart/cart.module.ts","./src/app/modules/cart/components/add-to-cart-confirm-dialog/add-to-cart-confirm-dialog.component.html","./src/app/modules/cart/components/add-to-cart-confirm-dialog/add-to-cart-confirm-dialog.component.ts","./src/app/modules/consultant/consultant-finder-modal/consultant-finder-modal.component.html","./src/app/modules/consultant/consultant-finder-modal/consultant-finder-modal.component.ts","./src/app/modules/consultant/consultant-finder-result/consultant-finder-result.component.html","./src/app/modules/consultant/consultant-finder-result/consultant-finder-result.component.ts","./src/app/modules/consultant/consultant-finder/consultant-finder.component.html","./src/app/modules/consultant/consultant-finder/consultant-finder.component.ts","./src/app/core/services/consultant-guard.service.ts","./src/app/modules/consultant/consultant-finder-page/consultant-finder-page.component.ts","./src/app/modules/consultant/consultant-finder-page/consultant-finder-page.component.html","./src/app/modules/consultant/consultant-locator-page/consultant-locator-page.component.ts","./src/app/modules/consultant/consultant-locator-page/consultant-locator-page.component.html","./src/app/modules/consultant/my-open-parties-pages/my-open-parties-pages.component.html","./src/app/modules/consultant/my-open-parties-pages/my-open-parties-pages.component.ts","./src/app/modules/consultant/consultant-routing.module.ts","./src/app/modules/consultant/my-story-page/my-story-page.component.ts","./src/app/modules/consultant/my-story-page/my-story-page.component.html","./src/app/modules/consultant/consultant.module.ts","./src/app/modules/payment/components/card-payment-wrapper/bank-transfer-error/bank-transfer-error.component.ts","./src/app/modules/payment/components/card-payment-wrapper/bank-transfer-error/bank-transfer-error.component.html","./src/app/modules/payment/components/card-payment-method-handler.component.ts","./src/app/modules/payment/components/card-payment-provider-base-component.ts","./src/app/modules/payment/components/card-payment-wrapper/braintree/braintree.component.html","./src/app/modules/payment/components/card-payment-wrapper/braintree/braintree.component.ts","./src/app/modules/payment/components/card-payment-wrapper/pay-pal/pay-pal.component.html","./src/app/modules/payment/components/card-payment-wrapper/pay-pal/pay-pal.component.ts","./src/app/core/enums/nexio-event-types.enum.ts","./src/app/modules/payment/components/card-payment-wrapper/nexio/nexio.component.ts","./src/app/modules/payment/components/card-payment-wrapper/nexio/nexio.component.html","./src/app/modules/payment/components/card-payment-wrapper/kushki/kushki.component.ts","./src/app/modules/payment/components/card-payment-wrapper/kushki/kushki.component.html","./src/app/modules/payment/components/card-payment-wrapper/card-payment-wrapper.component.html","./src/app/modules/payment/components/card-payment-wrapper/card-payment-wrapper.component.ts","./src/app/modules/payment/components/card-payment-wrapper/saved-bank-transfer/saved-bank-transfer.component.html","./src/app/modules/payment/components/card-payment-wrapper/saved-bank-transfer/saved-bank-transfer.component.ts","./src/app/modules/payment/components/create-card-payment-method-error/create-card-payment-method-error.component.html","./src/app/modules/payment/components/create-card-payment-method-error/create-card-payment-method-error.component.ts","./src/app/modules/payment/components/saved-card/saved-card.component.html","./src/app/modules/payment/components/saved-card/saved-card.component.ts","./src/app/modules/payment/payment-handler/impl/e-commerce-payment-handler.ts","./src/app/modules/payment/payment-handler/impl/start-now-app-payment-handler.ts","./src/app/modules/payment/payment-handler/payment-handler-factory.ts","./src/app/modules/payment/payment-handler/payment-provider.utils.ts","./src/app/modules/payment/payment.module.ts","./src/app/modules/product/components/product-list-page/product-list-item/product-list-image/product-list-image.component.html","./src/app/modules/product/components/product-list-page/product-list-item/product-list-image/product-list-image.component.ts","./src/app/modules/product/components/product-list-page/product-list-item/product-list-item.component.html","./src/app/modules/product/components/product-list-page/product-list-item/product-list-item.component.ts","./src/app/modules/product/components/product-quickview-dialog/product-quickview-dialog.component.html","./src/app/modules/product/components/product-quickview-dialog/product-quickview-dialog.component.ts","./src/app/core/enums/meta-property.enum.ts","./src/app/core/services/seo.service.ts","./src/app/core/resolvers/product.resolver.ts","./src/app/shared/components/not-found-page/not-found-page.component.ts","./src/app/shared/components/not-found-page/not-found-page.component.html","./src/app/modules/product/components/product-catalog-page/product-catalog-item/product-catalog-item.component.html","./src/app/modules/product/components/product-catalog-page/product-catalog-item/product-catalog-item.component.ts","./src/app/modules/product/components/product-catalog-page/product-catalog-page.component.html","./src/app/modules/product/components/product-catalog-page/product-catalog-page.component.ts","./src/app/modules/product/components/star-rating/star-rating.component.html","./src/app/modules/product/components/star-rating/star-rating.component.ts","./src/app/modules/product/components/product-review-modal/product-review-modal.component.html","./src/app/modules/product/components/product-review-modal/product-review-modal.component.ts","./src/app/modules/product/components/product-details/product-review-and-rating/product-review-box/product-review-box.component.html","./src/app/modules/product/components/product-details/product-review-and-rating/product-review-box/product-review-box.component.ts","./src/app/modules/product/components/product-details/product-review-and-rating/product-reviews-carousel/product-reviews-carousel.component.html","./src/app/modules/product/components/product-details/product-review-and-rating/product-reviews-carousel/product-reviews-carousel.component.ts","./src/app/modules/product/components/product-details/product-review-and-rating/product-review-and-rating.component.html","./src/app/modules/product/components/product-details/product-review-and-rating/product-review-and-rating.component.ts","./src/app/modules/product/components/product-details/product-details.component.html","./src/app/modules/product/components/product-details/product-details.component.ts","./src/app/core/constants/product-catalog-type.ts","./src/app/modules/product/components/product-list-page/product-list-page.component.html","./src/app/modules/product/product-routing.module.ts","./src/app/modules/product/components/product-list-page/product-list-page.component.ts","./src/app/modules/product/product.module.ts","./src/app/modules/recipe-more/components/blog-list-page/blog-list-item/blog-image/blog-image.component.ts","./src/app/modules/recipe-more/components/blog-list-page/blog-list-item/blog-image/blog-image.component.html","./src/app/modules/recipe-more/components/blog-list-page/blog-list-item/blog-list-item.component.html","./src/app/modules/recipe-more/components/blog-list-page/blog-list-item/blog-list-item.component.ts","./src/app/modules/recipe-more/components/recipe-list-page/recipe-list-item/recipe-image/recipe-image.component.html","./src/app/modules/recipe-more/components/recipe-list-page/recipe-list-item/recipe-image/recipe-image.component.ts","./src/app/modules/recipe-more/components/recipe-list-page/recipe-list-item/recipe-list-item.component.html","./src/app/modules/recipe-more/components/recipe-list-page/recipe-list-item/recipe-list-item.component.ts","./src/app/core/services/recipe-feature-guard.service.ts","./src/app/core/store/blog/index.ts","./src/app/modules/recipe-more/components/blog-details/blog-details.component.html","./src/app/modules/recipe-more/components/blog-details/blog-details.component.ts","./src/app/core/enums/blog-list-sort-type.ts","./src/app/modules/recipe-more/components/blog-list-page/blog-list-header/blog-list-header.component.html","./src/app/modules/recipe-more/components/blog-list-page/blog-list-header/blog-list-header.component.ts","./src/app/modules/recipe-more/components/blog-list-page/blog-list-page.component.html","./src/app/modules/recipe-more/components/blog-list-page/blog-list-page.component.ts","./src/app/modules/recipe-more/components/recipe-details/recipe-details.component.html","./src/app/modules/recipe-more/components/recipe-details/recipe-details.component.ts","./src/app/core/enums/recipe-list-sort-type.ts","./src/app/modules/recipe-more/components/recipe-list-page/recipe-list-header/recipe-list-header.component.html","./src/app/modules/recipe-more/components/recipe-list-page/recipe-list-header/recipe-list-header.component.ts","./src/app/modules/recipe-more/components/recipe-list-page/recipe-list-page.component.html","./src/app/modules/recipe-more/components/recipe-list-page/recipe-list-page.component.ts","./src/app/modules/recipe-more/components/recipe-more-catalog-page/recipe-more-catalog-page.component.html","./src/app/modules/recipe-more/recipe-more-routing.module.ts","./src/app/modules/recipe-more/components/recipe-more-catalog-page/recipe-more-catalog-page.component.ts","./src/app/modules/recipe-more/recipe-more.module.ts","./src/app/shared/components/action-card/action-card.component.ts","./src/app/shared/components/action-card/action-card.component.html","./src/app/shared/components/address-validation/address-validation-error-messages/address-error-messages.component.html","./src/app/shared/components/address-validation/address-validation-error-messages/address-error-messages.component.ts","./src/app/shared/components/address-validation/address-validation.component.html","./src/app/shared/components/address-validation/address-validation.component.ts","./src/app/shared/components/app-info-card/app-info-card.component.html","./src/app/shared/components/app-info-card/app-info-card.component.ts","./src/app/shared/components/base-component/base-component.ts","./src/app/shared/components/breadcrumb-wrapper/breadcrumb-wrapper.component.ts","./src/app/shared/components/breadcrumb-wrapper/breadcrumb-wrapper.component.html","./src/app/shared/components/circular-progress/circular-progress.component.ts","./src/app/shared/components/circular-progress/circular-progress.component.html","./src/app/shared/components/confirm-modal/confirm-modal.component.html","./src/app/shared/components/confirm-modal/confirm-modal.component.ts","./src/app/shared/components/full-page-spinner/full-page-spinner.component.html","./src/app/shared/components/full-page-spinner/full-page-spinner.component.ts","./src/app/shared/components/media-gallery/media-gallery.component.html","./src/app/shared/components/media-gallery/media-gallery.component.ts","./src/app/core/constants/default-modal-options.ts","./src/app/shared/components/modal/modal.component.html","./src/app/shared/components/modal/modal.component.ts","./src/app/shared/components/page-title/page-title.component.ts","./src/app/shared/components/password-input/password-input.component.html","./src/app/shared/components/password-input/password-input.component.ts","./src/app/shared/components/ph-spinner/ph-spinner.component.ts","./src/app/shared/components/ph-spinner/ph-spinner.component.html","./src/app/shared/components/product-price-message/product-price-message.component.html","./src/app/shared/components/product-price-message/product-price-message.component.ts","./src/app/core/constants/product-type-message.ts","./src/app/shared/components/product-price/product-price.component.html","./src/app/shared/components/product-price/product-price.component.ts","./src/app/shared/components/related-carousel/related-carousel.component.html","./src/app/shared/components/related-carousel/related-carousel.component.ts","./src/app/shared/directives/ph-inner-html/ph-inner-html.directive.ts","./src/app/shared/components/romance-content-wrapper/romance-content-wrapper.component.ts","./src/app/shared/components/romance-content-wrapper/romance-content-wrapper.component.html","./src/app/shared/components/ruler-stepper/step-ruler/step-ruler.component.ts","./src/app/shared/components/ruler-stepper/step-ruler/step-ruler.component.html","./src/app/shared/components/ruler-stepper/step/step.component.html","./src/app/shared/components/ruler-stepper/step/step.component.ts","./src/app/shared/components/ruler-stepper/navigator/navigator.component.html","./src/app/shared/components/ruler-stepper/navigator/navigator.component.ts","./src/app/shared/components/select/select.component.html","./src/app/shared/components/select/select.component.ts","./src/app/shared/components/share-buttons/email-share-modal/email-share-modal.component.ts","./src/app/shared/components/share-buttons/email-share-modal/email-share-modal.component.html","./src/app/shared/components/share-buttons/share-buttons.component.ts","./src/app/shared/components/share-buttons/share-buttons.component.html","./src/app/shared/directives/input-trim/input-trim.directive.ts","./src/app/shared/components/text-field-input/text-field-input.component.html","./src/app/shared/components/text-field-input/text-field-input.component.ts","./src/app/shared/components/textarea/textarea.component.html","./src/app/shared/components/textarea/textarea.component.ts","./src/app/shared/components/voucher-instructions/voucher-instructions.component.ts","./src/app/shared/components/voucher-instructions/voucher-instructions.component.html","./src/app/shared/directives/ph-image/ph-image.directive.ts","./src/app/shared/pipes/ph-currency.pipe.ts","./src/app/shared/pipes/safe-url.pipe.ts","./src/app/shared/shared.module.ts","./src/app/shared/utils/address-utils.ts","./src/app/shared/utils/alt-text-util.service.ts","./src/app/shared/utils/app-config-util.ts","./src/app/shared/utils/array-utils.ts","./src/app/shared/utils/create-shipping-info-card-attributes.ts","./src/app/shared/utils/create-submit-consultant-info-utils.ts","./src/app/shared/utils/email-validator-utils.ts","./src/app/shared/utils/environment-utils.ts","./src/app/shared/utils/get-kushki-fomr-id-type-util.ts","./src/app/shared/utils/get-masked-card-number-utils.ts","./src/app/shared/utils/http-param-encoder.ts","./src/app/shared/utils/locale-utils.ts","./src/app/shared/utils/localize-relative-links.ts","./src/app/shared/utils/object-utils.ts","./src/app/shared/utils/product-util.service.ts","./src/app/shared/utils/recaptcha-utils.ts","./src/app/shared/utils/recipe-utils.ts","./src/app/shared/utils/scroll-utils.ts","./src/app/shared/utils/user-util.service.ts","./src/app/shared/utils/validation.utils.ts","./src/app/core/constants/create-voucher-error-frequency.ts","./src/app/shared/utils/voucher-error-utils.ts","./src/app/core/enums/currency.enum.ts","./src/environments/environment.prod-online.ts","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./src/app/modules/auth/components/login/login.component.html","./src/app/modules/auth/components/login/login.component.ts","./src/app/core/services/guest-guard.service.ts","./src/app/core/enums/auth-error-codes.enum.ts","./src/app/shared/utils/handle-b2c-error-utils.ts","./src/app/modules/auth/components/b2c-signin/b2c-signin.component.html","./src/app/modules/auth/components/b2c-signin/b2c-signin-phone.component.ts","./src/app/modules/auth/components/b2c-signin/b2c-signin.component.ts","./src/app/modules/auth/auth-routing.module.ts","./src/app/modules/auth/components/login-phone/login-phone.component.ts","./src/app/modules/auth/components/login-phone/login-phone.component.html","./src/app/modules/auth/auth.module.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.js","./node_modules/@azure/msal-common/dist/error/ServerError.js","./node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.js","./node_modules/@azure/msal-common/dist/error/JoseHeaderError.js","./node_modules/@azure/msal-common/dist/crypto/JoseHeader.js","./node_modules/@azure/msal-browser/dist/utils/MathUtils.js","./node_modules/@azure/msal-browser/dist/crypto/GuidGenerator.js","./node_modules/@azure/msal-browser/dist/utils/BrowserStringUtils.js","./node_modules/@azure/msal-browser/dist/encode/Base64Encode.js","./node_modules/@azure/msal-browser/dist/encode/Base64Decode.js","./node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.js","./node_modules/@azure/msal-browser/dist/crypto/ModernBrowserCrypto.js","./node_modules/@azure/msal-browser/dist/crypto/MsrBrowserCrypto.js","./node_modules/@azure/msal-browser/dist/crypto/MsBrowserCrypto.js","./node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.js","./node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.js","./node_modules/@azure/msal-browser/dist/cache/MemoryStorage.js","./node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.js","./node_modules/@azure/msal-browser/dist/cache/CryptoKeyStore.js","./node_modules/@azure/msal-browser/dist/crypto/CryptoOps.js","./node_modules/@azure/msal-common/dist/logger/Logger.js","./node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.js","./node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.js","./node_modules/@azure/msal-common/dist/crypto/ICrypto.js","./node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.js","./node_modules/@azure/msal-common/dist/request/ScopeSet.js","./node_modules/@azure/msal-common/dist/account/ClientInfo.js","./node_modules/@azure/msal-common/dist/authority/AuthorityType.js","./node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.js","./node_modules/@azure/msal-common/dist/account/AuthToken.js","./node_modules/@azure/msal-common/dist/packageMetadata.js","./node_modules/@azure/msal-common/dist/cache/CacheManager.js","./node_modules/@azure/msal-common/dist/utils/TimeUtils.js","./node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.js","./node_modules/@azure/msal-common/dist/utils/ProtocolUtils.js","./node_modules/@azure/msal-common/dist/account/CcsCredential.js","./node_modules/@azure/msal-browser/dist/cache/BrowserStorage.js","./node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.js","./node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.js","./node_modules/@azure/msal-common/dist/authority/ProtocolMode.js","./node_modules/@azure/msal-common/dist/authority/AuthorityOptions.js","./node_modules/@azure/msal-common/dist/config/ClientConfiguration.js","./node_modules/@azure/msal-common/dist/network/INetworkModule.js","./node_modules/@azure/msal-browser/dist/navigation/NavigationClient.js","./node_modules/@azure/msal-browser/dist/packageMetadata.js","./node_modules/@azure/msal-browser/dist/event/EventHandler.js","./node_modules/@azure/msal-common/dist/network/ThrottlingUtils.js","./node_modules/@azure/msal-common/dist/network/NetworkManager.js","./node_modules/@azure/msal-common/dist/request/RequestValidator.js","./node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.js","./node_modules/@azure/msal-common/dist/client/BaseClient.js","./node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.js","./node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.js","./node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.js","./node_modules/@azure/msal-common/dist/response/ResponseHandler.js","./node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.js","./node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.js","./node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.js","./node_modules/@azure/msal-common/dist/authority/RegionDiscovery.js","./node_modules/@azure/msal-common/dist/authority/Authority.js","./node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.js","./node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.js","./node_modules/@azure/msal-common/dist/authority/AuthorityFactory.js","./node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.js","./node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.js","./node_modules/@azure/msal-browser/dist/error/NativeAuthError.js","./node_modules/@azure/msal-common/dist/client/RefreshTokenClient.js","./node_modules/@azure/msal-common/dist/client/SilentFlowClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.js","./node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.js","./node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.js","./node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.js","./node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.js","./node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.js","./node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.js","./node_modules/@azure/msal-browser/dist/config/Configuration.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.js","./node_modules/@azure/msal-browser/dist/cache/TokenCache.js","./node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.js","./node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.js","./node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.js","./node_modules/@azure/msal-browser/dist/app/PublicClientApplication.js","./node_modules/@azure/msal-browser/dist/app/ClientApplication.js","./node_modules/@halloverden/ngx-cookiebot/__ivy_ngcc__/fesm2015/halloverden-ngx-cookiebot.js","./src/app/core/services/cookiebot-config.service.ts","./src/app/core/enums/page-category.enum.ts","./src/app/core/store/conditional-content/index.ts","./src/app/shared/components/conditional-content/conditional-content.component.ts","./src/app/shared/pipes/localize-abs-urls.pipe.ts","./src/app/core/enums/url-variable.enum.ts","./src/app/shared/pipes/fill-urls.pipe.ts","./src/app/shared/components/conditional-content-by-page-category/conditional-content-by-page-category.component.html","./src/app/shared/components/conditional-content-by-page-category/conditional-content-by-page-category.component.ts","./src/app/base/components/customer-specials-page/customer-specials-page.component.html","./src/app/base/components/customer-specials-page/customer-specials-page.component.ts","./src/app/core/constants/date-format.ts","./src/app/core/store/magazine/index.ts","./src/app/base/components/magazine-list/magazine-list.component.html","./src/app/base/components/magazine-list/magazine-list.component.ts","./src/app/core/services/party-order-payment-feature-guard.service.ts","./src/app/base/components/clear-consultant/clear-consultant.component.ts","./src/app/base/components/clear-consultant/clear-consultant.component.html","./src/app/core/store/contact-us/index.ts","./src/app/base/components/contact-us-page/contact-us-page.component.html","./src/app/base/components/contact-us-page/contact-us-page.component.ts","./src/app/core/enums/party-order-payment-pages.enum.ts","./src/app/core/enums/party-order-error-type.enum.ts","./src/app/base/components/party-order-payment/party-order-payment-search/party-order-payment-search.component.html","./src/app/base/components/party-order-payment/party-order-payment-search/party-order-payment-search.component.ts","./src/app/base/components/party-order-payment/party-order-payment-order-information/party-order-payment-order-information.component.html","./src/app/base/components/party-order-payment/party-order-payment-order-information/party-order-payment-order-information.component.ts","./src/app/base/components/party-order-payment/party-order-payment-address/party-order-payment-address.component.html","./src/app/base/components/party-order-payment/party-order-payment-address/party-order-payment-address.component.ts","./src/app/shared/components/currency-field-input/currency-field-input.component.html","./src/app/shared/components/currency-field-input/currency-field-input.component.ts","./src/app/base/components/party-order-payment/party-order-payment-info/party-order-payment-info.component.html","./src/app/base/components/party-order-payment/party-order-payment-info/party-order-payment-info.component.ts","./src/app/base/components/party-order-payment/party-order-payment-confirmation/party-order-payment-confirmation.component.html","./src/app/base/components/party-order-payment/party-order-payment-confirmation/party-order-payment-confirmation.component.ts","./src/app/base/components/party-order-payment/party-order-payment.component.html","./src/app/base/components/party-order-payment/party-order-payment.component.ts","./src/app/base/base-routing.module.ts","./src/app/base/components/contact-us-page/contact-us-form/contact-us-form.component.html","./src/app/base/components/contact-us-page/contact-us-form/contact-us-form.component.ts","./src/app/base/components/contact-us-page/contact-us-success/contact-us-success.component.ts","./src/app/base/components/contact-us-page/contact-us-success/contact-us-success.component.html","./src/app/base/base.module.ts","./src/app/core/core.module.ts","./src/app/core/services/auth-guard.service.ts","./src/app/core/services/fake-recapthca.service.ts","./node_modules/@ngrx/router-store/fesm2015/ngrx-router-store.mjs","./src/app/shared/components/toast/toast.component.html","./src/app/shared/components/toast/toast.component.ts","./src/app/core/services/usa-country-guard.service.ts","./src/app/core/services/user-feature-guard.service.ts","./src/app/modules/user/components/account/account.component.html","./src/app/modules/user/components/account/account.component.ts","./src/app/core/enums/table-sort-direction.enum.ts","./src/app/shared/components/account-header/account-header.component.html","./src/app/shared/components/account-header/account-header.component.ts","./src/app/core/constants/table-sort-direction-cycle.ts","./src/app/shared/components/sortable-table/sortable-table-header.directive.ts","./src/app/shared/components/sortable-table/sortable-table-action/sortable-table-action.component.html","./src/app/shared/components/sortable-table/sortable-table-action/sortable-table-action.component.ts","./src/app/shared/components/sortable-table/sortable-table.component.html","./src/app/shared/components/sortable-table/sortable-table.component.ts","./src/app/modules/user/components/account/addresses/addresses.component.html","./src/app/modules/user/components/account/addresses/addresses.component.ts","./src/app/core/enums/shipment-status-enum.ts","./src/app/core/constants/shipment-status-locale.ts","./src/app/modules/user/components/account/orders/order-details/order-details-back-order-items/order-details-back-order-items.component.html","./src/app/modules/user/components/account/orders/order-details/order-details-back-order-items/order-details-back-order-items.component.ts","./src/app/core/constants/carrier-type-name.ts","./src/app/modules/user/components/account/orders/order-details/order-details-cartons/carton-items/carton-items.component.html","./src/app/modules/user/components/account/orders/order-details/order-details-cartons/carton-items/carton-items.component.ts","./src/app/modules/user/components/account/orders/order-details/order-details-cartons/order-details-cartons.component.html","./src/app/modules/user/components/account/orders/order-details/order-details-cartons/order-details-cartons.component.ts","./src/app/modules/user/components/account/orders/common/order-sort-common.ts","./src/app/modules/user/components/account/orders/order-details/order-details-table/order-details-table.component.html","./src/app/modules/user/components/account/orders/order-details/order-details-table/order-details-table.component.ts","./src/app/modules/user/components/account/orders/order-details/order-details-total/order-details-total.component.html","./src/app/modules/user/components/account/orders/order-details/order-details-total/order-details-total.component.ts","./src/app/modules/user/components/account/orders/order-details/order-details.component.html","./src/app/modules/user/components/account/orders/order-details/order-details.component.ts","./src/app/modules/user/components/account/orders/order-history/order-history.component.html","./src/app/modules/user/components/account/orders/order-history/order-history.component.ts","./src/app/modules/user/components/account/orders/cc-order-history/cc-order-history.component.html","./src/app/modules/user/components/account/orders/cc-order-history/cc-order-history.component.ts","./src/app/modules/user/components/account/orders/orders.component.ts","./src/app/modules/user/components/account/orders/orders.component.html","./src/app/core/constants/payment-method-type-locale.ts","./src/app/modules/user/components/account/payment-methods/address-required-modal/address-required-modal.component.ts","./src/app/modules/user/components/account/payment-methods/address-required-modal/address-required-modal.component.html","./src/app/modules/user/components/account/payment-methods/payment-methods.component.html","./src/app/modules/user/components/account/payment-methods/payment-methods.component.ts","./src/app/modules/user/components/account/recipes/recipes.component.html","./src/app/modules/user/components/account/recipes/recipes.component.ts","./src/app/core/store/return/index.ts","./src/app/modules/user/components/account/returns/return-history/return-history.component.html","./src/app/modules/user/components/account/returns/return-history/return-history.component.ts","./src/app/modules/user/components/account/returns/returns.component.ts","./src/app/modules/user/components/account/returns/returns.component.html","./src/app/modules/user/components/account/wishlist/wishlist.component.html","./src/app/modules/user/components/account/wishlist/wishlist.component.ts","./src/app/core/constants/url.const.ts","./src/app/core/enums/input-max-length.enum.ts","./src/app/modules/user/components/registration/registration.component.html","./src/app/modules/user/components/registration/registration.component.ts","./src/app/modules/user/components/account/addresses/address-editor/address-editor.component.html","./src/app/modules/user/components/account/addresses/address-editor/address-editor.component.ts","./src/app/modules/user/components/account/orders/cc-order-details/cc-order-details-table/cc-order-details-table.component.html","./src/app/modules/user/components/account/orders/cc-order-details/cc-order-details-table/cc-order-details-table.component.ts","./src/app/modules/user/components/account/orders/cc-order-details/cc-order-details-total/cc-order-details-total.component.html","./src/app/modules/user/components/account/orders/cc-order-details/cc-order-details-total/cc-order-details-total.component.ts","./src/app/modules/user/components/account/orders/cc-order-details/cc-order-details.component.html","./src/app/modules/user/components/account/orders/cc-order-details/cc-order-details.component.ts","./src/app/modules/user/components/account/payment-methods/payment-method-base.component.ts","./src/app/modules/user/components/account/payment-methods/create-payment-method/create-payment-method.component.html","./src/app/modules/user/components/account/payment-methods/create-payment-method/create-payment-method.component.ts","./src/app/modules/user/components/account/profile/profile.component.html","./src/app/modules/user/components/account/profile/profile.component.ts","./src/app/modules/user/components/account/returns/new-return/new-return.component.html","./src/app/modules/user/components/account/returns/new-return/new-return.component.ts","./src/app/modules/user/components/account/returns/order-information/my-returns-info-card/my-returns-info-card.component.html","./src/app/modules/user/components/account/returns/order-information/my-returns-info-card/my-returns-info-card.component.ts","./src/app/modules/user/components/account/returns/order-information/address-form-modal/address-form-modal.component.html","./src/app/modules/user/components/account/returns/order-information/address-form-modal/address-form-modal.component.ts","./src/app/modules/user/components/account/returns/order-information/order-information.component.html","./src/app/modules/user/components/account/returns/order-information/order-information.component.ts","./src/app/core/enums/return-reason.ts","./src/app/core/constants/retrun-reason-locale.ts","./src/app/modules/user/components/account/returns/return-order-lines/return-order-line/return-order-line.component.html","./src/app/modules/user/components/account/returns/return-order-lines/return-order-line/return-order-line.component.ts","./src/app/modules/user/components/account/returns/return-order-lines/return-order-lines.component.html","./src/app/modules/user/components/account/returns/return-order-lines/return-order-lines.component.ts","./src/app/modules/user/components/account/returns/return-details-page/return-details-page.component.html","./src/app/modules/user/user-routing.module.ts","./src/app/modules/user/components/account/returns/return-details-page/return-details-page.component.ts","./src/app/modules/user/components/account/returns/new-return/return-stepper-navigator/return-stepper-navigator.component.html","./src/app/modules/user/components/account/returns/new-return/return-stepper-navigator/return-stepper-navigator.component.ts","./src/app/modules/user/components/account/returns/new-return/return-step-navigation-buttons/return-step-navigation-buttons.component.ts","./src/app/modules/user/components/account/returns/new-return/return-step-navigation-buttons/return-step-navigation-buttons.component.html","./src/app/shared/components/info-modal/info-modal.component.html","./src/app/shared/components/info-modal/info-modal.component.ts","./src/app/modules/user/components/account/returns/new-return/return-summary-step/return-summary-step.component.ts","./src/app/modules/user/components/account/returns/new-return/return-summary-step/return-summary-step.component.html","./src/app/modules/user/components/account/returns/new-return/select-order-step/select-order-step.component.ts","./src/app/modules/user/components/account/returns/new-return/select-order-step/select-order-step.component.html","./src/app/modules/user/components/account/returns/new-return/select-products-step/select-products-step.component.html","./src/app/modules/user/components/account/returns/new-return/select-products-step/select-products-step.component.ts","./src/app/modules/user/user.module.ts","./src/app/app-module.config.ts","./src/app/base/components/back-forward-cache-initializer/back-forward-cache-initializer.ts","./src/app/base/components/party-initializer/party-initializer.component.ts","./src/app/base/components/gtm-initializer/gtm-initializer.ts","./src/app/base/components/open-party-notification-initializer/open-party-notification-initializer.component.ts","./src/app/base/components/open-party-notification-initializer/open-party-notification-initializer.component.html","./src/app/base/components/auth-initializer/auth-initializer.component.ts","./src/app/base/components/cart-initializer/cart-initializer.component.ts","./src/app/base/components/consultant-checker/consultant-checker.component.html","./src/app/base/components/consultant-checker/consultant-checker.component.ts","./src/app/base/components/consultant-initializer/consultant-initializer.component.ts","./src/app/base/components/consultant-initializer/consultant-initializer.component.html","./src/app/base/components/replicated-site-initializer/replicated-site-initializer.component.ts","./src/app/base/components/wishlist-initializer/wishlist-initializer.component.ts","./src/app/base/components/logrocket-initializer/logrocket-initializer.component.ts","./src/app/base/components/appcues-initializer/appcues-initializer.component.ts","./src/app/base/components/title-initializer/title-initializer.component.ts","./src/app/base/components/websitemod-initializer/website-mode-initializer.component.ts","./src/app/base/components/cookiebot-initializer/cookiebot-initializer.component.html","./src/app/base/components/cookiebot-initializer/cookiebot-initializer.component.ts","./node_modules/@datadog/browser-core/esm/tools/display.js","./node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","./node_modules/@datadog/browser-core/esm/tools/monitor.js","./node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","./node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","./node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","./node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","./node_modules/@datadog/browser-core/esm/tools/timer.js","./node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","./node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","./node_modules/@datadog/browser-core/esm/tools/mergeInto.js","./node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","./node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","./node_modules/@datadog/browser-core/esm/tools/observable.js","./node_modules/@datadog/browser-core/esm/domain/context/heavyCustomerDataWarning.js","./node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","./node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","./node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","./node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","./node_modules/@datadog/browser-core/esm/browser/cookie.js","./node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","./node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","./node_modules/@datadog/browser-core/esm/transport/eventBridge.js","./node_modules/@datadog/browser-core/esm/browser/addEventListener.js","./node_modules/@datadog/browser-core/esm/domain/context/storedContextManager.js","./node_modules/@datadog/browser-core/esm/domain/tracekit/computeStackTrace.js","./node_modules/@datadog/browser-core/esm/domain/error/error.js","./node_modules/@datadog/browser-core/esm/domain/user/user.js","./node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","./node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","./node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","./node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","./node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","./node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","./node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","./node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","./node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","./node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","./node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","./node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","./node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","./node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","./node_modules/@datadog/browser-core/esm/tools/matchOption.js","./node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","./node_modules/@datadog/browser-rum-core/esm/domain/configuration.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/commonContext.js","./node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","./node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","./node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","./node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","./node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","./node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","./node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","./node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","./node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","./node_modules/@datadog/browser-rum-core/esm/browser/performanceCollection.js","./node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","./node_modules/@datadog/browser-core/esm/domain/error/error.types.js","./node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","./node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciTestContext.js","./node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","./node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","./node_modules/@datadog/browser-core/esm/tools/valueHistory.js","./node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","./node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","./node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","./node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","./node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","./node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","./node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","./node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","./node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","./node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","./node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","./node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","./node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","./node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","./node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","./node_modules/@datadog/browser-core/esm/domain/tracekit/tracekit.js","./node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","./node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","./node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","./node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","./node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","./node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","./node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestTiming.js","./node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/foregroundContexts.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","./node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","./node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","./node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","./node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","./node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","./node_modules/@datadog/browser-core/esm/transport/batch.js","./node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","./node_modules/@datadog/browser-core/esm/transport/httpRequest.js","./node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","./node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","./node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","./node_modules/@datadog/browser-core/esm/transport/flushController.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","./node_modules/@datadog/browser-rum/esm/domain/record/assembly.js","./node_modules/@datadog/browser-rum/esm/types/sessionReplayConstants.js","./node_modules/@datadog/browser-rum/esm/constants.js","./node_modules/@datadog/browser-rum/esm/domain/record/privacy.js","./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializationUtils.js","./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeStyleSheets.js","./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttribute.js","./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttributes.js","./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeNode.js","./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeDocument.js","./node_modules/@datadog/browser-rum/esm/domain/record/eventsUtils.js","./node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/moveObserver.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/mouseInteractionObserver.js","./node_modules/@datadog/browser-rum/esm/domain/replayStats.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/inputObserver.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/styleSheetObserver.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/mutationObserver.js","./node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","./node_modules/@datadog/browser-rum/esm/domain/record/record.js","./node_modules/@datadog/browser-rum/esm/domain/record/elementsScrollPositions.js","./node_modules/@datadog/browser-rum/esm/domain/record/shadowRootsController.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/observers.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/recordIds.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/scrollObserver.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/viewportResizeObserver.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/mediaInteractionObserver.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/focusObserver.js","./node_modules/@datadog/browser-rum/esm/domain/record/observers/frustrationObserver.js","./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","./node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","./node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","./node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","./node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","./node_modules/@datadog/browser-rum/esm/entries/main.js","./node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","./node_modules/@datadog/browser-core/esm/boot/init.js","./node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","./node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","./node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewContexts.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","./node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","./node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","./node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","./node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","./node_modules/@datadog/browser-rum/esm/boot/startRecording.js","./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/buildReplayPayload.js","./src/app/base/components/datadog-initializer/datadog-initializer.component.ts","./src/app/base/components/footer-link-initializer/footer-link-initializer.component.ts","./src/app/base/components/accessibe-initializer/accessibe-initializer.component.ts","./src/app/base/components/not-allowed-to-place-order-notification-initializer/not-allowed-to-place-order-notification-initializer.component.ts","./src/app/base/components/not-allowed-to-place-order-notification-initializer/not-allowed-to-place-order-notification-initializer.component.html","./src/app/app.component.html","./src/app/app.component.ts","./src/app/http-bearer-token.interceptor.ts","./src/app/modules/conditional-content/components/conditional-content-page/conditional-content-page.component.html","./src/app/modules/conditional-content/components/conditional-content-page/conditional-content-page.component.ts","./src/app/modules/conditional-content/conditional-content-wildcard-routing.module.ts","./src/app/modules/conditional-content/components/category-conditional-content-page/category-conditional-content-page.component.html","./src/app/modules/conditional-content/components/category-conditional-content-page/category-conditional-content-page.component.ts","./src/app/modules/conditional-content/conditional-content-routing.module.ts","./src/app/modules/conditional-content/conditional-content.module.ts","./src/app/base/components/layout/components/header-sna/header-sna.component.ts","./src/app/base/components/layout/components/header-sna/header-sna.component.html","./src/app/base/components/layout/delivery-info-layout/delivery-info-layout.component.ts","./src/app/base/components/layout/delivery-info-layout/delivery-info-layout.component.html","./src/app/modules/delivery-info/components/carton-table/carton-table.component.html","./src/app/modules/delivery-info/components/carton-table/carton-table.component.ts","./src/app/modules/delivery-info/components/deliver-info-page/delivery-info-page.component.html","./src/app/modules/delivery-info/delivery-info-routing.module.ts","./src/app/modules/delivery-info/components/deliver-info-page/delivery-info-page.component.ts","./src/app/modules/delivery-info/delivery-info.module.ts","./src/app/base/components/layout/components/footer-bottom-sna/footer-bottom-sna.component.ts","./src/app/base/components/layout/components/footer-bottom-sna/footer-bottom-sna.component.html","./src/app/base/components/layout/start-now-app-layout/start-now-app-layout.component.ts","./src/app/base/components/layout/start-now-app-layout/start-now-app-layout.component.html","./src/app/modules/start-now-app/enums/start-now-app-step.enum.ts","./src/app/modules/start-now-app/components/start-now-app-step-base/start-now-step-base.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/do-you-know-consultant-step/do-you-know-consultant-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/do-you-know-consultant-step/do-you-know-consultant-step.component.html","./src/app/shared/components/ph-select/ph-select.component.html","./src/app/shared/components/ph-select/ph-select.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/select-consultant-step/no-consultant-found-modal/no-consultant-found-modal.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/select-consultant-step/no-consultant-found-modal/no-consultant-found-modal.component.html","./src/app/modules/start-now-app/components/sna-recaptcha/sna-recaptcha.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/select-consultant-step/select-consultant-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/select-consultant-step/select-consultant-step.component.ts","./src/app/core/enums/language-preference-type.enum.ts","./src/app/modules/start-now-app/components/start-now-app-steps/find-consultant-by-zip-code/find-consultant-by-zip-code.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/find-consultant-by-zip-code/find-consultant-by-zip-code.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/confirm-consultant-step/consultant-box/consultant-box.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/confirm-consultant-step/consultant-box/consultant-box.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/confirm-consultant-step/confirm-consultant-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/confirm-consultant-step/confirm-consultant-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/registration-code-step/registration-code-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/registration-code-step/registration-code-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-consultant-step-wrapper/start-now-app-consultant-step-wrapper.component.html","./src/app/modules/start-now-app/components/start-now-app-consultant-step-wrapper/start-now-app-consultant-step-wrapper.component.ts","./src/app/shared/components/stepper-base/stepper-base.component.ts","./src/app/modules/start-now-app/components/start-now-app-progress-bar/start-now-app-progress-bar.component.ts","./src/app/modules/start-now-app/components/start-now-app-progress-bar/start-now-app-progress-bar.component.html","./src/app/core/constants/months-of-year.ts","./src/app/shared/components/number-field-input/number-field-input.component.html","./src/app/shared/components/number-field-input/number-field-input.component.ts","./src/app/shared/utils/get-generic-error-message-utils.ts","./src/app/modules/start-now-app/components/sna-http-status-errors/sna-http-status-errors.component.html","./src/app/modules/start-now-app/components/sna-http-status-errors/sna-http-status-errors.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/about-you-step/about-you-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/about-you-step/about-you-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/connect-with-you-step/connect-with-you-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/connect-with-you-step/connect-with-you-step.component.ts","./src/app/core/enums/address-validation-errors.enum.ts","./src/app/core/constants/address-validation-error-messages.ts","./src/app/modules/start-now-app/components/sna-address-validation-modal/sna-address-validation-error-messages/sna-address-error-messages.component.html","./src/app/modules/start-now-app/components/sna-address-validation-modal/sna-address-validation-error-messages/sna-address-error-messages.component.ts","./src/app/modules/start-now-app/components/sna-address-validation-modal/sna-address-validation-modal.component.html","./src/app/modules/start-now-app/components/sna-address-validation-modal/sna-address-validation-modal.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/wait-business-tools-step/wait-business-tools-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/wait-business-tools-step/wait-business-tools-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/select-starter-kit-step/starter-kit-card/starter-kit-card.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/select-starter-kit-step/starter-kit-card/starter-kit-card.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/less-deposit-information/less-deposit-information.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/less-deposit-information/less-deposit-information.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/select-starter-kit-step/select-starter-kit-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/select-starter-kit-step/select-starter-kit-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/password-backoffice-portal-step/password-strength-bar/password-strength-bar.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/password-backoffice-portal-step/password-strength-bar/password-strength-bar.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/password-backoffice-portal-step/password-backoffice-portal-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/password-backoffice-portal-step/password-backoffice-portal-step.component.html","./src/app/shared/components/ssn-number-field-input/ssn-number-field-input.component.html","./src/app/shared/components/ssn-number-field-input/ssn-number-field-input.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/consultant-agreement-step/consultant-agreement-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/consultant-agreement-step/consultant-agreement-step.component.ts","./src/app/shared/utils/save-file.utils.ts","./src/app/core/enums/ssn-block-end-index.enum.ts","./src/app/shared/utils/ssn-masking-utils.ts","./src/app/modules/start-now-app/components/sna-info-cards/sna-info-card-header/sna-info-card-header.component.html","./src/app/modules/start-now-app/components/sna-info-cards/sna-info-card-header/sna-info-card-header.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/personal-info-card/personal-info-card.component.html","./src/app/modules/start-now-app/components/sna-info-cards/personal-info-card/personal-info-card.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/contact-information-card/contact-information-card.component.html","./src/app/modules/start-now-app/components/sna-info-cards/contact-information-card/contact-information-card.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/address-card/address-card.component.html","./src/app/modules/start-now-app/components/sna-info-cards/address-card/address-card.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/starter-kit-info-card/starter-kit-info-card.component.html","./src/app/modules/start-now-app/components/sna-info-cards/starter-kit-info-card/starter-kit-info-card.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/recruiter-card/recruiter-card.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/recruiter-card/recruiter-card.component.html","./src/app/core/constants/consultant-submit-error-message.ts","./src/app/core/enums/congratulation-type.enum.ts","./src/app/modules/start-now-app/components/start-now-app-steps/double-check-step/double-check-step.helper.ts","./src/app/core/enums/nouns-type.enum.ts","./src/app/core/enums/browser-type.enum.ts","./src/app/shared/components/oxxo-voucher-container/oxxo-voucher-container.component.html","./src/app/shared/components/oxxo-voucher-container/oxxo-voucher-container.component.ts","./src/app/shared/utils/browser-utils.ts","./src/app/modules/payment/components/voucher-payment-modal/oxxo-voucher-payment-modal/oxxo-voucher-payment-modal.component.html","./src/app/modules/payment/components/voucher-payment-modal/oxxo-voucher-payment-modal/oxxo-voucher-payment-modal.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/double-check-step/consultant-submit-failed-modal/consultant-submit-failed-modal.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/double-check-step/consultant-submit-failed-modal/consultant-submit-failed-modal.component.ts","./src/app/modules/start-now-app/components/sna-consultant-submit/sna-consultant-submit.component.html","./src/app/modules/start-now-app/components/sna-consultant-submit/sna-consultant-submit.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/password-card/password-card.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/password-card/password-card.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/double-check-step/double-check-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/double-check-step/double-check-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/payment-step-base.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/payment-type-selector/payment-type-selector.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/payment-type-selector/payment-type-selector.component.ts","./src/app/modules/payment/components/saved-voucher/saved-voucher.component.html","./src/app/modules/payment/components/saved-voucher/saved-voucher.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/create-voucher-payment-error/create-voucher-payment-error.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/create-voucher-payment-error/create-voucher-payment-error.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/order-summary/order-summary.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/order-summary/order-summary.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/payment-type-changed-modal/payment-type-changed-modal.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/payment-type-changed-modal/payment-type-changed-modal.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/payment-step.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/payment-step/payment-step.component.ts","./src/app/modules/start-now-app/components/start-now-app-stepper/back-forth-buttons/back-forth-buttons.component.html","./src/app/modules/start-now-app/components/start-now-app-stepper/back-forth-buttons/back-forth-buttons.component.ts","./src/app/modules/start-now-app/components/start-now-app-stepper/start-now-app-stepper.component.html","./src/app/modules/start-now-app/components/start-now-app-stepper/start-now-app-stepper.component.ts","./src/app/modules/start-now-app/components/sna-info-cards/payment-card/payment-card.component.html","./src/app/modules/start-now-app/components/sna-info-cards/payment-card/payment-card.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/congratulation/congratulation-summary/congratulation-summary.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/congratulation/congratulation-summary/congratulation-summary.component.ts","./src/app/modules/start-now-app/components/start-now-app-steps/congratulation/congratulation.component.html","./src/app/modules/start-now-app/components/start-now-app-steps/congratulation/congratulation.component.ts","./src/app/modules/start-now-app/enums/start-now-app-offline-messages.enum.ts","./src/app/core/constants/start-now-app-offline-messages.ts","./src/app/modules/start-now-app/components/start-now-app-offline-modal/start-now-app-offline-modal.component.html","./src/app/modules/start-now-app/components/start-now-app-offline-modal/start-now-app-offline-modal.component.ts","./src/app/modules/start-now-app/components/sna-query-param-checker/sna-query-param-checker.component.ts","./src/app/modules/start-now-app/components/sna-disabled-page/sna-disabled-page.component.ts","./src/app/modules/start-now-app/components/sna-disabled-page/sna-disabled-page.component.html","./src/app/modules/start-now-app/components/start-now-app.component.html","./src/app/modules/start-now-app/start-now-app-routing.module.ts","./src/app/modules/start-now-app/components/start-now-app.component.ts","./src/app/modules/start-now-app/start-now-app.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@azure/msal-browser/dist/event/EventMessage.js","./node_modules/@azure/msal-angular/__ivy_ngcc__/fesm2015/azure-msal-angular.js","./node_modules/@azure/msal-browser/dist/_virtual/_tslib.js","./node_modules/@azure/msal-browser/dist/error/BrowserAuthError.js","./node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.js","./node_modules/@azure/msal-browser/dist/event/EventType.js","./node_modules/@azure/msal-browser/dist/utils/BrowserConstants.js","./node_modules/@azure/msal-browser/dist/network/FetchClient.js","./node_modules/@azure/msal-browser/dist/network/XhrClient.js","./node_modules/@azure/msal-browser/dist/utils/BrowserUtils.js","./node_modules/@azure/msal-common/dist/_virtual/_tslib.js","./node_modules/@azure/msal-common/dist/error/AuthError.js","./node_modules/@azure/msal-common/dist/error/ClientAuthError.js","./node_modules/@azure/msal-common/dist/error/ClientConfigurationError.js","./node_modules/@azure/msal-common/dist/url/UrlString.js","./node_modules/@azure/msal-common/dist/utils/Constants.js","./node_modules/@azure/msal-common/dist/utils/StringUtils.js","./node_modules/braintree-web-drop-in/dist/browser/dropin.js","./node_modules/file-saver/dist/FileSaver.min.js","./node_modules/http-status-codes/build/es/status-codes.js","./node_modules/keen-slider/keen-slider.es.js","./node_modules/lodash.clonedeep/index.js","./node_modules/logrocket-ngrx/dist/lib/index.js","./node_modules/logrocket/dist/build.umd.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-ps.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku-kmr.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/ng-circle-progress/__ivy_ngcc__/fesm2015/ng-circle-progress.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/exhaustMap.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/util/TimeoutError.js","./node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js","./node_modules/rxjs/_esm2015/internal/operators/timeout.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/moment/locale/ sync ^\\.\\/.*$","./node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/cdk/fesm2015/coercion.mjs","./node_modules/@angular/cdk/fesm2015/platform.mjs","./node_modules/@angular/cdk/fesm2015/layout.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.mjs","./node_modules/rxjs/_esm2015/internal/operators/endWith.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/@ng-select/ng-select/fesm2015/ng-select-ng-select.mjs","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/operators/ignoreElements.js","./node_modules/rxjs/_esm2015/internal/operators/materialize.js","./node_modules/rxjs/_esm2015/internal/operators/groupBy.js","./node_modules/rxjs/_esm2015/internal/operators/dematerialize.js","./node_modules/@ngrx/effects/fesm2015/ngrx-effects.mjs","./node_modules/@ngrx/store-devtools/fesm2015/ngrx-store-devtools.mjs","./node_modules/@ngrx/store/fesm2015/ngrx-store.mjs","./node_modules/rxjs/_esm2015/internal/operators/pluck.js","./node_modules/ng-recaptcha/fesm2015/ng-recaptcha.mjs","./node_modules/rxjs/_esm2015/internal/operators/throttle.js","./node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/ngx-infinite-scroll/fesm2015/ngx-infinite-scroll.mjs","./node_modules/ngx-mask/node_modules/tslib/tslib.es6.mjs","./node_modules/ngx-mask/fesm2015/ngx-mask.mjs","./node_modules/ngx-paypal/fesm2015/ngx-paypal.mjs","./node_modules/ngx-toastr/fesm2015/ngx-toastr.mjs"],"sourcesContent":["\"use strict\";(function(global){global.ng=global.ng||{};global.ng.common=global.ng.common||{};global.ng.common.locales=global.ng.common.locales||{};const u=undefined;function plural(val){const n=val,i=Math.floor(Math.abs(val)),v=val.toString().replace(/^[^.]*\\.?/,\"\").length;if(i===1&&v===0)return 1;return 5}global.ng.common.locales[\"en-us-posix\"]=[\"en-US-POSIX\",[[\"a\",\"p\"],[\"AM\",\"PM\"],u],[[\"AM\",\"PM\"],u,u],[[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"],[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"]],u,[[\"J\",\"F\",\"M\",\"A\",\"M\",\"J\",\"J\",\"A\",\"S\",\"O\",\"N\",\"D\"],[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]],u,[[\"B\",\"A\"],[\"BC\",\"AD\"],[\"Before Christ\",\"Anno Domini\"]],0,[6,0],[\"M/d/yy\",\"MMM d, y\",\"MMMM d, y\",\"EEEE, MMMM d, y\"],[\"h:mm a\",\"h:mm:ss a\",\"h:mm:ss a z\",\"h:mm:ss a zzzz\"],[\"{1}, {0}\",u,\"{1} 'at' {0}\",u],[\".\",\",\",\";\",\"%\",\"+\",\"-\",\"E\",\"\\xD7\",\"0/00\",\"INF\",\"NaN\",\":\"],[\"0.######\",\"0%\",\"\\xA4\\xA00.00\",\"0.000000E+000\"],\"USD\",\"$\",\"US Dollar\",{},\"ltr\",plural,[[[\"mi\",\"n\",\"in the morning\",\"in the afternoon\",\"in the evening\",\"at night\"],[\"midnight\",\"noon\",\"in the morning\",\"in the afternoon\",\"in the evening\",\"at night\"],u],[[\"midnight\",\"noon\",\"morning\",\"afternoon\",\"evening\",\"night\"],u,u],[\"00:00\",\"12:00\",[\"06:00\",\"12:00\"],[\"12:00\",\"18:00\"],[\"18:00\",\"21:00\"],[\"21:00\",\"06:00\"]]]]})(typeof globalThis!==\"undefined\"&&globalThis||typeof global!==\"undefined\"&&global||typeof window!==\"undefined\"&&window);","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n {\n path: 'search',\n loadChildren: () => import('./modules/search/search.module').then((m) => m.SearchModule),\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","/* eslint-disable max-len */\nimport { BrowserCacheLocation, Configuration } from '@azure/msal-browser';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getLanguage } from '@shared/utils/locale-utils';\n\nconst isIE =\n window.navigator.userAgent.indexOf('MSIE ') > -1 ||\n window.navigator.userAgent.indexOf('Trident/') > -1;\n\nexport const b2cPolicies = {\n names: {\n signInEmbedded: 'b2c_1a_signinembedded',\n signInPhone: 'b2c_1a_signinphone',\n verifyPhoneNumber: 'b2c_1a_verifyphonenumber',\n profileEditPasswordChange: 'b2c_1a_profileeditpasswordchange',\n },\n authorities: {\n signInEmbedded: {\n authority: `https://${environment.b2c.domain}/${environment.b2c.tenant}.onmicrosoft.com/b2c_1a_signinembedded`,\n },\n signInPhone: {\n authority: `https://${environment.b2c.domain}/${environment.b2c.tenant}.onmicrosoft.com/b2c_1a_signinphone`,\n },\n },\n authorityDomain: environment.b2c.domain,\n};\n\nexport const msalConfig: Configuration = {\n auth: {\n clientId: environment.b2c.clientId,\n authority: b2cPolicies.authorities.signInEmbedded.authority,\n knownAuthorities: [b2cPolicies.authorityDomain],\n navigateToLoginRequestUrl: true,\n postLogoutRedirectUri: '/',\n },\n cache: {\n cacheLocation: BrowserCacheLocation.LocalStorage,\n storeAuthStateInCookie: isIE,\n },\n system: {\n allowRedirectInIframe: true,\n loggerOptions: {\n loggerCallback: () => {},\n piiLoggingEnabled: false,\n },\n },\n};\n\nexport const protectedResources = {\n defaultScopes: [environment.b2c.customerScope, null],\n endpoints: [\n { endpoint: `${environment.ecommerceBackendUri}api/cart/merge` },\n { endpoint: `${environment.ecommerceBackendUri}api/returns*` },\n { endpoint: `${environment.ecommerceBackendUri}api/order*` },\n { endpoint: `${environment.ecommerceBackendUri}api/availability` },\n { endpoint: `${environment.ecommerceBackendUri}api/recipe/likes` },\n { endpoint: `${environment.ecommerceBackendUri}api/recipe/*/like` },\n { endpoint: `${environment.ecommerceBackendUri}api/address*` },\n {\n endpoint: `${environment.ecommerceBackendUri}api/user`,\n scopes: [\n { httpMethod: 'GET', scopes: [environment.b2c.customerScope] },\n { httpMethod: 'PUT', scopes: [environment.b2c.customerScope] },\n ],\n },\n { endpoint: `${environment.ecommerceBackendUri}api/user/consultant` },\n { endpoint: `${environment.ecommerceBackendUri}api/payment/methods*` },\n {\n endpoint: `${environment.ecommerceBackendUri}api/wishlist/merge`,\n scopes: [{ httpMethod: 'POST', scopes: [environment.b2c.customerScope] }],\n },\n ],\n};\n\n/**\n * Scopes you add here will be prompted for user consent during sign-in.\n * By default, MSAL.js will add OIDC scopes (openid, profile) to any login request.\n * For more information about OIDC scopes, visit:\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\n */\nexport const loginRequest = {\n scopes: ['offline_access'],\n};\n\n/**\n * An optional silentRequest object can be used to achieve silent SSO\n * between applications by providing a \"loginHint\" property (such as a username). For more, visit:\n * https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-js-sso#sso-between-different-apps\n * If you do not receive the username claim in ID tokens, see also:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/FAQ.md#why-is-getaccountbyusername-returning-null-even-though-im-signed-in\n */\nexport const silentRequest = {\n scopes: ['openid'],\n prompt: 'none',\n};\n\nexport function createB2CUrl(policyName: string, localeId: Locale, redirectUri: string): string {\n return `https://${environment.b2c.domain}/${\n environment.b2c.domain\n }/oauth2/v2.0/authorize?p=${policyName}&client_id=${\n environment.b2c.clientId\n // eslint-disable-next-line max-len\n }&nonce=defaultNonce&redirect_uri=${redirectUri}&scope=openid&response_type=id_token&prompt=login&ui_locales=${getLanguage(\n localeId,\n )}`;\n}\n","
\n
\n
\n \n \n \"bbb\"\n \n
\n\n
\n\n \n ©{{ currentYear }} Princess House, Inc. All Rights Reserved\n
\n
\n\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { FooterBackgroundShade } from '@core/enums/footer-bg-shade.enum';\nimport { environment } from '@env';\n\n@Component({\n selector: 'app-footer-bottom',\n templateUrl: './footer-bottom.component.html',\n styleUrls: ['../footer.common.scss', './footer-bottom.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterBottomComponent implements OnInit {\n @Input() shade: FooterBackgroundShade;\n readonly feature = environment.feature;\n constructor() {}\n\n currentYear: number;\n\n ngOnInit() {\n this.currentYear = new Date().getFullYear();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'app-footer-container',\n templateUrl: './footer-container.component.html',\n styleUrls: ['./footer-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterContainerComponent {\n constructor() {}\n}\n","
\n \n
\n","\n \n \n {{ link.title }}\n \n \n \n \n {{ link.title }}\n \n \n \n \n {{ link.title }}\n \n \n {{ link.title }}\n\n","import { Component, Inject, Input, LOCALE_ID, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BaseRoutes, CartRoutes } from '@core/constants/routes.const';\nimport { FooterLink } from '@core/store/footer/footer-state-models';\nimport { scrollToTop } from '@shared/utils/scroll-utils';\nimport { Subscription } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\n\n@Component({\n selector: 'app-footerlink',\n templateUrl: './footerlink.component.html',\n styleUrls: ['./footerlink.component.scss'],\n})\nexport class FooterlinkComponent implements OnDestroy {\n @Input() link: FooterLink;\n @Input() isSecondary: Boolean;\n @Input() linkTarget: '_blank' | '_slef' = '_blank';\n\n readonly Routes = {\n ClearConsultant: BaseRoutes.ClearConsultant,\n Checkout: CartRoutes.Checkout,\n };\n\n private route: string;\n private subscription: Subscription;\n\n public get linkStyle(): string {\n return `${this.isExternal ? 'external' : 'internal'}_${\n this.isSecondary ? 'secondary' : 'primary'\n }`;\n }\n\n private get isExternal(): boolean {\n return this.link.url.startsWith('http') ?? true;\n }\n\n constructor(\n @Inject(LOCALE_ID) private localeId: string,\n private router: Router,\n ) {\n this.subscription = this.router.events\n .pipe(\n startWith(new NavigationEnd(0, window.location.pathname, window.location.pathname)),\n filter((e) => e instanceof NavigationEnd),\n )\n .subscribe((e: NavigationEnd) => {\n this.route = e.url.replace(`/${this.localeId}`, '').split('?')[0];\n });\n }\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n linkIsHidden(url: string): boolean {\n if (url === `/${this.Routes.ClearConsultant}`) {\n switch (this.route) {\n case `/${this.Routes.Checkout}`:\n return true;\n\n default:\n return false;\n }\n } else {\n return false;\n }\n }\n\n scrollToTopOfThePage(link: FooterLink): void {\n if (link.url.startsWith('/')) {\n scrollToTop();\n }\n }\n}\n","
\n
\n \n
\n
\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FooterBackgroundShade } from '@core/enums/footer-bg-shade.enum';\nimport { FooterLink } from '@core/store/footer/footer-state-models';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-footer-links',\n templateUrl: './footer-links.component.html',\n styleUrls: ['../footer.common.scss', './footer-links.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterLinksComponent {\n @Input() shade: FooterBackgroundShade;\n @Input() links: Observable;\n @Input() isSecondary: boolean = false;\n @Input() linkTarget: '_blank' | '_self';\n\n constructor() {}\n}\n","
\n
\n
\n
\n
\n
\n \n
\n
\n Be social. Connect with us. \n
\n \n \"Facebook\"\n \n \n \"Twitter\"\n \n \n \"Pinterest\"\n \n \n \"Instagram\"\n \n \n \"Youtube\"\n \n
\n
\n \n
\n
\n \n CONSULTANT'S CORNER\n \n \n
\n
\n
\n
\n
\n","import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID } from '@angular/core';\nimport { FooterBackgroundShade } from '@core/enums/footer-bg-shade.enum';\nimport { environment } from '@env';\n\n@Component({\n selector: 'app-footer-top',\n templateUrl: './footer-top.component.html',\n styleUrls: ['../footer.common.scss', './footer-top.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterTopComponent {\n @Input() shade: FooterBackgroundShade;\n readonly feature = environment.feature;\n\n constructor(@Inject(LOCALE_ID) private localeId: string) {}\n\n consultantCornerUrl(): string {\n return `${environment.consultantCorner2Uri}/${this.localeId}/`;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'app-header-container',\n templateUrl: './header-container.component.html',\n styleUrls: ['./header-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderContainerComponent {\n constructor() {}\n}\n","
\n \n
\n","
1\" ngbDropdown container=\"body\">\n \n \n \n
\n \n {{ locale[lang.code] || lang.code }}\n \n
\n
\n","import { ChangeDetectionStrategy, Component, Inject, LOCALE_ID } from '@angular/core';\nimport { LanguagesLocale } from '@core/constants/locale';\nimport { LanguageDropdownEntry } from '@core/models/language.dropdown.entry';\nimport { environment } from '@env';\n\n@Component({\n selector: 'app-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: ['./language-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LanguageSelectorComponent {\n languages: LanguageDropdownEntry[];\n locale = LanguagesLocale;\n currentLocale: string;\n\n constructor(@Inject(LOCALE_ID) public localeId: string) {\n this.languages = environment.languages;\n this.currentLocale = localeId;\n }\n\n handleLanguageClick(language: LanguageDropdownEntry): void {\n const url = new URL(window.location.href);\n const queryParams = url.searchParams;\n queryParams.set('lid', language.lid.toString());\n url.search = queryParams.toString();\n window.location.href = url.toString();\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ConsultantRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport { selectParty } from '@core/store/consultant';\nimport { Party } from '@core/store/consultant/consultant-state-models';\nimport { resetParty } from '@core/store/consultant/consultant.actions';\nimport { Store } from '@ngrx/store';\nimport { ConfirmModalComponent } from '@shared/components/confirm-modal/confirm-modal.component';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-leave-party-popup',\n templateUrl: './leave-party-popup.component.html',\n styleUrls: ['./leave-party-popup.component.scss'],\n})\nexport class LeavePartyPopupComponent implements OnInit {\n party$: Observable;\n @ViewChild('modal') private modal: ConfirmModalComponent;\n\n constructor(\n private store$: Store,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n this.party$ = this.store$.select(selectParty);\n }\n\n open() {\n this.modal.open();\n }\n\n leaveParty() {\n this.store$.dispatch(resetParty());\n this.router.navigate([ConsultantRoutes.MyOpenPartiesRoute]);\n }\n}\n","\n
\n

You are shopping with\n {{ (party$ | async)?.partyName }} party.\n

\n \n

\n

Are you sure that you want to leave this party and find a different one?

\n
\n\n","
\n \n\n\n","import { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { ConsultantRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport { selectCurrentConsultantParties, selectParty } from '@core/store/consultant';\nimport { Party } from '@core/store/consultant/consultant-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LeavePartyPopupComponent } from './leave-party-popup/leave-party-popup.component';\n\n@Component({\n selector: 'app-party-header',\n templateUrl: './party-header.component.html',\n styleUrls: ['./party-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PartyHeaderComponent implements OnInit {\n party$: Observable;\n openPartyExists$: Observable;\n\n myOpenPartiesRoute = ConsultantRoutes.MyOpenPartiesRoute;\n\n @ViewChild('leavePopup') private leavePopup: LeavePartyPopupComponent;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.party$ = this.store$.select(selectParty);\n this.openPartyExists$ = this.store$\n .select(selectCurrentConsultantParties)\n .pipe(map((parties) => !!parties?.length));\n }\n\n openLeavePopup() {\n this.leavePopup.open();\n }\n}\n","
\n
\n
\n Skip to navigation\n Skip to main content\n Skip to footer\n \n
\n \n
\n
\n
\n
\n\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ConsultantRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport { selectCurrentConsultant, selectHasCurrentConsultant } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-header-top',\n templateUrl: './header-top.component.html',\n styleUrls: ['./header-top.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderTopComponent {\n readonly feature = environment.feature;\n readonly ConsultantRoutes = ConsultantRoutes;\n currentConsultant$: Observable = this.store$.select(selectCurrentConsultant);\n hasCurrentCurrentConsultant: Observable = this.store$.select(selectHasCurrentConsultant);\n\n constructor(private store$: Store) {}\n\n skipTo(element: string) {\n const htmlElement: HTMLElement = document.querySelector(element);\n\n htmlElement.scrollIntoView();\n htmlElement.setAttribute('tabindex', '-1');\n htmlElement.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { selectSearchLoading } from '@core/store/search';\nimport { Store } from '@ngrx/store';\nimport { scrollToTop } from '@shared/utils/scroll-utils';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-search-box',\n templateUrl: './search-box.component.html',\n styleUrls: ['./search-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchBoxComponent implements OnInit {\n searchTerm: string = '';\n loading$: Observable;\n\n constructor(private router: Router, private store$: Store) {}\n\n ngOnInit(): void {\n this.loading$ = this.store$.select(selectSearchLoading);\n }\n\n @HostListener('window:keydown./', ['$event'])\n highlightSearch(event: KeyboardEvent) {\n if ((event.target).matches('input')) {\n return;\n }\n event.preventDefault();\n const htmlElement: HTMLElement = document.querySelector('#search');\n\n scrollToTop();\n htmlElement.focus();\n }\n\n search() {\n if (this.searchTerm.length) {\n this.router.navigate(['search', this.searchTerm]);\n this.searchTerm = '';\n }\n }\n}\n","
\n \n \n
\n \n \n
\n
\n","\n \"cart\"\n \n \n {{ quantityCount }}\n \n \n 99+\n \n
\n\n","import { Component, Input } from '@angular/core';\nimport { CartRoutes } from '@core/constants/routes.const';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-cart-icon',\n templateUrl: './cart-icon.component.html',\n styleUrls: ['./cart-icon.component.scss'],\n})\nexport class CartIconComponent {\n @Input() quantityCount$: Observable;\n\n readonly ShoppingCartRoute = CartRoutes.ShoppingCart;\n\n constructor() {}\n}\n","
\n
\n
\n
\n \n \"navbar\"\n \n
\n \n
\n
\n
\n \n \"logo\"\n \n
\n
\n \n \n
\n \n \"myaccount\"\n \n
\n \n Sign in\n \n
\n
\n
\n
\n
\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n} from '@angular/core';\nimport { AuthRoutes, UserRoute } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { selectCart } from '@core/store/cart';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\nimport { UserUtilService } from '@shared/utils/user-util.service';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-header-content',\n templateUrl: './header-content.component.html',\n styleUrls: ['./header-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderContentComponent implements OnInit {\n @Input() menuCollapsed: boolean = true;\n @Output() toggleMenu = new EventEmitter();\n\n readonly feature = environment.feature;\n readonly MyAccountRoute = UserRoute.MyAccount;\n readonly LoginRoute = AuthRoutes.Login;\n\n quantityCount$: Observable;\n isAuthenticated$: Observable;\n isSpanishLanguage: boolean;\n\n constructor(\n private store$: Store,\n @Inject(LOCALE_ID) private localeId: string,\n public productUtilService: ProductUtilService,\n public userUtilService: UserUtilService,\n ) {}\n\n ngOnInit(): void {\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n this.quantityCount$ = this.store$.select(selectCart).pipe(\n distinctUntilChanged(\n (a, b) => JSON.stringify(a?.orderLines) === JSON.stringify(b?.orderLines),\n ),\n map((x) =>\n x?.orderLines.length\n ? x?.orderLines.map((orderLine) => orderLine.quantity).reduce((sum, qt) => sum + qt)\n : 0,\n ),\n );\n this.isSpanishLanguage = !!this.localeId.includes('es');\n }\n}\n","
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n \n
\n
\n \n
  • \n Shop\n
  • \n
  • Start Your Business\n
  • Host\n
  • Recipes + More\n
  • Our Story\n
  • \n Logout\n
  • \n \n
    \n \n
    \n
    \n
    \n
    \n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ConditionalContentRoutes, ProductRoutes } from '@core/constants/routes.const';\nimport { Locale } from '@core/enums/locale';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AuthService } from '@core/services/auth.service';\nimport { LoggerService } from '@core/services/logger.service';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { selectCurrentConsultant } from '@core/store/consultant';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-header-navigation',\n templateUrl: './header-navigation.component.html',\n styleUrls: ['./header-navigation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderNavigationComponent implements OnInit, OnDestroy {\n @Input() menuCollapsed: boolean = true;\n @Output() toggleMenu = new EventEmitter();\n @ViewChild('firstElement') firstElement: ElementRef;\n\n readonly ConditionalContentRoutes = ConditionalContentRoutes;\n readonly ProductRoutes = ProductRoutes;\n readonly ec1ReplicatedSiteUrlBase = environment.ec1StartYourBusinessUrl;\n readonly feature = environment.feature;\n\n isAuthenticated$: Observable;\n isStartYourBusinessRedirectedToEc1: boolean;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n @Inject(LOCALE_ID) private localeId: Locale,\n private store$: Store,\n private router: Router,\n public appInitService: AppInitService,\n public loggerService: LoggerService,\n private authService: AuthService,\n ) {}\n\n ngOnInit(): void {\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n this.isStartYourBusinessRedirectedToEc1 =\n this.appInitService.Settings.ec.startYourBusinessRedirectToEC1;\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n logout() {\n this.authService.logOut();\n this.router.navigate(['/']);\n }\n\n onShown() {\n this.firstElement.nativeElement.focus();\n }\n\n toggle() {\n this.toggleMenu.emit();\n const navigationToggler: HTMLElement = document.querySelector('#navigationToggler');\n navigationToggler.focus();\n }\n\n onStartYourBusinessClick() {\n this.subscriptions.add(\n this.store$\n .select(selectCurrentConsultant)\n .pipe(take(1))\n .subscribe((consultant) => {\n if (this.isStartYourBusinessRedirectedToEc1) {\n let localeIdUrlParam;\n if (this.localeId === Locale.En || this.localeId === Locale.EnUS) {\n localeIdUrlParam = 0;\n } else if (this.localeId === Locale.EsUS) {\n localeIdUrlParam = 1;\n }\n\n let ec1ReplicatedSiteUrl;\n if (window.location.href.includes(RouterQueryParams.cid) && consultant) {\n // eslint-disable-next-line max-len\n ec1ReplicatedSiteUrl = `${this.ec1ReplicatedSiteUrlBase}${consultant.vanityName}?lid=${localeIdUrlParam}`;\n } else {\n ec1ReplicatedSiteUrl = `${this.ec1ReplicatedSiteUrlBase}?lid=${localeIdUrlParam}`;\n }\n\n if (localeIdUrlParam != undefined) {\n window.open(ec1ReplicatedSiteUrl, '_blank');\n } else {\n this.loggerService.error('Error: no locale id provided.');\n }\n } else {\n this.router.navigateByUrl('/' + ConditionalContentRoutes.StartYourBusiness);\n }\n }),\n );\n }\n}\n","export enum ConsultantHeaderContent {\n none,\n consultantWidget,\n consultantBanner,\n}\n","\n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { DefaultConsultantImagePlaceholderSrc } from '@core/constants/image-placeholders';\nimport { BaseRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport { selectCurrentConsultant } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-consultant-widget',\n templateUrl: './consultant-widget.component.html',\n styleUrls: ['./consultant-widget.component.scss'],\n})\nexport class ConsultantWidgetComponent implements OnInit {\n readonly Routes = {\n CustomerSpecialOffers: BaseRoutes.CustomerSpecialOffers,\n };\n\n consultant$: Observable;\n imagePlaceholder = DefaultConsultantImagePlaceholderSrc;\n feature = environment.feature;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.consultant$ = this.store$.select(selectCurrentConsultant);\n }\n}\n","\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    {{ consultant.displayName }}
    \n
    \n
    \n
    \n Consultant in {{ consultant.city }}, {{ consultant.state }}\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n\n\n Let's get in touch!\n \n \n \n \n \n \n \n \n \n\n","import { Component, OnInit } from '@angular/core';\nimport { DefaultConsultantImagePlaceholderSrc } from '@core/constants/image-placeholders';\nimport { AppState } from '@core/store';\nimport { selectCurrentConsultant } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-my-story-banner',\n templateUrl: './my-story-banner.component.html',\n styleUrls: ['./my-story-banner.component.scss'],\n})\nexport class MyStoryBannerComponent implements OnInit {\n imagePlaceholder = DefaultConsultantImagePlaceholderSrc;\n consultant$: Observable;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.consultant$ = this.store$.select(selectCurrentConsultant);\n }\n}\n","
    \n
    \n
    \n
    \n \n \n \n \n\n \n \n \n \n
    \n
    \n
    \n
    \n","import { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { ConsultantRoutes } from '@core/constants/routes.const';\nimport { ConsultantHeaderContent } from '@core/enums/consultant-header-content.enum';\nimport { AppState } from '@core/store';\nimport { selectHasCurrentConsultant } from '@core/store/consultant';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\n\n@Component({\n selector: 'app-header-consultant',\n templateUrl: './header-consultant.component.html',\n styleUrls: ['./header-consultant.component.scss'],\n})\nexport class HeaderConsultantComponent implements OnInit {\n hasCurrentCurrentConsultant$: Observable;\n displayConsultantHeaderContent: ConsultantHeaderContent = ConsultantHeaderContent.none;\n readonly ConsultantHeaderContent = ConsultantHeaderContent;\n\n constructor(\n private store$: Store,\n @Inject(LOCALE_ID) private localeId: string,\n private router: Router,\n ) {\n this.router.events\n .pipe(\n startWith(new NavigationEnd(0, window.location.pathname, window.location.pathname)),\n filter((event) => event instanceof NavigationEnd),\n )\n .subscribe((event: NavigationEnd) => this.changeConsultantHeaderContentDisplay(event.url));\n }\n\n ngOnInit(): void {\n this.hasCurrentCurrentConsultant$ = this.store$.select(selectHasCurrentConsultant);\n }\n\n private changeConsultantHeaderContentDisplay(url: string) {\n switch (url.replace(`/${this.localeId}`, '').split('?')[0]) {\n case '/' + ConsultantRoutes.MyStoryPageRoute:\n case '/' + ConsultantRoutes.MyOpenPartiesRoute:\n this.displayConsultantHeaderContent = ConsultantHeaderContent.consultantBanner;\n break;\n\n default:\n this.displayConsultantHeaderContent = ConsultantHeaderContent.none;\n break;\n }\n }\n}\n","
    \n
    \n
    \n
    \n
    \n \"Users\"\n Host Offers\n
    \n
    \n \n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { BaseRoutes, ConditionalContentRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport { selectHasCurrentConsultant } from '@core/store/consultant';\nimport { Store } from '@ngrx/store';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-header-offers',\n templateUrl: './header-offers.component.html',\n styleUrls: ['./header-offers.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderOffersComponent implements OnInit {\n readonly Routes = {\n CustomerSpecialOffers: BaseRoutes.CustomerSpecialOffers,\n HostessSpecialOffers: ConditionalContentRoutes.HostessSpecialOffers,\n };\n\n hasCurrentCurrentConsultant$: Observable;\n constructor(\n private store$: Store,\n public productUtilService: ProductUtilService,\n ) {}\n\n ngOnInit(): void {\n this.hasCurrentCurrentConsultant$ = this.store$.select(selectHasCurrentConsultant);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FooterBackgroundShade } from '@core/enums/footer-bg-shade.enum';\nimport { AppState } from '@core/store';\nimport { selectPrimaryFooterLinks, selectSecondaryFooterLinks } from '@core/store/footer';\nimport { FooterLink } from '@core/store/footer/footer-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-default-layout',\n templateUrl: './default-layout.component.html',\n styleUrls: ['./default-layout.component.scss'],\n})\nexport class DefaultLayoutComponent implements OnInit {\n readonly shade = FooterBackgroundShade;\n\n primaryLinks$: Observable;\n secondaryLinks$: Observable;\n menuCollapsed: boolean = true;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.loadPrimaryLinks();\n this.loadSecondaryLinks();\n }\n\n toggleMenu() {\n this.menuCollapsed = !this.menuCollapsed;\n }\n\n private loadPrimaryLinks() {\n this.primaryLinks$ = this.store$.select(selectPrimaryFooterLinks);\n }\n\n private loadSecondaryLinks() {\n this.secondaryLinks$ = this.store$.select(selectSecondaryFooterLinks);\n }\n}\n","
    \n \n \n \n \n \n \n \n\n
    \n \n
    \n\n \n \n \n \n \n \n
    \n","import { ConsultantLocatorErrorType } from '@core/enums/consultant-locator-error-type.enum';\n\nexport const ConsultantLocatorErrorMessage = {\n [ConsultantLocatorErrorType.ZipCodeNotFound]: $localize`Invalid ZIP code, please enter a new one`,\n};\n","import { Country } from '@core/enums/country.enum';\n\nexport const CountryName = {\n [Country.Usa]: 'USA',\n [Country.Mexico]: 'MEXICO',\n};\n","import { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\n\nexport const CreatePaymentErrorTypeTranslations: Map = new Map<\n CreateCardPaymentErrorType,\n string\n>([\n [CreateCardPaymentErrorType.ProcessorDeclined, $localize`Processor declined`],\n [CreateCardPaymentErrorType.GatewayRejected, $localize`Gateway rejected`],\n [CreateCardPaymentErrorType.CvvVerificationFailed, $localize`Hard declined credit card!`],\n [\n CreateCardPaymentErrorType.CvvVerificationNotSupportedOrFailed,\n $localize`Hard declined credit card!`,\n ],\n [\n CreateCardPaymentErrorType.CvvAndAvsVerificationNotSupportedOrFailed,\n $localize`Hard declined credit card!`,\n ],\n [\n CreateCardPaymentErrorType.CvvAndAvsPostalCodeVerificationFailed,\n $localize`Hard declined credit card!`,\n ],\n [CreateCardPaymentErrorType.AvsVerificationNotSupportedOrFailed, $localize`Verification failed`],\n [\n CreateCardPaymentErrorType.AvsPostalCodeVerificationFailed,\n $localize`Hard declined credit card!`,\n ],\n [CreateCardPaymentErrorType.AvsStreetAddressVerificationFailed, $localize`Address invalid`],\n [CreateCardPaymentErrorType.PaymentMethodNotPresent, $localize`Payment method not present`],\n [CreateCardPaymentErrorType.VerificationFailed, $localize`Card Verification Failed`],\n [CreateCardPaymentErrorType.ValidationFailed, $localize`Card Validation Failed`],\n [\n CreateCardPaymentErrorType.PaymentMethodNotCreditCard,\n $localize`Payment Method Not Credit Card`,\n ],\n [CreateCardPaymentErrorType.Unrecognized, $localize`Unrecognized`],\n [CreateCardPaymentErrorType.Unknown, $localize`Unknown`],\n [\n CreateCardPaymentErrorType.PaymentMethodTypeMismatch,\n $localize`Selected card type do not match with the card type`,\n ],\n [\n CreateCardPaymentErrorType.PaymentPlatformCustomerNotFound,\n $localize`Payment platform customer not found`,\n ],\n [CreateCardPaymentErrorType.MissingParameter, $localize`Missing parameter`],\n [CreateCardPaymentErrorType.InvalidParameter, $localize`Invalid parameter`],\n [CreateCardPaymentErrorType.AuthorizationFailed, $localize`Authorization failed`],\n]);\n\nexport const CreatePaymentMissingAddressErrorMessage = $localize`Missing shipping address`;\n","export const findConsultantResultPageSize = 5;\n","import { FormErrorTypes } from '@core/enums/form-error-type.enum';\n\nexport const FormErrorMessages = {\n [FormErrorTypes.required]: $localize`This field is required`,\n [FormErrorTypes.snaRequired]: $localize`Please fill out!`,\n [FormErrorTypes.email]: $localize`Please enter a valid email address`,\n [FormErrorTypes.emailConfirm]: $localize`Email confirmation does not match`,\n [FormErrorTypes.maxlength]: $localize`This field is too long`,\n [FormErrorTypes.minlength]: $localize`This field is too short`,\n [FormErrorTypes.nameExists]: $localize`Address with this name exists. Choose another name.`,\n [FormErrorTypes.restRequired]: $localize`At least one interest is required.`,\n [FormErrorTypes.passwordConfirm]: $localize`Password confirmation does not match`,\n [FormErrorTypes.passwordPattern]: $localize`Password doesn't meet the requirements`,\n [FormErrorTypes.interestRequired]: $localize`At least one interest is required.`,\n [FormErrorTypes.max]: $localize`You must be older than 18 years!`,\n [FormErrorTypes.dropdownRequired]: $localize`Specific Party dropdown selection is required.`,\n};\n","export const DefaultImagePlaceholderSrc = 'assets/images/placeholders/default.png';\nexport const DefaultProductImagePlaceholderSrc = 'assets/images/placeholders/product.png';\nexport const DefaultConsultantImagePlaceholderSrc = 'assets/images/placeholders/consultant.jpg';\nexport const FlagImageSrc = {\n americanFlag: 'assets/images/flags/us.png',\n mexicanFlag: 'assets/images/flags/mx.png',\n};\nexport const DefaultVideoThumbnailPlaceholderSrc = 'assets/images/placeholders/video-thumbnail.png';\nexport const SnaConsultantProfileImagePlaceholderSrc = 'assets/images/icons/logo-small.svg';\n","export const LanguagesLocale = {\n en: $localize`English`,\n es: $localize`Spanish`,\n 'en-US': $localize`English`,\n 'es-US': $localize`Spanish`,\n 'es-MX': $localize`Spanish`,\n};\n","import { CatalogType } from '@core/enums/catalog-type.enum';\n\nexport const DEFAULT_PAGE_TITLE = $localize`Princess House`;\n// eslint-disable-next-line max-len\nexport const DEFAULT_PAGE_DESCRIPTION = $localize`Check out all Princess House has to offer to help make life easier, healthier and more beautiful.`;\n\nexport const CategoryCollectionPageTitle = {\n [CatalogType.Category]: $localize`Categories`,\n [CatalogType.Collection]: $localize`Collections`,\n};\n","export const GeneralPasswordMaxLength = 100;\nexport const SnaPasswordMinLength = 8;\nexport const SnaPasswordMaxLength = 16;\n","export const PasswordPattern = '(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#^&()+_,.{}?-]).{8,}';\n\n// string must contain one single any kind of character\nexport const PatternForOneAnyCharacter = new RegExp(\n /^(?=.*[a-z])*(?=.*[A-Z])*(?=.*[0-9])*(?=.*[!@#$%^&*\"\\'()+,-./\\\\:;<=>?[]^_`{|}~])*.{1,}/,\n);\n\n/* String must contain 4 any kind of character */\nexport const PatternForFourAnyCharacter = new RegExp(\n /^(?=.*[a-z])*(?=.*[A-Z])*(?=.*[0-9])*(?=.*[!@#$%^&*\"\\'()+,-./\\\\:;<=>?[]^_`{|}~])*.{4,}/,\n);\n\n// eslint-disable-next-line max-len\n/** String must contain at least: one lowercase letter, one uppercase letter, a number/a special char and at least 8 characters */\nexport const PatternForLetterAndNumberOrSpecialChar = (minLength?) => {\n if (!minLength || minLength < 8) minLength = 8;\n\n return new RegExp(\n // eslint-disable-next-line max-len\n `^(?=.*[a-z])(?=.*[A-Z])((?=.*[0-9])|(?=.*[!@#$%^&*\"'()+,-./\\\\\\\\:;<=>?\\\\[\\\\]^_\\`{|}~])).{${minLength},}`,\n );\n};\n\n// eslint-disable-next-line max-len\n/* String must contain at least: one lowercase letter, one uppercase letter, a number, a special char and at least 10 characters */\nexport const PatterForLettersNumbersAndSpecialChars = new RegExp(\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*\"'()+,-./\\\\:;<=>?\\[\\]^_`{|}~]).{10,}/,\n);\n\nexport const ValidEmailRegExp = new RegExp(\n // eslint-disable-next-line max-len\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n);\n\nexport const ValidPhoneRegExp = new RegExp(/^$|^[02-9][0-9]*$/);\n\nexport const SocialSecurityNumberUrlRegExp = new RegExp(/\\/socialsecuritynumberisvalid\\/([^\\/]*)/i);\n","import { PaymentCardType } from '@core/enums/payment-type.enum';\n\nexport const PaymentImageSrc = {\n visaCard: 'assets/images/icons/payment_visa.png',\n masterCard: 'assets/images/icons/payment_mastercard.png',\n payByCashEleven: 'assets/images/icons/payment_eleven.png',\n payByCashWalmart: 'assets/images/icons/payment_walmart.png',\n payByCashWaldos: 'assets/images/icons/payment_waldos.png',\n payByCashAustriano: 'assets/images/icons/payment_asturiano.png',\n payByCashBodegaAurrera: 'assets/images/icons/payment_bodegaAurrera.png',\n payByCashCircleK: 'assets/images/icons/payment_circleK.jpg',\n payByCashFarmaciasDelAhorro: 'assets/images/icons/payment_farmaciasDelAhorro.png',\n payByCashSamsClub: 'assets/images/icons/payment_samsClub.png',\n payByCashExtra: 'assets/images/icons/payment_extra.png',\n voucherBarcode: 'assets/images/icons/payment-voucher-barcode.svg',\n voucherFile: 'assets/images/icons/payment-voucher-file.svg',\n voucherShop: 'assets/images/icons/payment-voucher-shop.svg',\n oxxo: 'assets/images/icons/oxxo.png',\n paypal: 'assets/images/icons/paypal.png',\n spei: 'assets/images/icons/spei-logo.svg',\n};\n\nexport const CardPaymentTypes: Record = {\n [PaymentCardType.DebitCard]: $localize`Debit card`,\n [PaymentCardType.CreditCard]: $localize`Credit card`,\n [PaymentCardType.BankTransfer]: $localize`Bank transfer`,\n};\n","export const PFASSTATE = 'MN';\n","/* eslint-disable @typescript-eslint/naming-convention, max-len */\nexport const phErrorMessages = {\n ProductNotFoundException: $localize`Product not found`,\n ProductNotInCollectionException: $localize`Product is not in a collection`,\n StateNotFoundException: $localize`State not found`,\n PrimaryImageNotFoundException: $localize`Primary image not found`,\n PriceNotFoundException: $localize`Price not found`,\n OrderLineNotFoundException: $localize`OrderLine not found.`,\n MismatchCustomerException: $localize`Mismatching customers. Customer of the address is not the authorized user.`,\n DefaultProductRelationTypeNotFoundException: $localize`Default product relation type not found`,\n CustomerNotFoundException: $localize`Customer not found`,\n CustomerAlreadyExistsException: $localize`Email address is already taken`,\n CountryNotFoundException: $localize`Country not found`,\n CategoryNotFoundException: $localize`Category not found`,\n AddressNotFoundException: $localize`Address not found`,\n AddressNameNotUniqueException: $localize`Name is not unique`,\n WishListOrderStatusNotFoundException: $localize`WishList Order Status not found`,\n PasswordFailedToChangeException: $localize`Failed to change password`,\n ValidationException: $localize`The provided data is not valid`,\n OrderSubmitTransactionFailedException: $localize`Please check your credit card details and resubmit your order`,\n OrderSubmitCvvDoesNotMatchException: $localize`Please check your credit card details and resubmit your order`,\n OrderSubmitZipDoesNotMatchException: $localize`Please check your credit card details and resubmit your order`,\n PaymentTransactionFailedException: $localize`Please check your credit card details and resubmit your order`,\n PaymentTransactionFailedNoneException: $localize`Please check your credit card details and resubmit your order`,\n PaymentTransactionFailedSoftException: $localize`Soft declined credit card!`,\n PaymentTransactionFailedHardException: $localize`Hard declined credit card!`,\n PaymentTransactionFailedUnrecognizedException: $localize`Unrecognized credit card issue!`,\n PaymentMethodCreationFailedException: $localize`Hard declined credit card!`,\n PipelineException: $localize`Unexpected error happened during the order placement. Please try again later or contact Princess House customer service!`,\n ForbiddenZipCodeException: $localize`Princess House does not ship to this zip code at this time. Please enter a new shipping address with a different zip code.`,\n};\n","export const MaxProductQty = 10;\n","export const AuthRoutes = {\n B2CSignin: 'b2c-signin',\n B2CSigninPhone: 'b2c-signin-phone',\n B2CSigninTarget: 'b2c-signin-target',\n Login: 'login',\n LoginViaPhone: 'login-via-phone',\n};\n\nexport const BaseRoutes = {\n ContactUs: 'contact-us',\n CatalogsAndMore: 'catalogs-and-more',\n ClearConsultant: 'clear-consultant',\n PartyOrderPayment: 'party-order-payment',\n CustomerSpecialOffers: 'customer-special-offers',\n};\n\nexport const CartRoutes = {\n ShoppingCart: 'shopping-cart',\n Checkout: 'checkout',\n};\n\nexport const ConditionalContentRoutes = {\n HostessSpecialOffers: 'hostess-special-offers',\n About: 'about',\n StartYourBusiness: 'start-your-business',\n HostParty: 'host-a-party',\n Event: 'event',\n EventStaging1: 'event-staging-1',\n EventStaging2: 'event-staging-2',\n};\n\nexport const ConsultantRoutes = {\n MyStoryPageRoute: 'my-story',\n MyOpenPartiesRoute: 'my-open-parties',\n};\n\nexport const DeliveryInfoRoutes = {\n DeliveryInfo: 'deliveryinfo',\n};\n\nexport const ProductRoutes = {\n Products: 'products',\n Product: 'product',\n Details: 'details',\n Detail: 'detail',\n P: 'p',\n NotFound: 'notfound',\n};\n\nexport const StartNowAppRoutes = {\n StartNowApp: 'start-now-app',\n};\n\nexport const UserRoute = {\n Registration: 'registration',\n MyAccount: 'myaccount',\n Profile: 'profile',\n Orders: 'orders',\n PaymentMethods: 'payment-methods',\n Addresses: 'addresses',\n Wishlist: 'wishlist',\n Recipes: 'recipes',\n Returns: 'returns',\n New: 'new',\n};\n\nexport const RecipeAndMoreRoutes = {\n RecipesMore: 'recipes-more',\n Recipes: 'recipes',\n Recipe: 'recipe',\n Blogs: 'blogs',\n Blog: 'blog',\n Detail: 'detail',\n};\n","export const MobileMedia: string = '(max-width: 767px)';\n","export const SearchResultApiPageSize = 50;\nexport const SearchResultPageSize = 50;\n\nexport const LocalFacetNames = {\n 'recipe/categories': $localize`recipe/categories`,\n 'blog/categories': $localize`blog/categories`,\n 'product/categories': $localize`product/categories`,\n 'product/collections': $localize`product/collections`,\n};\n\nexport const LocalFacetTypes = {\n 'recipe/categories': $localize`Recipes`,\n 'blog/categories': $localize`Blogs`,\n 'product/categories': $localize`Products`,\n 'product/collections': $localize`Products`,\n};\n","export const GenericErrorMessage = {\n title: $localize`Something went wrong.`,\n message: $localize`Please try again later!`,\n};\n\nexport const SnaDisabledErrorMessage = {\n title: $localize`Maintenance in progress.`,\n message: $localize`Please try again later!`,\n};\n\nexport const CheckSnaCanSubmitGenericErrorMessage = {\n title: $localize`Consultant submission check failed`,\n message: $localize`Please try again later or contact Princess House customer service!`,\n};\n\nexport const SnaSubmitGenericErrorMessage = {\n title: $localize`Consultant submission failed`,\n message: $localize`Please try again later or contact Princess House customer service!`,\n};\n\nexport const MaintenanceErrorMessage = $localize`We apologize, due to a temporary\nmaintenance we currently cannot process new applications. Please try later.`;\n","export const ZipCodeMinimumLength = 5;\n","export enum AddressType {\n Home = 'Home',\n Shipping = 'Shipping',\n Billing = 'Billing',\n}\n","export enum CatalogType {\n Category = 'category',\n Collection = 'collection',\n}\n","export enum ConsultantFinancialStateEnum {\n OneYearPrepaid = '1 Year Prepaid',\n NinetyDayPrepaid = '90 Day Prepaid',\n GoodStanding = 'Good Standing',\n NotAllowedToDoBusiness = 'NotAllowedToDoBusiness',\n NotAllowedToPlaceOrders = 'NotAllowedToPlaceOrders',\n PrepaidNPOOnly = 'Prepaid – NPO Only',\n Review = 'Review',\n WriteOff = 'Write Off',\n}\n","export enum ConsultantFinderType {\n find = 'Find',\n locate = 'Locate',\n}\n\nexport enum SnaConsultantFinderType {\n ByArea = 1,\n InvitationCode = 2,\n}\n","export enum ConsultantLocatorErrorType {\n None = 'None',\n ZipCodeNotFound = '404',\n}\n","/* TODO: grammatically the correct spelling would be without the 'd' at the end for\nConsultantProwessIdCouldNotRetrieved, ConsultantProwessIdCouldNotSaved */\nexport enum ConsultantSubmissionErrorType {\n None = 'None',\n ApplicationRegistrationNotSubmittable = 'ApplicationRegistrationNotSubmittable',\n ContractReleaseFailed = 'ContractReleaseFailed',\n ContractPaidByVoucher = 'ContractPaidByVoucher',\n ContractPaidByBankTransfer = 'ContractPaidByBankTransfer',\n ConsultantProwessIdCouldNotRetrieved = 'ConsultantProwessIdCouldNotRetrieved',\n ConsultantProwessIdCouldNotSaved = 'ConsultantProwessIdCouldNotSaved',\n DuplicateHomePhone = 'DuplicateHomePhone',\n DuplicateMobilePhone = 'DuplicateMobilePhone',\n DuplicateProwessId = 'DuplicateProwessId',\n EmailAlreadyExists = 'EmailAlreadyExists',\n ErrorWhileSync = 'ErrorWhileSync',\n InvalidAddress = 'InvalidAddress',\n InvalidBirthDate = 'InvalidBirthDate',\n InvalidConsultantLevel = 'InvalidConsultantLevel',\n InvalidConsultantStatus = 'InvalidConsultantStatus',\n InvalidEmailFormat = 'InvalidEmailFormat',\n InvalidHomePhone = 'InvalidHomePhone',\n InvalidMobilePhone = 'InvalidMobilePhone',\n InvalidPaymentType = 'InvalidPaymentType',\n InvalidRecruiterId = 'InvalidRecruiterId',\n InvalidSsnNumber = 'InvalidSsnNumber',\n InvalidState = 'InvalidState',\n InvalidStarterKitId = 'InvalidStarterKitId',\n InvalidStarterKitPrice = 'InvalidStarterKitPrice',\n InvalidZip = 'InvalidZip',\n MissingAddressLine1 = 'MissingAddressLine1',\n MissingCity = 'MissingCity',\n MissingEmail = 'MissingEmail',\n MissingFirstName = 'MissingFirstName',\n MissingLastName = 'MissingLastName',\n MissingPaymentMethodToken = 'MissingPaymentMethodToken',\n MissingProwessId = 'MissingProwessId',\n MissingRecruiter = 'MissingRecruiter',\n MissingRegistrationId = 'MissingRegistrationId',\n MissingPaymentMethod = 'MissingPaymentMethod',\n MissingState = 'MissingState',\n MissingZip = 'MissingZip',\n MissingContactInfo = 'MissingContactInfo',\n MissingUserInfo = 'MissingUserInfo',\n MissingHomeAddress = 'MissingHomeAddress',\n MissingLevel = 'MissingLevel',\n MissingStatus = 'MissingStatus',\n MissingVanityName = 'MissingVanityName',\n MissingAddressInfo = 'MissingAddressInfo',\n MissingB2CId = 'MissingB2CId',\n ProwessImportFailed = 'ProwessImportFailed',\n TooLongAddressLine1 = 'TooLongAddressLine1',\n TooLongAddressLine2 = 'TooLongAddressLine2',\n TooLongAddressLine3 = 'TooLongAddressLine3',\n TooLongCity = 'TooLongCity',\n TooLongFirstName = 'TooLongFirstName',\n TooLongLastName = 'TooLongLastName',\n TooLongMiddleName = 'TooLongMiddleName',\n TooLongHomeNumber = 'TooLongHomeNumber',\n TooLongMobileNumber = 'TooLongMobileNumber',\n TooLongEmail = 'TooLongEmail',\n TooLongVanityName = 'TooLongVanityName',\n TooLongZip = 'TooLongZip',\n TransactionFailed = 'TransactionFailed',\n UnsupportedLanguage = 'UnsupportedLanguage',\n UserManagementInAccessible = 'UserManagementInAccessible',\n VaultImportFailed = 'VaultImportFailed',\n MissingVoucherDetails = 'MissingVoucherDetails',\n InvalidRegistrationCode = 'InvalidRegistrationCode',\n DailyVoucherAmountReached = 'DailyVoucherAmountReached',\n MonthlyVoucherAmountReached = 'MonthlyVoucherAmountReached',\n YearlyVoucherAmountReached = 'YearlyVoucherAmountReached',\n Other = 'Other',\n}\n","export enum Country {\n Usa = 'USA',\n Mexico = 'MEX',\n}\n","export enum CreateCardPaymentErrorType {\n None = 'None',\n ProcessorDeclined = 'ProcessorDeclined',\n GatewayRejected = 'GatewayRejected',\n CvvVerificationFailed = 'CvvVerificationFailed',\n CvvVerificationNotSupportedOrFailed = 'CvvVerificationNotSupportedOrFailed',\n CvvAndAvsVerificationNotSupportedOrFailed = 'CvvAndAvsVerificationNotSupportedOrFailed',\n CvvAndAvsPostalCodeVerificationFailed = 'CvvAndAvsPostalCodeVerificationFailed',\n AvsVerificationNotSupportedOrFailed = 'AvsVerificationNotSupportedOrFailed',\n AvsPostalCodeVerificationFailed = 'AvsPostalCodeVerificationFailed',\n AvsStreetAddressVerificationFailed = 'AvsStreetAddressVerificationFailed',\n PaymentMethodNotPresent = 'PaymentMethodNotPresent',\n VerificationFailed = 'VerificationFailed',\n ValidationFailed = 'ValidationFailed',\n PaymentMethodNotCreditCard = 'PaymentMethodNotCreditCard',\n Unrecognized = 'Unrecognized',\n Unknown = 'Unknown',\n PaymentMethodTypeMismatch = 'PaymentMethodTypeMismatch',\n PaymentPlatformCustomerNotFound = 'PaymentPlatformCustomerNotFound',\n MissingParameter = 'MissingParameter',\n AuthorizationFailed = 'AuthorizationFailed',\n InvalidParameter = 'InvalidParameter',\n}\n","// TODO: request from the BE to send errorType = Enum.Parse(error.ErrorCode)\nexport enum SnaCreateVoucherPaymentErrorType {\n None = 'None',\n InvalidStarterKitId = 'InvalidStarterKitId',\n InvalidStarterKitPrice = 'InvalidStarterKitPrice',\n MissingEmail = 'MissingEmail',\n TooLongEmail = 'TooLongEmail',\n InvalidEmailFormat = 'InvalidEmailFormat',\n MissingRecruiter = 'MissingRecruiter',\n InvalidRecruiterId = 'InvalidRecruiterId',\n MissingAddressInfo = 'MissingAddressInfo',\n MissingContactInfo = 'MissingContactInfo',\n MissingUserInfo = 'MissingUserInfo',\n Other = 'Other',\n}\n\nexport enum EcCreateVoucherPaymentErrorType {\n DailyLimitReached = 1001,\n MonthlyLimitReached = 1002,\n YearlyLimitReached = 1003,\n}\n","export enum FooterBackgroundShade {\n Shade1 = 1,\n Shade2,\n Shade3,\n Shade4,\n Shade5,\n}\n","export enum FormErrorTypes {\n required = 'required',\n email = 'email',\n emailConfirm = 'emailConfirm',\n maxlength = 'maxlength',\n minlength = 'minlength',\n nameExists = 'nameExists',\n restRequired = 'restRequired',\n passwordConfirm = 'passwordConfirm',\n pattern = 'pattern',\n passwordPattern = 'passwordPattern',\n interestRequired = 'interestRequired',\n max = 'max',\n dropdownRequired = 'dropdownRequired',\n snaRequired = 'snaRequired',\n}\n","export enum KushkiFormIdTypes {\n Card = 'Card',\n BankTransfer = 'BankTransfer',\n}\n","export enum LocalStorageKey {\n consultantVanityName = 'consultantVanityName',\n partyId = 'partyId',\n isCartUpdated = 'isCartUpdated',\n toVerifyPhoneNumber = 'toVerifyPhoneNumber',\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nexport enum Locale {\n En = 'en',\n EnUS = 'en-US',\n EsUS = 'es-US',\n EsMX = 'es-MX',\n}\n\nexport const LocaleLid = {\n [Locale.En]: '0',\n [Locale.EnUS]: '0',\n [Locale.EsUS]: '1',\n [Locale.EsMX]: '2',\n};\n","export enum LogLevel {\n Error,\n Warn,\n Debug,\n Info,\n Log,\n}\n","export enum MediaSuffix {\n primaryImage = 1,\n secondaryImage,\n video,\n}\n","export enum MelissaErrorCode {\n AE01 = 'AE01',\n AE02 = 'AE02',\n AE03 = 'AE03',\n AE04 = 'AE04',\n AE05 = 'AE05',\n AE06 = 'AE06',\n AE07 = 'AE07',\n AE08 = 'AE08',\n AE09 = 'AE09',\n AE10 = 'AE10',\n AE11 = 'AE11',\n AE12 = 'AE12',\n AE13 = 'AE13',\n AE14 = 'AE14',\n AE15 = 'AE15',\n AE16 = 'AE16',\n AE17 = 'AE17',\n AE19 = 'AE19',\n AE20 = 'AE20',\n AE21 = 'AE21',\n AC01 = 'AC01',\n AC02 = 'AC02',\n AC03 = 'AC03',\n AC09 = 'AC09',\n AC10 = 'AC10',\n AC11 = 'AC11',\n AC12 = 'AC12',\n AC13 = 'AC13',\n AC14 = 'AC14',\n AC16 = 'AC16',\n AC19 = 'AC19',\n AC20 = 'AC20',\n}\n","export enum PaymentHandlerType {\n ECommerce,\n StartNowApp,\n}\n\nexport enum EcPaymentHandlerType {\n CheckoutOrder,\n CreatePaymentMethod,\n PartyOrder,\n}\n","export enum PaymentMethodType {\n Unknown = 0,\n CreditOrDebitCard = 1,\n DebitCard = 2,\n CreditCard = 3,\n Voucher = 4,\n Account = 5,\n Finance = 6,\n BankTransfer = 7,\n}\n","export enum PaymentProviderType {\n Default = 'Default',\n Braintree = 'Braintree',\n PayPal = 'PayPal',\n Nexio = 'Nexio',\n Kushki = 'Kushki',\n}\n","export enum PaymentType {\n CreditOrDebitCard = 'CreditOrDebitCard',\n PayPal = 'PayPal',\n PayByCash = 'PayByCash',\n Finance = 'Finance',\n BankTransfer = 'BankTransfer',\n}\n\nexport enum PaymentCardType {\n CreditCard = 'CreditCard',\n DebitCard = 'DebitCard',\n BankTransfer = 'BankTransfer',\n}\n\nexport enum PaymentAmountType {\n Balance = 'Balance',\n Custom = 'Custom',\n}\n","/* eslint-disable max-len */\nexport enum PhExceptionErrorType {\n ConsultantNotFoundException = 'ConsultantNotFoundException',\n ProductNotFoundException = 'ProductNotFoundException',\n ProductNotInCollectionException = 'ProductNotInCollectionException',\n StateNotFoundException = 'StateNotFoundException',\n PrimaryImageNotFoundException = 'PrimaryImageNotFoundException',\n PriceNotFoundException = 'PriceNotFoundException',\n OrderLineNotFoundException = 'OrderLineNotFoundException.',\n MismatchCustomerException = 'MismatchCustomerException',\n DefaultProductRelationTypeNotFoundException = 'DefaultProductRelationTypeNotFoundException',\n CustomerNotFoundException = 'CustomerNotFoundException',\n CountryNotFoundException = 'CountryNotFoundException',\n CategoryNotFoundException = 'CategoryNotFoundException',\n AddressNotFoundException = 'AddressNotFoundException',\n AddressNameNotUniqueException = 'AddressNameNotUniqueException',\n WishListOrderStatusNotFoundException = 'WishListOrderStatusNotFoundException',\n OrderSubmitTransactionFailedException = 'OrderSubmitTransactionFailedException',\n OrderSubmitCvvDoesNotMatchException = 'OrderSubmitCvvDoesNotMatchException',\n OrderSubmitZipDoesNotMatchException = 'OrderSubmitZipDoesNotMatchException',\n ValidationException = 'ValidationException',\n Email = 'Email',\n PipelineException = 'PipelineException',\n ForbiddenZipCodeException = 'ForbiddenZipCodeException',\n PaymentTransactionFailedException = 'PaymentTransactionFailedException',\n PaymentTransactionFailedNoneException = 'PaymentTransactionFailedNoneException',\n PaymentTransactionFailedSoftException = 'PaymentTransactionFailedSoftException',\n PaymentTransactionFailedHardException = 'PaymentTransactionFailedHardException',\n PaymentTransactionFailedUnrecognizedException = 'PaymentTransactionFailedUnrecognizedException',\n PaymentMethodCreationFailedException = 'PaymentMethodCreationFailedException',\n CustomerDefaultAddressNotFoundException = 'CustomerDefaultAddressNotFoundException',\n}\n","export enum PhoneNumberType {\n None = 'None',\n Home = 'Home',\n Mobile = 'Mobile',\n Work = 'Work',\n}\n","export enum ProductType {\n ItemNoLongerAvailable = 1,\n ActiveInCatalog,\n CatalogItemOutOfStock,\n HostSpecialInCatalog,\n HostSpecialOutOfCatalog,\n CustomerSpecial,\n RegularCustomerSpecial,\n HealthySavingsSpecial,\n SurpriseBuy,\n ECommerceCustomerSpecial,\n ThreeBooking,\n BuyOneGetOne50,\n CollectAndSave,\n HostBookSpec,\n ComingSoon,\n}\n","export enum RequestSource {\n ec = 'ECommerce',\n sna = 'StartNowApp',\n}\n","export enum RouterQueryParams {\n cid = 'cid',\n lnid = 'lnid',\n partyId = 'partyId',\n viewAs = 'viewAs',\n id = 'ID',\n idg = 'IDG',\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nexport enum SearchEntityType {\n Product = 'product',\n Recipe = 'recipe',\n Blog = 'blog',\n ConditionalContent = 'conditionalContent',\n}\n\nexport enum SearchFacetQueryParam {\n 'product/collections' = 'productCollections',\n 'product/categories' = 'productCategories',\n 'recipe/categories' = 'recipeCategories',\n 'blog/categories' = 'blogCategories',\n}\n","export enum StartNowPaymentType {\n FullPayment = 'FullPayment',\n DepositAmount = 'DepositAmount',\n ReducedDepositAmount = 'ReducedDepositAmount',\n}\n","export enum SuccessfulStatus {\n BeforeCall = 'BeforeCall',\n Success = 'Success',\n Failed = 'Failed',\n}\n","export enum Thumbnail {\n categoryListDesktop = 'CategoryListDesktop',\n categoryListMobile = 'CategoryListMobile',\n productListDesktop = 'ProductListDesktop',\n productListMobile = 'ProductListMobile',\n productDetailMainDesktop = 'ProductDetailMainDesktop',\n productDetailMainMobile = 'ProductDetailMainMobile',\n productDetailThumbnailDesktop = 'ProductDetailThumbnailDesktop',\n carouselDesktop = 'CarouselDesktop',\n carouselMobile = 'CarouselMobile',\n productCheckoutDesktop = 'ProductCheckoutDesktop',\n productCheckoutMobile = 'ProductCheckoutMobile',\n productCcDesktop = 'ProductCcDesktop',\n recipeListDesktop = 'RecipeListDesktop',\n recipeListMobile = 'RecipeListMobile',\n recipeMainDesktop = 'RecipeMainDesktop',\n recipeMainMobile = 'RecipeMainMobile',\n}\n","export enum WebsiteMode {\n none = 0,\n corporate = 1 << 0,\n consultant = 1 << 1,\n order = 1 << 2,\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { AppSettings } from '@core/models/app-settings.model';\nimport { APP_CONFIG } from '@shared/utils/app-config-util';\n\nexport interface IAppInitService {\n Settings: AppSettings;\n isStartNowAppDisabled: () => boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppInitService implements IAppInitService {\n // TODO EC-3876\n // readonly Settings: AppSettings = new AppSettings();\n\n constructor(\n // TODO EC-3876\n // private logger: LoggerService,\n // private ecConfigurationService: ConfigurationService,\n // private snaConfigurationService: StartNowAppService,\n @Inject(APP_CONFIG) public readonly Settings: AppSettings,\n ) {}\n\n // TODO EC-3876\n // initEcConfiguration(): Promise {\n // return new Promise((resolve, reject) => {\n // this.ecConfigurationService\n // .fetchConfiguration()\n // .toPromise()\n // .then(\n // (response) => {\n // this.Settings.ec = response;\n // resolve();\n // },\n // (err) => {\n // reject(err);\n // },\n // )\n // .catch((error) => {\n // this.logger.log('EC Configuration get failed', error);\n // });\n // });\n // }\n\n // initSnaConfiguration(): Promise {\n // return new Promise((resolve, reject) => {\n // this.snaConfigurationService\n // .fetchStartNowAppConfiguration()\n // .toPromise()\n // .then(\n // (response) => {\n // this.Settings.sna = response;\n // resolve();\n // },\n // (err) => {\n // reject(err);\n // },\n // )\n // .catch((error) => {\n // this.logger.log('SNA Configuration get failed', error);\n // });\n // });\n // }\n\n public isStartNowAppDisabled(): boolean {\n return this.Settings.sna.isRegistrationDisabled || this.Settings.sna.isProwessDown;\n }\n}\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { EventProperties } from '@core/models/appcues.model';\nimport { UserModel } from '@core/store/user/user-state-models';\nimport { environment } from '@env';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { AppInitService } from './app-init.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppcuesService {\n private renderer: Renderer2;\n private loadedSubject: BehaviorSubject;\n\n constructor(\n private router: Router,\n private rendererFactory: RendererFactory2,\n private appInitService: AppInitService,\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n this.loadedSubject = new BehaviorSubject(false);\n }\n\n initAppcues(): Observable {\n this.loadAppcues();\n return this.loadedSubject;\n }\n\n isAppcuesLoaded(): Observable {\n return this.loadedSubject.asObservable();\n }\n\n setAppcuesIdentityForLoggedInUser(user: UserModel): void {\n if (!user) {\n return;\n }\n\n // This can be changed later depending what info is useful for PH\n window.Appcues.identify(user!.email, {\n customerId: user!.email!,\n firstName: user!.firstName!,\n lastName: user!.lastName!,\n phoneNumber: user.phoneNumber!,\n environment: environment.environmentName,\n });\n }\n\n setAppcuesIdentityForAnonymousUser(): void {\n window.Appcues.anonymous();\n }\n\n track(eventName: string, eventProperties?: EventProperties): void {\n this.appInitService.Settings.ec.isAppcuesEnabled &&\n window.Appcues.track(eventName, eventProperties);\n }\n\n private loadAppcues() {\n const script = this.renderer.createElement('script');\n script.onload = () => {\n this.listenUrlChanges();\n this.loadedSubject.next(true);\n };\n\n script.setAttribute('src', `//fast.appcues.com/${environment.appcuesId}.js`);\n\n this.renderer.appendChild(document.head, script);\n }\n\n private listenUrlChanges() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n window.Appcues.page();\n }\n });\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { MsalService } from '@azure/msal-angular';\nimport { AuthRoutes } from '@core/constants/routes.const';\nimport { Locale } from '@core/enums/locale';\nimport { AppState } from '@core/store';\nimport { selectStateIsLogoutConcluded as selectLogOutSuccess } from '@core/store/auth';\nimport { logOut } from '@core/store/auth/auth.actions';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { getLanguage } from '@shared/utils/locale-utils';\nimport { b2cPolicies } from 'app/auth-config';\nimport { filter, first } from 'rxjs/operators';\nimport { LoggerService } from './logger.service';\n\nconst COMMON_SCOPES = ['openid', 'offline_access', environment.b2c.customerScope];\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private redirectUri: string;\n\n constructor(\n private msalService: MsalService,\n private store$: Store,\n private loggerService: LoggerService,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {\n this.redirectUri =\n this.localeId === Locale.En\n ? `/${AuthRoutes.B2CSigninTarget}`\n : `/${this.localeId}/${AuthRoutes.B2CSigninTarget}`;\n }\n\n setActiveAccount(): void {\n const accounts = this.msalService.instance.getAllAccounts();\n const hasActiveAccount = this.msalService.instance.getActiveAccount();\n\n if (accounts.length && !hasActiveAccount) {\n this.msalService.instance.setActiveAccount(accounts[0]);\n }\n }\n\n logIn(extraQueryParameters: { [key: string]: string } = {}): void {\n this.msalService.instance.loginRedirect({\n scopes: COMMON_SCOPES,\n extraQueryParameters: { ui_locales: getLanguage(this.localeId), ...extraQueryParameters },\n redirectUri: this.redirectUri,\n });\n }\n\n logInPhone(): void {\n this.msalService.instance.loginRedirect({\n scopes: COMMON_SCOPES,\n extraQueryParameters: { ui_locales: getLanguage(this.localeId) },\n redirectUri: this.redirectUri,\n authority: b2cPolicies.authorities.signInPhone.authority,\n });\n }\n\n logOut(): void {\n this.store$.dispatch(logOut());\n this.store$\n .select(selectLogOutSuccess)\n .pipe(\n filter((s) => s),\n first(),\n )\n .subscribe(() => this.msalService.logoutRedirect());\n sessionStorage.clear();\n }\n\n refreshToken(): void {\n this.msalService.instance\n .acquireTokenSilent({\n scopes: COMMON_SCOPES,\n })\n .catch((error) => {\n this.loggerService.warn('Error refreshing token silently. Logging out', error);\n this.logOut();\n });\n }\n}\n","export enum GtmEvent {\n viewItem = 'view_item',\n addToCart = 'add_to_cart',\n removeFromCart = 'remove_from_cart',\n beginCheckout = 'begin_checkout',\n purchase = 'purchase',\n addPaymentInfo = 'add_payment_info',\n addShippingInfo = 'add-shipping-info',\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { Injectable } from '@angular/core';\nimport { GtmEvent } from '@core/enums/gtm-event.enum';\nimport { GtmEcommerce } from '@core/models/gtm.model';\nimport { AddToCartConfirmModelData, Cart, OrderLine } from '@core/store/cart/cart-state-models';\nimport { ProductDetailsItem } from '@core/store/product/product-state-models';\nimport { environment } from '@env';\n\n@Injectable({\n providedIn: 'root',\n})\n/* Google Tag Manager service */\nexport class GtmService {\n private readonly GtmEventCategoryCount = 5;\n\n constructor() {}\n\n productDetailsView(product: ProductDetailsItem) {\n this.clearEcommerce();\n (window).dataLayer.push({\n event: GtmEvent.viewItem,\n ecommerce: this.mapProductDetailToGtmEcommerce(product),\n });\n }\n\n addToCart(product: AddToCartConfirmModelData) {\n this.clearEcommerce();\n (window).dataLayer.push({\n event: GtmEvent.addToCart,\n ecommerce: this.mapAddToCartProductToGtmEcommerce(product),\n });\n }\n\n removeFromCart(product: OrderLine) {\n this.clearEcommerce();\n (window).dataLayer.push({\n event: GtmEvent.removeFromCart,\n ecommerce: this.mapOrderLineToGtmEcommerce(product),\n });\n }\n\n beginCheckout(cart: Cart) {\n this.clearEcommerce();\n (window).dataLayer.push({\n event: GtmEvent.beginCheckout,\n ecommerce: this.mapCartToGtmEcommerce(cart),\n });\n }\n\n purchase(submittedOrderId: string, cart: Cart, customer: string) {\n this.clearEcommerce();\n (window).dataLayer.push({\n event: GtmEvent.purchase,\n ecommerce: this.mapSubmittedOrderToGtmEcommerce(submittedOrderId, cart, customer),\n });\n }\n\n addPaymentInfo(cart: Cart) {\n this.clearEcommerce();\n (window).dataLayer.push({\n event: GtmEvent.addPaymentInfo,\n ecommerce: this.mapCartToGtmEcommerce(cart),\n });\n }\n\n addShippingInfo(cart: Cart) {\n this.clearEcommerce();\n (window).dataLayer.push({\n event: GtmEvent.addShippingInfo,\n ecommerce: this.mapCartToGtmEcommerce(cart),\n });\n }\n\n private clearEcommerce() {\n (window).dataLayer.push({ ecommerce: null });\n }\n\n private mapCategoryNames(categoryNames: string[]) {\n const categoryObject = {};\n categoryNames?.forEach((c, index) => {\n if (index < this.GtmEventCategoryCount) {\n if (index === 0) {\n categoryObject['item_category'] = c;\n } else {\n categoryObject[`item_category${index + 1}`] = c;\n }\n }\n });\n return categoryObject;\n }\n\n private mapProductDetailToGtmEcommerce(product: ProductDetailsItem): GtmEcommerce {\n return {\n currency: environment.currency,\n value: product.discountedPrice || product.price,\n items: [\n {\n item_id: product.sku,\n item_name: product.name,\n price: product.discountedPrice || product.price,\n item_brand: product.collection,\n ...this.mapCategoryNames(product.categoryNames),\n },\n ],\n };\n }\n\n private mapAddToCartProductToGtmEcommerce(product: AddToCartConfirmModelData): GtmEcommerce {\n return {\n currency: environment.currency,\n value: product.discountedPrice || product.price,\n items: [\n {\n item_id: product.sku,\n item_name: product.productName,\n price: product.discountedPrice || product.price,\n item_brand: product.collection,\n ...this.mapCategoryNames(product.categoryNames),\n },\n ],\n };\n }\n\n private mapOrderLineToGtmEcommerce(product: OrderLine): GtmEcommerce {\n return {\n currency: environment.currency,\n value: product.discountedPrice || product.originalPrice,\n items: [\n {\n item_id: product.sku,\n item_name: product.productName,\n price: product.discountedPrice || product.originalPrice,\n item_brand: product.collectionName,\n ...this.mapCategoryNames(product.categoryNames),\n },\n ],\n };\n }\n\n private mapCartToGtmEcommerce(cart: Cart): GtmEcommerce {\n return {\n currency: environment.currency,\n value: cart.merchandiseTotal,\n items: cart.orderLines.map((orderLine) => ({\n item_id: orderLine.sku,\n item_name: orderLine.productName,\n price: orderLine.discountedPrice || orderLine.originalPrice,\n item_brand: orderLine.collectionName,\n quantity: orderLine.quantity,\n ...this.mapCategoryNames(orderLine.categoryNames),\n })),\n };\n }\n\n private mapSubmittedOrderToGtmEcommerce(\n submittedOrderId,\n cart: Cart,\n customer?: string,\n ): GtmEcommerce {\n return {\n currency: environment.currency,\n value: cart.merchandiseTotal,\n transaction_id: submittedOrderId,\n affiliation: 'PH-ecommerce',\n tax: cart.salesTaxTotal,\n shipping: cart.deliveryFeeTotal,\n customer,\n items: cart.orderLines.map((orderLine) => ({\n item_id: orderLine.sku,\n item_name: orderLine.productName,\n price: orderLine.discountedPrice || orderLine.originalPrice,\n item_brand: orderLine.collectionName,\n quantity: orderLine.quantity,\n ...this.mapCategoryNames(orderLine.categoryNames),\n })),\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService {\n private localStorage = window.localStorage;\n\n getItem(key: string): string | object {\n try {\n return JSON.parse(this.localStorage.getItem(key));\n } catch {\n return this.localStorage.getItem(key);\n }\n }\n\n setItem(key: string, value: string | object): void {\n this.localStorage.setItem(key, typeof value === 'object' ? JSON.stringify(value) : value);\n }\n\n removeItem(key: string): void {\n this.localStorage.removeItem(key);\n }\n\n clearStorage(): void {\n this.localStorage.clear();\n }\n\n hasItem(key: string): boolean {\n const item = this.localStorage.getItem(key);\n return !!item;\n }\n}\n","import { async } from '../scheduler/async';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\nexport function timeInterval(scheduler = async) {\n return (source) => defer(() => {\n return source.pipe(scan(({ current }, value) => ({ value, current: scheduler.now(), last: current }), { current: scheduler.now(), value: undefined, last: undefined }), map(({ current, last, value }) => new TimeInterval(value, current - last)));\n });\n}\nexport class TimeInterval {\n constructor(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function pairwise() {\n return (source) => source.lift(new PairwiseOperator());\n}\nclass PairwiseOperator {\n call(subscriber, source) {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n }\n}\nclass PairwiseSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.hasPrev = false;\n }\n _next(value) {\n let pair;\n if (this.hasPrev) {\n pair = [this.prev, value];\n }\n else {\n this.hasPrev = true;\n }\n this.prev = value;\n if (pair) {\n this.destination.next(pair);\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { TimerModel } from '@core/models/timer.model';\nimport { Subject } from 'rxjs';\nimport { filter, map, pairwise, take, timeInterval } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimerService implements OnDestroy {\n readonly StartEvent = 'START';\n readonly EndEvent = 'END';\n\n private timerEventsArray: Map = new Map();\n\n ngOnDestroy(): void {\n if (this.timerEventsArray.entries.length > 0) {\n this.timerEventsArray.forEach((element) => {\n if (!element.eventSubject.closed) {\n element.eventSubject.complete();\n }\n\n element.timer = null;\n element.subscription.unsubscribe();\n });\n }\n }\n\n startTimer(label: string, subscriber: (millisec: number) => void) {\n this.timerEventsArray.set(label, {\n eventSubject: new Subject(),\n });\n\n const element = this.timerEventsArray.get(label);\n element.timer = element.eventSubject.pipe(\n timeInterval(),\n pairwise(),\n filter(\n ([first, second]) => first.value === this.StartEvent && second.value === this.EndEvent,\n ),\n take(1),\n map(([, second]) => second.interval),\n );\n element.subscription = element.timer.subscribe(subscriber);\n element.eventSubject.next(this.StartEvent);\n }\n\n endTimer(label: string): void {\n const element = this.timerEventsArray.get(label);\n element.eventSubject.next(this.EndEvent);\n element.eventSubject.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LogLevel } from '@core/enums/log-level.enum';\nimport { environment } from '@env';\nimport LogRocket from 'logrocket';\nimport { TimerService } from './timer.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggerService {\n constructor(private timerService: TimerService) {}\n\n log(message: string, error: any = undefined): void {\n this.logWith(LogLevel.Log, message, error);\n }\n\n logTimerStart(label: string): void {\n if (LogLevel.Log <= environment.highestConsolLogLevel) {\n console.time(label);\n } else {\n this.timerService.startTimer(label, (millisec) => {\n LogRocket.log(`Timer ${label} took ${millisec} ms`);\n });\n }\n }\n\n logTimerEnd(label: string): void {\n if (LogLevel.Log <= environment.highestConsolLogLevel) {\n console.timeEnd(label);\n } else {\n this.timerService.endTimer(label);\n }\n }\n\n info(message: string, error: any = undefined): void {\n this.logWith(LogLevel.Info, message, error);\n }\n\n debug(message: string, error: any = undefined): void {\n this.logWith(LogLevel.Debug, message, error);\n }\n\n warn(message: string, error: any = undefined): void {\n this.logWith(LogLevel.Warn, message, error);\n }\n\n error(message: string, error: any = undefined): void {\n this.logWith(LogLevel.Error, message, error);\n }\n\n private logWith(logLevel: LogLevel, message: string, error: any = undefined): void {\n if (logLevel <= environment.highestConsolLogLevel) {\n switch (logLevel) {\n case LogLevel.Log:\n console.log(message, error);\n return;\n case LogLevel.Info:\n console.info(message, error);\n return;\n case LogLevel.Debug:\n console.debug(message, error);\n return;\n case LogLevel.Warn:\n console.warn(message, error);\n return;\n case LogLevel.Error:\n console.error(message, error);\n return;\n default:\n console.log(message, error);\n return;\n }\n } else {\n switch (logLevel) {\n case LogLevel.Log:\n LogRocket.log(message, error);\n return;\n case LogLevel.Info:\n LogRocket.info(message, error);\n return;\n case LogLevel.Debug:\n LogRocket.debug(message, error);\n return;\n case LogLevel.Warn:\n LogRocket.warn(message, error);\n return;\n case LogLevel.Error:\n LogRocket.error(message, error);\n return;\n default:\n LogRocket.log(message, error);\n return;\n }\n }\n }\n}\n","export function deleteContactInfo(contactInfo) {\n delete contactInfo.email;\n delete contactInfo.emailConfirm;\n delete contactInfo.homeNumber;\n delete contactInfo.cellPhoneNumber;\n delete contactInfo.phoneNumber;\n return contactInfo;\n}\n\nexport function deleteAddressesDetails(addresses) {\n return addresses.map((address) => deleteAddressDetails(address));\n}\n\nexport function deleteAddressDetails(address) {\n delete address.address1;\n delete address.address2;\n delete address.address3;\n delete address.addressLine1;\n delete address.addressLine2;\n delete address.addressLine3;\n delete address.city;\n delete address.address;\n return address;\n}\n","import { Injectable } from '@angular/core';\nimport { SocialSecurityNumberUrlRegExp } from '@core/constants/patterns';\nimport { AppState, metaReducers } from '@core/store';\nimport { MetaReducer } from '@ngrx/store';\nimport { logrocketId } from '@shared/utils/environment-utils';\nimport {\n deleteAddressDetails,\n deleteAddressesDetails,\n deleteContactInfo,\n} from '@shared/utils/logrocket-utils';\nimport cloneDeep from 'lodash.clonedeep';\nimport LogRocket from 'logrocket';\nimport createNgrxMiddleware from 'logrocket-ngrx';\nimport { AppInitService } from './app-init.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LogRocketService {\n private readonly Token: string = 'token';\n private readonly Authorization: string = 'Authorization';\n private readonly MaskedSocialSecurityNumberUrl: string =\n '/socialsecuritynumberisvalid/**number**';\n\n constructor(private appInitService: AppInitService) {}\n\n private readonly LogRocketMiddleware = createNgrxMiddleware(LogRocket, {\n actionSanitizer: function (action: any) {\n let restrictedAction = cloneDeep(action);\n if (restrictedAction?.ssnNumber) {\n delete restrictedAction.ssnNumber;\n }\n if (restrictedAction?.request?.phoneNumber) {\n delete restrictedAction.request.phoneNumber;\n }\n if (restrictedAction?.email) {\n delete restrictedAction.email;\n }\n if (restrictedAction?.contactInfo) {\n restrictedAction.contactInfo = deleteContactInfo(restrictedAction.contactInfo);\n }\n if (restrictedAction?.address) {\n restrictedAction.address = deleteAddressDetails(restrictedAction.address);\n }\n if (restrictedAction?.addressValidation?.payload?.originalAddress) {\n restrictedAction.addressValidation.payload.originalAddress = deleteAddressDetails(\n restrictedAction.addressValidation.payload.originalAddress,\n );\n }\n if (restrictedAction?.addressValidation?.addressVerificationResult?.originalAddress) {\n restrictedAction.addressValidation.addressVerificationResult.originalAddress =\n deleteAddressDetails(\n restrictedAction.addressValidation.addressVerificationResult.originalAddress,\n );\n }\n if (restrictedAction?.addressValidation?.shippingAddressVerificationResult?.originalAddress) {\n restrictedAction.addressValidation.shippingAddressVerificationResult.originalAddress =\n deleteAddressDetails(\n restrictedAction.addressValidation.shippingAddressVerificationResult.originalAddress,\n );\n }\n if (restrictedAction?.addressValidation?.payload?.correctedAddress) {\n restrictedAction.addressValidation.payload.correctedAddress = deleteAddressDetails(\n restrictedAction.addressValidation.payload.correctedAddress,\n );\n }\n if (restrictedAction?.addressValidation?.addressVerificationResult?.correctedAddress) {\n restrictedAction.addressValidation.addressVerificationResult.correctedAddress =\n deleteAddressDetails(\n restrictedAction.addressValidation.addressVerificationResult.correctedAddress,\n );\n }\n if (\n restrictedAction?.addressValidation?.shippingAddressVerificationResult?.correctedAddress\n ) {\n restrictedAction.addressValidation.shippingAddressVerificationResult.correctedAddress =\n deleteAddressDetails(\n restrictedAction.addressValidation.shippingAddressVerificationResult.correctedAddress,\n );\n }\n if (restrictedAction?.addresses?.length) {\n restrictedAction.addresses = deleteAddressesDetails(restrictedAction.addresses);\n }\n if (restrictedAction?.payload?.addressInfo?.addresses?.length) {\n restrictedAction.payload.addressInfo.addresses = deleteAddressesDetails(\n restrictedAction.payload.addressInfo.addresses,\n );\n }\n if (restrictedAction?.payload?.contactInfo) {\n restrictedAction.payload.contactInfo = deleteContactInfo(\n restrictedAction.payload.contactInfo,\n );\n }\n if (restrictedAction?.payload?.userInfo) {\n delete restrictedAction.payload.userInfo.governmentId;\n }\n if (restrictedAction?.personalInfo?.billingAddress?.address) {\n restrictedAction.personalInfo.billingAddress.address = deleteAddressDetails(\n restrictedAction.personalInfo.billingAddress.address,\n );\n }\n if (restrictedAction?.personalInfo?.shippingAddress?.address) {\n restrictedAction.personalInfo.shippingAddress.address = deleteAddressDetails(\n restrictedAction.personalInfo.shippingAddress.address,\n );\n }\n if (restrictedAction?.personalInfo?.billingCustomer) {\n restrictedAction.personalInfo.billingCustomer = deleteContactInfo(\n restrictedAction.personalInfo.billingCustomer,\n );\n }\n if (restrictedAction?.currentAddress) {\n restrictedAction.currentAddress = deleteAddressDetails(restrictedAction.currentAddress);\n }\n if (restrictedAction?.contactUsRequest) {\n delete restrictedAction.contactUsRequest.phone;\n delete restrictedAction.contactUsRequest.email;\n delete restrictedAction.contactUsRequest.emailConfirm;\n delete restrictedAction.contactUsRequest.addressLine1;\n delete restrictedAction.contactUsRequest.addressLine2;\n delete restrictedAction.contactUsRequest.addressLine3;\n delete restrictedAction.contactUsRequest.city;\n }\n if (restrictedAction?.payload?.shippingAddress) {\n restrictedAction.payload.shippingAddress = deleteAddressDetails(\n restrictedAction.payload.shippingAddress,\n );\n }\n if (restrictedAction?.payload?.billingAddress) {\n restrictedAction.payload.billingAddress = deleteAddressDetails(\n restrictedAction.payload.billingAddress,\n );\n }\n if (restrictedAction?.payload?.personalInformation) {\n restrictedAction.payload.personalInformation = deleteContactInfo(\n restrictedAction.payload.personalInformation,\n );\n }\n if (restrictedAction?.returnDetails?.shippingAddress) {\n restrictedAction.returnDetails.shippingAddress = deleteAddressDetails(\n restrictedAction.returnDetails.shippingAddress,\n );\n }\n if (restrictedAction?.payload?.emailTo) {\n delete restrictedAction.payload.emailTo;\n }\n if (restrictedAction?.payload?.email) {\n delete restrictedAction.payload.email;\n }\n if (restrictedAction?.payload?.phoneNumber) {\n delete restrictedAction.payload.phoneNumber;\n }\n if (restrictedAction?.user) {\n restrictedAction.user = deleteContactInfo(restrictedAction.user);\n }\n return restrictedAction;\n },\n stateSanitizer: function (state: any) {\n let restrictedState = cloneDeep(state);\n let snaAddressValidationModal =\n restrictedState?.startNowAppState?.addressValidationModal?.payload;\n let userInfo = restrictedState?.startNowAppState?.startNowAppData?.userInfo;\n let addressInfo = restrictedState?.startNowAppState?.startNowAppData?.addressInfo;\n let contactInfo = restrictedState?.startNowAppState?.startNowAppData?.contactInfo;\n let voucherPaymentInfo =\n restrictedState?.startNowAppState?.startNowAppData?.startNowAppPaymentInfo\n ?.voucherPaymentInfo;\n let addressState = restrictedState?.addressState;\n let checkoutState = restrictedState?.checkoutState;\n let orderState = restrictedState?.orderState;\n let returnState = restrictedState?.returnState;\n let userState = restrictedState?.userState;\n let voucherState = restrictedState?.voucherState;\n\n if (userInfo) {\n delete userInfo.ssnNumber;\n }\n if (snaAddressValidationModal?.originalAddress) {\n snaAddressValidationModal.originalAddress = deleteAddressDetails(\n snaAddressValidationModal.originalAddress,\n );\n }\n if (snaAddressValidationModal?.correctedAddress) {\n snaAddressValidationModal.correctedAddress = deleteAddressDetails(\n snaAddressValidationModal.correctedAddress,\n );\n }\n if (addressInfo?.addresses.length) {\n addressInfo.addresses = deleteAddressesDetails(addressInfo.addresses);\n }\n if (contactInfo) {\n contactInfo = deleteContactInfo(contactInfo);\n }\n if (voucherPaymentInfo) {\n delete voucherPaymentInfo.email;\n }\n if (addressState.addresses?.length) {\n addressState.addresses = deleteAddressesDetails(addressState.addresses);\n }\n if (addressState?.modals?.addressValidation?.addressVerificationResult?.correctedAddress) {\n addressState.modals.addressValidation.addressVerificationResult.correctedAddress =\n deleteAddressDetails(\n addressState.modals.addressValidation.addressVerificationResult.correctedAddress,\n );\n }\n if (addressState?.modals?.addressValidation?.addressVerificationResult?.originalAddress) {\n addressState.modals.addressValidation.addressVerificationResult.originalAddress =\n deleteAddressDetails(\n addressState.modals.addressValidation.addressVerificationResult.originalAddress,\n );\n }\n if (checkoutState?.personalInfo?.billingAddress?.address) {\n checkoutState.personalInfo.billingAddress.address = deleteAddressDetails(\n checkoutState.personalInfo.billingAddress.address,\n );\n }\n if (checkoutState?.personalInfo?.shippingAddress?.address) {\n checkoutState.personalInfo.shippingAddress.address = deleteAddressDetails(\n checkoutState.personalInfo.shippingAddress.address,\n );\n }\n if (checkoutState?.personalInfo?.billingCustomer) {\n checkoutState.personalInfo.billingCustomer = deleteContactInfo(\n checkoutState.personalInfo.billingCustomer,\n );\n }\n if (\n checkoutState?.personalInfoModal?.addressValidation?.shippingAddressVerificationResult\n ?.originalAddress\n ) {\n // eslint-disable-next-line max-len\n checkoutState.personalInfoModal.addressValidation.shippingAddressVerificationResult.originalAddress =\n deleteAddressesDetails(\n checkoutState.personalInfoModal.addressValidation.shippingAddressVerificationResult\n .originalAddress,\n );\n }\n if (\n checkoutState?.personalInfoModal?.addressValidation?.shippingAddressVerificationResult\n ?.correctedAddress\n ) {\n // eslint-disable-next-line max-len\n checkoutState.personalInfoModal.addressValidation.shippingAddressVerificationResult.correctedAddress =\n deleteAddressDetails(\n checkoutState.personalInfoModal.addressValidation.shippingAddressVerificationResult\n .correctedAddress,\n );\n }\n if (checkoutState?.savedAddressesModal?.currentAddress) {\n checkoutState.savedAddressesModal.currentAddress = deleteAddressDetails(\n checkoutState.savedAddressesModal.currentAddress,\n );\n }\n if (orderState?.orderDetails?.shippingAddress) {\n orderState.orderDetails.shippingAddress = deleteAddressDetails(\n orderState.orderDetails.shippingAddress,\n );\n }\n if (orderState?.orderDetails?.billingAddress) {\n orderState.orderDetails.billingAddress = deleteAddressDetails(\n orderState.orderDetails.billingAddress,\n );\n }\n if (orderState?.orderDetails?.personalInformation) {\n orderState.orderDetails.personalInformation = deleteContactInfo(\n orderState.orderDetails.personalInformation,\n );\n }\n if (returnState?.returnDetails?.shippingAddress) {\n returnState.returnDetails.shippingAddress = deleteAddressDetails(\n returnState.returnDetails.shippingAddress,\n );\n }\n if (userState?.user) {\n userState.user = deleteContactInfo(userState.user);\n }\n if (voucherState?.email) {\n delete voucherState.email;\n }\n return restrictedState;\n },\n });\n\n initLogRocket(): void {\n if (this.appInitService.Settings.ec.isLogrocketEnabled) {\n LogRocket.init(logrocketId, {\n // Hide or remove sensitive information\n network: {\n requestSanitizer: this.requestSanitizer.bind(this),\n responseSanitizer: this.responseSanitizer.bind(this),\n },\n });\n }\n }\n\n logRocketIdentify(id: string) {\n if (this.appInitService.Settings.ec.isLogrocketEnabled) {\n LogRocket.identify(id);\n }\n }\n\n getMetaReducers(): MetaReducer[] {\n if (this.appInitService.Settings.ec.isLogrocketEnabled) {\n return metaReducers.concat([this.LogRocketMiddleware]);\n }\n return metaReducers;\n }\n\n private jsonParse(body: string) {\n try {\n return JSON.parse(body);\n } catch {\n return null;\n }\n }\n\n private requestSanitizer(request) {\n if (request.url.toLowerCase().indexOf(this.Token) !== -1) {\n return;\n }\n if (request.body) {\n let body = this.jsonParse(request.body);\n\n if (request.url.includes('passwordReset') && body?.userName) {\n delete body.userName;\n }\n if (body?.userInfo) {\n delete body.userInfo.governmentId;\n }\n if (body?.email) {\n delete body.email;\n }\n if (body?.emailConfirm) {\n delete body.emailConfirm;\n }\n if (body?.phoneNumber) {\n delete body.phoneNumber;\n }\n if (body?.address1) {\n delete body.address1;\n }\n if (body?.address2) {\n delete body.address2;\n }\n if (body?.address3) {\n delete body.address3;\n }\n if (body?.addressLine1) {\n delete body.addressLine1;\n }\n if (body?.addressLine2) {\n delete body.addressLine2;\n }\n if (body?.addressLine3) {\n delete body.addressLine3;\n }\n if (body?.city) {\n delete body.city;\n }\n if (body?.contactInfo) {\n body.contactInfo = deleteContactInfo(body.contactInfo);\n }\n if (body?.address) {\n body.address = deleteAddressDetails(body.address);\n }\n if (body?.shippingAddress) {\n body.shippingAddress = deleteAddressDetails(body.shippingAddress);\n }\n if (body?.addressInfo?.addresses) {\n body.addressInfo.addresses = deleteAddressesDetails(body.addressInfo.addresses);\n }\n if (body?.billingAddress) {\n body.billingAddress = deleteAddressDetails(body.billingAddress);\n }\n if (body?.billingCustomer) {\n body.billingCustomer = deleteContactInfo(body.billingCustomer);\n }\n if (body?.shippingAddress) {\n body.shippingAddress = deleteAddressDetails(body.shippingAddress);\n }\n request.body = body ? body : request.body;\n }\n request.url = request.url.replace(\n SocialSecurityNumberUrlRegExp,\n this.MaskedSocialSecurityNumberUrl,\n );\n request.headers[this.Authorization] = '';\n return request;\n }\n\n private responseSanitizer(response) {\n if (response.body) {\n let body = this.jsonParse(response.body);\n if (body?.clientToken) {\n delete body.clientToken;\n }\n if (body?.email) {\n delete body.email;\n }\n if (body?.phoneNumber) {\n delete body.phoneNumber;\n }\n if (body?.payload?.originalAddress) {\n body.payload.originalAddress = deleteAddressDetails(body.payload.originalAddress);\n }\n if (body?.payload?.correctedAddress) {\n body.payload.correctedAddress = deleteAddressDetails(body.payload.correctedAddress);\n }\n if (body?.addresses?.length) {\n body.addresses = deleteAddressesDetails(body.addresses);\n }\n if (body?.addressVerificationResult?.correctedAddress) {\n body.addressVerificationResult.correctedAddress = deleteAddressDetails(\n body.addressVerificationResult.correctedAddress,\n );\n }\n if (body?.shippingAddressVerificationResult?.correctedAddress) {\n body.shippingAddressVerificationResult.correctedAddress = deleteAddressDetails(\n body.shippingAddressVerificationResult.correctedAddress,\n );\n }\n if (body?.addressVerificationResult?.originalAddress) {\n body.addressVerificationResult.originalAddress = deleteAddressDetails(\n body.addressVerificationResult.originalAddress,\n );\n }\n if (body?.shippingAddressVerificationResult?.originalAddress) {\n body.shippingAddressVerificationResult.originalAddress = deleteAddressDetails(\n body.shippingAddressVerificationResult.originalAddress,\n );\n }\n response.body = body ? body : response.body;\n }\n return response;\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport {\n AddPaymentToPartyOrderRequest,\n AddPaymentToPartyOrderResponse,\n CCOrderDetailsResponse,\n CCOrderHistoryResponse,\n ClientTokenRequest,\n ClientTokenResponse,\n LogCardAttemptRequest,\n OrderDetailsResponse,\n OrderHistoryResponse,\n PartyOrderDataResponse,\n ShippedCartonDetailsResponse,\n SubmitOrderRequest,\n SubmitOrderResponse,\n} from '@core/dto/order.dto';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { saveAs } from 'file-saver';\nimport { Observable } from 'rxjs';\n// tslint:disable-next-line:max-line-length\n@Injectable({\n providedIn: 'root',\n})\nexport class OrderService {\n baseUrl: string = environment.ecommerceBackendUri;\n options = { withCredentials: true };\n culture: Locale;\n\n constructor(\n private http: HttpClient,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {\n this.culture = getCulture(localeId);\n }\n\n fetchOrderHistory(): Observable {\n return this.http.get(`${this.baseUrl}api/order`, {\n ...this.options,\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchCCOrderHistory(): Observable {\n return this.http.get(`${this.baseUrl}api/order/cc`, {\n ...this.options,\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchOrderDetails(orderId: string): Observable {\n return this.http.get(`${this.baseUrl}api/order/${orderId}`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchCCOrderDetails(poeOrderId: string): Observable {\n return this.http.get(`${this.baseUrl}api/order/cc/${poeOrderId}`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchClientToken(request: ClientTokenRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/order/payment/token`,\n { ...request, language: this.culture },\n this.options,\n );\n }\n\n fetchPartyOrderClientToken(request: ClientTokenRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/partyorder/token`,\n { ...request, language: this.culture },\n this.options,\n );\n }\n\n submitOrder(request: SubmitOrderRequest): Observable {\n return this.http.post(`${this.baseUrl}api/order/submit`, request, {\n ...this.options,\n });\n }\n\n fetchPartyOrderData(orderId: string): Observable {\n return this.http.get(`${this.baseUrl}api/partyorder/paymentdata`, {\n params: new HttpParams({\n fromObject: { orderId },\n }),\n });\n }\n\n submitPartyOrder(request: AddPaymentToPartyOrderRequest) {\n return this.http.post(\n `${this.baseUrl}api/partyorder/payment`,\n request,\n {\n ...this.options,\n },\n );\n }\n\n logCardAttempt(request: LogCardAttemptRequest): Observable {\n return this.http.post(`${this.baseUrl}api/order/payment/logcardattempt`, request);\n }\n\n printSummary(orderNumber: string): void {\n this.http\n .get(\n `${this.baseUrl}api/order/printSummary?orderNumber=${orderNumber}&culture=${this.culture}`,\n {\n responseType: 'blob',\n },\n )\n .subscribe((pdf) => {\n saveAs(pdf, $localize`OrderConfirmation` + '.pdf');\n });\n }\n\n fetchShippedCartons(orderUID: string, orderId: string): Observable {\n //let parm = orderId == null ? `${orderUID}` : `${orderUID}/${orderId}`;\n //Suja 6/28/24 If only guid is passed then orderId is null so pass only OrderUID (GUID)\n //If orderid is passed, check if guid is passed and send both\n //If OrderId is passed and QUID is not passed, then send only the OrderID\n let parm = orderId == null ? `${orderUID}`:\n (orderUID == null ? `${orderId}`:`${orderUID}/${orderId}`);\n if(orderUID == null){\n return this.http.get\n (`${this.baseUrl}api/order/v2/shipped/${parm}`, {\n ...this.options,\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n\n }\n else{\n return this.http.get\n (`${this.baseUrl}api/order/shipped/${parm}`, {\n ...this.options,\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n // return this.http.get(`${this.baseUrl}api/order/shipped/${parm}`, {\n // ...this.options,\n // params: new HttpParams({\n // fromObject: { culture: this.culture },\n // }),\n // });\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { findConsultantResultPageSize } from '@core/constants/find-consultant';\nimport { CountryStateResponse } from '@core/dto/country-state.dto';\nimport {\n AddressVerificationRequest,\n ClientTokenRequest,\n ClientTokenResponse,\n ConfigurationResponse,\n ConsultantDto,\n CreateOrderRequest,\n CreateOrderResponse,\n CreatePaymentMethodRequest,\n CreatePaymentMethodResponse,\n CreateVoucherRequest,\n CreateVoucherResponse,\n EmailUniquenessCheckResponse,\n FindConsultantByAreaRequest,\n FindConsultantByCodeRequest,\n FindConsultantByZipCodeRequest,\n FindConsultantByZipCodeResponse,\n FindConsultantResponse,\n GetReCaptchaResponse,\n MetaConsultantResponse,\n OrderSummaryRequest,\n OrderSummaryResponse,\n PhoneNumberValidationRequest,\n PhoneNumberValidationResponse,\n ReceiveVouchersRequest,\n ReceiveVouchersResponse,\n SaveAddressInfoRequest,\n SaveContactInfoRequest,\n SaveLogCardAttemptRequest,\n SaveSsnNumberRequest,\n SaveStarterKitRequest,\n SaveUserInfoResponse,\n StarterKitResponse,\n SubmitConsultantRequest,\n SubmitConsultantResponse,\n UpdateOrderRequest,\n UpdateOrderResponse,\n ValidateRegistrationCodeRequest,\n ValidateRegistrationCodeResponse,\n VerifyAddressResponse,\n} from '@core/dto/start-now-app.dto';\nimport { LanguagePreferenceType } from '@core/enums/language-preference-type.enum';\nimport { Locale } from '@core/enums/locale';\nimport { RequestSource } from '@core/enums/request-source.enum';\nimport { UserInfo } from '@core/store/start-now-app/start-now-app-state-models';\nimport { environment } from '@env';\nimport { mapUserInfoToSubmitUserInfoParamsDto } from '@shared/utils/create-submit-consultant-info-utils';\nimport { HtmlParamEncoder } from '@shared/utils/http-param-encoder';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { removeNilProperties } from '@shared/utils/object-utils';\nimport { Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nconst agreementLocaleMapper = {\n en: '\"EnUs\"',\n 'en-US': '\"EnUs\"',\n 'es-US': '\"EsUs\"',\n 'es-MX': '\"EsMx\"',\n};\nconst snaLanguageLocaleMapper = {\n en: 'EnUs',\n 'en-US': 'EnUs',\n 'es-US': 'EsUs',\n 'es-MX': 'EsMx',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StartNowAppService {\n baseUrl: string = environment.startNowAppBackendUri;\n culture: Locale;\n agreementLanguage: string;\n snaLanguageCode: string;\n\n constructor(\n private http: HttpClient,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {\n this.culture = getCulture(localeId);\n this.agreementLanguage = agreementLocaleMapper[this.culture];\n this.snaLanguageCode = snaLanguageLocaleMapper[this.culture];\n }\n\n validateReCaptcha(token: string): Observable {\n return this.http.get(`${this.baseUrl}api/Consultant/googlerecaptcha`, {\n params: new HttpParams({\n fromObject: {\n token,\n },\n }),\n });\n }\n\n fetchStartNowAppConfiguration(): Observable {\n return this.http.get(`${this.baseUrl}api/Configuration`);\n }\n\n findConsultant(request: FindConsultantByAreaRequest): Observable {\n return this.http.get(`${this.baseUrl}api/Consultant/find`, {\n params: new HttpParams({\n fromObject: {\n city: request.city,\n pageNumber: request.pageNumber?.toString() || '1',\n pageSize: request.pageSize?.toString() || findConsultantResultPageSize.toString(),\n firstName: request.firstName,\n lastName: request.lastName,\n stateCode: request.state,\n mobilePhoneNumber: request.mobilePhoneNumber,\n country: request.country,\n requestSource: RequestSource.sna,\n },\n }),\n });\n }\n\n findConsultantByConsultantCode(request: FindConsultantByCodeRequest): Observable {\n return this.http.get(`${this.baseUrl}api/Consultant/vanityname`, {\n params: new HttpParams({\n encoder: new HtmlParamEncoder(),\n fromObject: {\n ...removeNilProperties(request),\n languageCode: this.culture,\n },\n }),\n });\n }\n\n findConsultantByZipCode(\n request: FindConsultantByZipCodeRequest,\n ): Observable {\n return this.http.get(\n `${this.baseUrl}api/Consultant/nearby/${request.zipCode}`,\n {\n params: new HttpParams({\n fromObject: {\n preferredLanguageCode: request.preferredLanguageCode\n ? request.preferredLanguageCode\n : this.culture,\n country: environment.country,\n pageNumber: request.pageNumber.toString(),\n pageSize: request.pageSize.toString(),\n requestSource: RequestSource.sna,\n },\n }),\n },\n );\n }\n\n validateRegistrationCode(\n request: ValidateRegistrationCodeRequest,\n ): Observable {\n return this.http.post(\n `${this.baseUrl}api/Consultant/validateregistrationcode`,\n request,\n );\n }\n\n getAgreementPdf(): Observable {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json; charset=utf-8' });\n const body = this.agreementLanguage;\n\n return this.http\n .post(`${this.baseUrl}api/Export/PrintAgreements`, body, {\n headers: headers,\n observe: 'response',\n responseType: 'blob',\n })\n .pipe(\n take(1),\n map((response) => response.body),\n );\n }\n\n saveUserInfo(\n userInfo: UserInfo,\n applicationRegistrationId: number,\n securityKey: string,\n ): Observable {\n return this.http.post(`${this.baseUrl}api/SubmitConsultant/userinfo`, {\n ...mapUserInfoToSubmitUserInfoParamsDto(userInfo),\n applicationRegistrationId,\n securityKey,\n });\n }\n\n saveContactInfo(request: SaveContactInfoRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/SubmitConsultant/contactinfo`,\n request,\n );\n }\n\n saveAddressInfo(request: SaveAddressInfoRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/SubmitConsultant/addressinfo`,\n request,\n );\n }\n\n saveStarterKit(request: SaveStarterKitRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/SubmitConsultant/starterkit`,\n request,\n );\n }\n\n emailUniquenessCheck(email: string): Observable {\n return this.http.post(\n `${this.baseUrl}api/Consultant/ValidateEmail`,\n {\n email: email,\n },\n );\n }\n\n fetchStarterKits(\n preferredLanguage: LanguagePreferenceType,\n isNonPfas: boolean,\n ): Observable {\n return this.http.get(`${this.baseUrl}api/StarterKit`, {\n params: new HttpParams({\n fromObject: {\n languageCode: this.snaLanguageCode,\n starterKitLanguageCode: snaLanguageLocaleMapper[preferredLanguage],\n isNonPfas: isNonPfas,\n },\n }),\n });\n }\n\n logCardAttempt(request: SaveLogCardAttemptRequest): Observable {\n return this.http.post(`${this.baseUrl}api/Payment/LogCardAttempt`, request);\n }\n\n /**\n * Check if new payment required because with back/forth UI navigation can occur invalid payment & starter kit\n * combinations. In case of US there is the 25% advance option and in Mexico case there are multiple starter kits\n */\n checkIfNewPaymentRequired(\n applicationRegistrationId: number,\n starterKitId: number,\n isDepositPayment: boolean,\n isReducedDepositPayment: boolean,\n isZeroDepositPayment: boolean,\n ): Observable {\n return this.http.get(`${this.baseUrl}api/Payment/IsNewPaymentRequired`, {\n params: new HttpParams({\n fromObject: {\n applicationRegistrationId: applicationRegistrationId.toString(),\n starterKitId: starterKitId.toString(),\n isDepositPayment: String(isDepositPayment),\n isReducedDepositPayment: String(isReducedDepositPayment),\n isZeroDepositPayment: String(isZeroDepositPayment),\n },\n }),\n });\n }\n\n fetchDepositPaymentValue(): Observable {\n return this.http.get(`${this.baseUrl}api/Payment/DepositPaymentValue`);\n }\n\n fetchReducedDepositPaymentValue(): Observable {\n return this.http.get(`${this.baseUrl}api/Payment/ReducedDepositPaymentValue`);\n }\n\n fetchIsReducedDepositAvailable(): Observable {\n return this.http.get(`${this.baseUrl}api/starterkit/isReducedDepositPaymentAvailable`);\n }\n\n fetchIsZeroDepositAvailable(): Observable {\n return this.http.get(`${this.baseUrl}api/starterkit/isZeroDepositPaymentAvailable`);\n }\n\n fetchStates(): Observable {\n return this.http.get(`${this.baseUrl}api/Address/states`);\n }\n\n fetchClientToken(request: ClientTokenRequest): Observable {\n return this.http.post(`${this.baseUrl}api/Payment/clienttoken`, {\n ...request,\n languageCode: this.snaLanguageCode,\n });\n }\n\n createOrder(request: CreateOrderRequest): Observable {\n return this.http.post(`${this.baseUrl}api/Payment/createOrder`, request);\n }\n\n updateOrder(request: UpdateOrderRequest): Observable {\n return this.http.post(`${this.baseUrl}api/Payment/updateOrder`, request);\n }\n\n createPaymentMethod(\n request: CreatePaymentMethodRequest,\n ): Observable {\n return this.http.post(`${this.baseUrl}api/Payment`, {\n ...request,\n });\n }\n\n createVoucher(request: CreateVoucherRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/Payment/CreateVoucher`,\n request,\n );\n }\n\n receiveVouchers(request: ReceiveVouchersRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/Payment/ReceiveVouchers`,\n request,\n );\n }\n\n verifyAddress(request: AddressVerificationRequest): Observable {\n return this.http.post(`${this.baseUrl}api/Address/verify`, request);\n }\n\n /** In some cases the consultants in the SNA db are not synced with the ones from UserManagement. From this cause\n * before Voucher activation, we need to check it, otherwise the vouchers will be created and sent out,\n * but the consultant submission could fail! */\n checkIfCanSubmitConsultant(\n request: SubmitConsultantRequest,\n ): Observable {\n return this.http.post(\n `${this.baseUrl}api/SubmitConsultant/CanSubmitConsultant`,\n {\n ...request,\n },\n );\n }\n\n submitConsultant(request: SubmitConsultantRequest): Observable {\n return this.http.post(`${this.baseUrl}api/SubmitConsultant`, {\n ...request,\n });\n }\n\n saveSsnNumber(request: SaveSsnNumberRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/SubmitConsultant/governmentid`,\n request,\n );\n }\n\n fetchVoucherPdf(applicationRegistrationId: number): Observable {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json; charset=utf-8' });\n return this.http\n .post(`${this.baseUrl}api/Export/PrintVoucher`, applicationRegistrationId, {\n headers: headers,\n observe: 'response',\n responseType: 'blob',\n })\n .pipe(\n take(1),\n map((response) => response.body),\n );\n }\n\n fetchVoucherBarCodeUrls(applicationRegistrationId: number): Observable {\n return this.http.get(`${this.baseUrl}api/Payment/VoucherBarcodeUrls`, {\n params: new HttpParams({\n fromObject: {\n applicationRegistrationId: applicationRegistrationId.toString(),\n },\n }),\n });\n }\n\n fetchOrderSummary(request: OrderSummaryRequest): Observable {\n return this.http.post(\n `${this.baseUrl}api/Payment/GetOrderPaymentSummary`,\n request,\n );\n }\n\n checkPhoneNumberUniqueness(\n request: PhoneNumberValidationRequest,\n ): Observable {\n return this.http.post(\n `${this.baseUrl}api/Consultant/ValidatePhoneNumber`,\n request,\n );\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n CreateVoucherResponse,\n ReceiveVoucherResponse,\n ReceiveVouchersRequest,\n} from '@core/dto/voucher.dto';\nimport { CreatedVoucher } from '@core/store/voucher/voucher-state-models';\nimport { environment } from '@env';\nimport { saveAs } from 'file-saver';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VoucherService {\n baseUrl: string = environment.ecommerceBackendUri;\n options = {\n withCredentials: true,\n };\n\n constructor(private http: HttpClient) {}\n\n createVoucher(email: string): Observable {\n return this.http.post(\n `${this.baseUrl}api/order/payment/createvoucher`,\n { email },\n this.options,\n );\n }\n\n receiveVoucher(\n request: ReceiveVouchersRequest,\n ): Observable<{ vouchers: ReceiveVoucherResponse[] }> {\n return this.http.post<{ vouchers: ReceiveVoucherResponse[] }>(\n `${this.baseUrl}api/order/payment/receivevouchers`,\n request,\n this.options,\n );\n }\n\n generateVoucher(vouchers: CreatedVoucher[]): Observable {\n const vouchersToGenerate$ = new BehaviorSubject(vouchers);\n\n for (let i = 0; i < vouchers.length; i++) {\n let iframe = document.createElement('iframe') as HTMLIFrameElement;\n\n iframe.hidden = true;\n iframe.src = vouchers[i].voucherUrl;\n\n document.body.appendChild(iframe);\n\n iframe.onload = () => {\n const remainingVouchers = vouchersToGenerate$.getValue();\n vouchersToGenerate$.next(\n remainingVouchers.filter((voucher) => voucher.token !== vouchers[i].token),\n );\n };\n }\n\n return vouchersToGenerate$.pipe(\n filter((vouchersToGenerate) => vouchersToGenerate.length === 0),\n map(() => vouchers.map((voucher) => voucher.token)),\n );\n }\n\n downloadVoucher(id: string) {\n this.http\n .get(`${this.baseUrl}api/order/${id}/downloadVoucher`, { responseType: 'blob' })\n .subscribe((pdf) => {\n saveAs(pdf, $localize`voucher` + '.pdf');\n });\n }\n\n prevalidateVoucher(email: string) {\n return this.http.get(`${this.baseUrl}api/order/payment/prevalidatevoucher`, {\n ...this.options,\n params: new HttpParams({\n fromObject: {\n email,\n },\n }),\n });\n }\n}\n","import { MelissaErrorCode } from '@core/enums/melissa-error-code';\n\nexport interface AddressState {\n loading: boolean;\n addressIsFetched: boolean;\n addresses: Address[];\n countryStates: CountryState[];\n saveInProgress: boolean;\n modals: {\n addressValidation: AddressValidation;\n };\n}\n\nexport interface Address {\n id: number;\n name: string;\n firstName?: string;\n lastName?: string;\n addressLine1: string;\n addressLine2: string;\n addressLine3?: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n default: boolean;\n type: AddressType;\n address: string;\n}\n\nexport interface ExtendedAddressInformation {\n firstName: string;\n lastName: string;\n phoneNumber?: string;\n address: Address;\n}\n\nexport interface CountryState {\n name: string;\n code: string;\n}\n\nexport interface AddressValidation {\n saveSuccessful: boolean;\n addressVerificationResult: AddressVerification;\n}\n\nexport interface AddressVerification {\n isValid: boolean;\n originalAddress: Address;\n ValidationCategoryAddresses: MelissaErrorCode[];\n ValidationCategoryLocations: MelissaErrorCode[];\n ValidationCategoryOthers: MelissaErrorCode[];\n correctedAddress: Address;\n}\n\nexport enum AddressType {\n default = 'Default',\n other = 'Other',\n}\n","import {\n AddressValidationResponse,\n CreateAddressRequest,\n UpdateAddressRequest,\n} from '@core/dto/address.dto';\nimport { createAction, props } from '@ngrx/store';\nimport { Address, CountryState } from './address-state-models';\nimport { PhErrorResponse } from '@core/dto/ph-error';\n\nexport enum AddressActionTypes {\n resetAddressState = '[Address] Reset address state',\n\n fetchAddresses = '[Address] Fetch addresses',\n fetchAddressesSuccess = '[Address] Fetch addresses success',\n fetchAddressesFailure = '[Address] Fetch addresses failure',\n\n updateAddress = '[Address] Update address',\n updateAddressSuccess = '[Address] Update address success',\n updateAddressFailure = '[Address] Update address failure',\n\n createAddress = '[Address] Create address',\n createAddressSuccess = '[Address] Create address success',\n createAddressFailure = '[Address] Create address failure',\n\n deleteAddress = '[Address] Delete address',\n deleteAddressSuccess = '[Address] Delete address success',\n deleteAddressFailure = '[Address] Delete address failure',\n\n fetchCountryStates = '[Address] Fetch country states',\n fetchCountryStatesSuccess = '[Address] Fetch country states success',\n fetchCountryStatesFailure = '[Address] Fetch country states failure',\n\n resetAddressValidationModal = '[Address] Reset address validation modal',\n\n addressValidation = '[Address] Address validation',\n}\n\nexport const resetAddressState = createAction(AddressActionTypes.resetAddressState);\nexport const fetchAddresses = createAction(AddressActionTypes.fetchAddresses);\nexport const fetchAddressesSuccess = createAction(\n AddressActionTypes.fetchAddressesSuccess,\n props<{ addresses: Address[] }>(),\n);\nexport const fetchAddressesFailure = createAction(\n AddressActionTypes.fetchAddressesFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Update\n */\nexport const updateAddress = createAction(\n AddressActionTypes.updateAddress,\n props<{ address: UpdateAddressRequest }>(),\n);\nexport const updateAddressSuccess = createAction(\n AddressActionTypes.updateAddressSuccess,\n props<{ addressValidation: AddressValidationResponse }>(),\n);\nexport const updateAddressFailure = createAction(\n AddressActionTypes.updateAddressFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Create\n */\nexport const createAddress = createAction(\n AddressActionTypes.createAddress,\n props<{ address: CreateAddressRequest }>(),\n);\nexport const createAddressSuccess = createAction(\n AddressActionTypes.createAddressSuccess,\n props<{ addressValidation: AddressValidationResponse }>(),\n);\nexport const createAddressFailure = createAction(\n AddressActionTypes.createAddressFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Delete\n */\nexport const deleteAddress = createAction(\n AddressActionTypes.deleteAddress,\n props<{ id: number }>(),\n);\nexport const deleteAddressSuccess = createAction(AddressActionTypes.deleteAddressSuccess);\nexport const deleteAddressFailure = createAction(\n AddressActionTypes.deleteAddressFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Fetch Country States\n */\nexport const fetchCountryStates = createAction(AddressActionTypes.fetchCountryStates);\nexport const fetchCountryStatesSuccess = createAction(\n AddressActionTypes.fetchCountryStatesSuccess,\n props<{ countryStates: CountryState[] }>(),\n);\nexport const fetchCountryStatesFailure = createAction(\n AddressActionTypes.fetchCountryStatesFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const resetAddressValidationModal = createAction(\n AddressActionTypes.resetAddressValidationModal,\n);\n\nexport const addressValidation = createAction(\n AddressActionTypes.addressValidation,\n props<{ addressValidation: AddressValidationResponse }>(),\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { AddressState } from './address-state-models';\n\nexport const addressStateFeatureKey = 'addressState';\n\nexport const selectAddressFeature = createFeatureSelector(addressStateFeatureKey);\n\nexport const selectAddresses = createSelector(selectAddressFeature, (state: AddressState) =>\n state ? state.addresses : null,\n);\n\nexport const selectAddressIsFetched = createSelector(selectAddressFeature, (state: AddressState) =>\n state ? state.addressIsFetched : null,\n);\n\nexport const selectLoading = createSelector(selectAddressFeature, (state: AddressState) =>\n state ? state.loading : false,\n);\n\nexport const selectCountryStateNames = createSelector(\n selectAddressFeature,\n (state: AddressState) => (state ? state.countryStates.map((s) => s.name) : []),\n);\n\nexport const selectCountryStates = createSelector(selectAddressFeature, (state: AddressState) =>\n state ? state.countryStates : [],\n);\n\nexport const selectAddressValidation = createSelector(\n selectAddressFeature,\n (state: AddressState) => (state ? state.modals.addressValidation : null),\n);\n\nexport const selectSaveInProgress = createSelector(selectAddressFeature, (state: AddressState) =>\n state ? state.saveInProgress : false,\n);\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { createAction, props } from '@ngrx/store';\nimport { AppstateLogOutResetMap } from './auth-state-models';\n\nexport enum AuthActionTypes {\n logInSuccess = '[Auth] LogIn success',\n logInFailed = '[Auth] LogIn fail',\n\n logOut = '[Auth] Logout started',\n logOutResetConcluded = '[Auth] A state concluded its logOut routine',\n\n setAuthLoading = '[Auth] Set Auth state loading',\n setIsAuthenticated = '[Auth] Set IsAuthenticated',\n}\n\nexport const logInSuccess = createAction(\n AuthActionTypes.logInSuccess,\n props<{ isNewLogin: boolean }>(),\n);\n\nexport const logInFailed = createAction(\n AuthActionTypes.logInFailed,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const logOut = createAction(AuthActionTypes.logOut);\n\nexport const logOutResetConcluded = createAction(\n AuthActionTypes.logOutResetConcluded,\n props<{ state: keyof AppstateLogOutResetMap }>(),\n);\n\nexport const setAuthLoading = createAction(\n AuthActionTypes.setAuthLoading,\n props<{ loading: boolean }>(),\n);\n\nexport const setIsAuthenticated = createAction(\n AuthActionTypes.setIsAuthenticated,\n props<{ isAuthenticated: boolean }>(),\n);\n","import { AuthState } from '@core/store/auth/auth-state-models';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\n\nexport const authStateFeatureKey = 'authState';\n\nexport const selectAuthFeature = createFeatureSelector(authStateFeatureKey);\n\nexport const selectIsAuthenticated = createSelector(selectAuthFeature, (state: AuthState) =>\n state ? state.isAuthenticated : undefined,\n);\n\nexport const selectIsNewLogin = createSelector(selectAuthFeature, (state: AuthState) =>\n state ? state.isNewLogin : false,\n);\n\nexport const selectStateIsLogoutConcluded = createSelector(\n selectAuthFeature,\n (authState: AuthState) => Object.values(authState.resetConcluded).every((x) => x),\n);\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { BlogResponse } from '@core/dto/blog.dto';\nimport { LoadBlogsProps } from '@core/models/load-blogs.model';\nimport { createAction, props } from '@ngrx/store';\nimport { BlogCategory, BlogDetailsItem } from './blog-state-models';\n\nexport enum BlogActionTypes {\n fetchBlogs = '[Blog] Fetch Blogs',\n fetchBlogsSuccess = '[Blog] Fetch Blogs success',\n fetchBlogsFailure = '[Blog] Fetch Blogs failure',\n fetchBlogCategories = '[Blog] Fetch Blog categories',\n fetchBlogCategoriesSuccess = '[Blog] Fetch Blog categories success',\n fetchBlogCategoriesFailure = '[Blog] Fetch Blog categories failure',\n resetBlogs = '[Blog] reset Blogs',\n fetchBlogDetails = '[Blog] Fetch Blog details',\n fetchBlogDetailsSuccess = '[Blog] Fetch Blog details success',\n fetchBlogDetailsFailure = '[Blog] Fetch Blog details failure',\n resetBlogDetails = '[Blog] Reset Blog details',\n}\n\nexport const fetchBlogs = createAction(BlogActionTypes.fetchBlogs, props());\n\nexport const fetchBlogsSuccess = createAction(\n BlogActionTypes.fetchBlogsSuccess,\n props<{ items: BlogResponse[]; pageSize: number; isFirstPage?: boolean }>(),\n);\n\nexport const fetchBlogsFailure = createAction(\n BlogActionTypes.fetchBlogsFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const fetchBlogCategories = createAction(BlogActionTypes.fetchBlogCategories);\n\nexport const fetchBlogCategoriesSuccess = createAction(\n BlogActionTypes.fetchBlogCategoriesSuccess,\n props<{ blogCategories: BlogCategory[] }>(),\n);\n\nexport const fetchBlogCategoriesFailure = createAction(\n BlogActionTypes.fetchBlogCategoriesFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const resetBlogs = createAction(BlogActionTypes.resetBlogs);\n\n/**\n * Blog details\n */\nexport const fetchBlogDetails = createAction(\n BlogActionTypes.fetchBlogDetails,\n props<{ url: string }>(),\n);\n\nexport const fetchBlogDetailsSuccess = createAction(\n BlogActionTypes.fetchBlogDetailsSuccess,\n props<{ item: BlogDetailsItem }>(),\n);\n\nexport const fetchBlogDetailsFailure = createAction(BlogActionTypes.fetchBlogDetailsFailure);\n\nexport const resetBlogDetails = createAction(BlogActionTypes.resetBlogDetails);\n","import { createAction, props } from '@ngrx/store';\nimport { CartResponse } from '@core/dto/cart.dto';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AddToCartConfirmModelData } from './cart-state-models';\nimport { ProductRecommendation } from '../product/product-state-models';\nimport { PhErrorResponse } from '@core/dto/ph-error';\n\nexport enum CartActionTypes {\n resetCartState = '[Cart] Reset Cart State',\n\n fetchCart = '[Cart] Fetch Cart',\n fetchCartSuccess = '[Cart] Fetch Cart Success',\n fetchCartFailure = '[Cart] Fetch Cart Failure',\n\n addToCart = '[Cart] Add To Cart',\n addToCartSuccess = '[Cart] Add To Cart Success',\n addToCartFailure = '[Cart] Add To Cart Failure',\n\n updateOrderLine = '[Cart] Update Order Line',\n updateOrderLineSuccess = '[Cart] Update Order Line Success',\n updateOrderLineFailure = '[Cart] Update Order Line Failure',\n\n mergeCarts = '[Cart] Merge Carts',\n mergeCartsSuccess = '[Cart] Merge Carts Success',\n mergeCartsFailure = '[Cart] Merge Carts Failure',\n\n createCart = '[Cart] Create Cart',\n createCartSuccess = '[Cart] Create Cart Success',\n createCartFailure = '[Cart] Create Cart Failure',\n\n deleteFromCart = '[Cart] Delete from Cart',\n deleteFromCartSuccess = '[Cart] Delete from Cart Success',\n deleteFromCartFailure = '[Cart] Delete from Cart Failure',\n\n fetchProductsRecommendations = '[Cart] Fetch Products Recommendations',\n fetchProductsRecommendationsSuccess = '[Cart] Fetch Products Recommendations Success',\n fetchProductsRecommendationsFailure = '[Cart] Fetch Products Recommendations Failure',\n\n addSurpriseBuy = '[Cart] Add Surprise Buy',\n addSurpriseBuySuccess = '[Cart] Add Surprise Buy Success',\n addSurpriseBuyFailure = '[Cart] Add Surprise Buy Failure',\n\n setAddToCartConfirmModal = '[Product] Set Add To Cart Confirmation Modal',\n}\n\nexport const resetCartState = createAction(CartActionTypes.resetCartState);\n\n/**\n * Fetch cart\n */\nexport const fetchCart = createAction(CartActionTypes.fetchCart);\nexport const fetchCartSuccess = createAction(\n CartActionTypes.fetchCartSuccess,\n props<{ cart: CartResponse }>(),\n);\nexport const fetchCartFailure = createAction(\n CartActionTypes.fetchCartFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Add product to cart\n */\nexport const addToCart = createAction(\n CartActionTypes.addToCart,\n props<{ payload: AddToCartConfirmModelData }>(),\n);\nexport const addToCartSuccess = createAction(\n CartActionTypes.addToCartSuccess,\n props<{ payload: AddToCartConfirmModelData }>(),\n);\nexport const addToCartFailure = createAction(\n CartActionTypes.addToCartFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Update order line quantity\n */\nexport const updateOrderLineQty = createAction(\n CartActionTypes.updateOrderLine,\n props<{ orderLineId: number; quantity: number }>(),\n);\nexport const updateOrderLineQtySuccess = createAction(\n CartActionTypes.updateOrderLineSuccess,\n props<{ cart: CartResponse }>(),\n);\nexport const updateOrderLineQtyFailure = createAction(\n CartActionTypes.updateOrderLineFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n/**\n * Merge guest and user carts\n */\nexport const mergeCarts = createAction(CartActionTypes.mergeCarts);\nexport const mergeCartsSuccess = createAction(CartActionTypes.mergeCartsSuccess);\nexport const mergeCartsFailure = createAction(\n CartActionTypes.mergeCartsFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n\n/**\n * Create new, empty cart\n */\nexport const newCart = createAction(CartActionTypes.createCart);\nexport const newCartSuccess = createAction(CartActionTypes.createCartSuccess);\nexport const newCartFailure = createAction(\n CartActionTypes.createCartFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n\n/**\n * Delete item from cart\n */\nexport const deleteFromCart = createAction(\n CartActionTypes.deleteFromCart,\n props<{ orderLineId: number }>(),\n);\nexport const deleteFromCartSuccess = createAction(\n CartActionTypes.deleteFromCartSuccess,\n props<{ cart: CartResponse }>(),\n);\nexport const deleteFromCartFailure = createAction(\n CartActionTypes.deleteFromCartFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Fetch products recommendations\n */\nexport const fetchProductsRecommendations = createAction(\n CartActionTypes.fetchProductsRecommendations,\n props<{ skus: string[] }>(),\n);\nexport const fetchProductsRecommendationsSuccess = createAction(\n CartActionTypes.fetchProductsRecommendationsSuccess,\n props<{ recommendations: ProductRecommendation[] }>(),\n);\nexport const fetchProductsRecommendationsFailure = createAction(\n CartActionTypes.fetchProductsRecommendationsFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * AddToCart confirm modal\n */\nexport const setAddToCartConfirmModal = createAction(\n CartActionTypes.setAddToCartConfirmModal,\n props<{ payload: AddToCartConfirmModelData }>(),\n);\n\nexport const addSurpriseBuy = createAction(CartActionTypes.addSurpriseBuy);\nexport const addSurpriseBuySuccess = createAction(\n CartActionTypes.addSurpriseBuySuccess,\n props<{ cart: CartResponse }>(),\n);\nexport const addSurpriseBuyFailure = createAction(\n CartActionTypes.addSurpriseBuyFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { CartState } from './cart-state-models';\n\nexport const cartStateFeatureKey = 'cartState';\n\nexport const selectCartStateFeature = createFeatureSelector(cartStateFeatureKey);\n\nexport const selectAddToCartConfirmModal = createSelector(\n selectCartStateFeature,\n (state: CartState) => (state ? state.modals.addToCartConfirm : null),\n);\n\nexport const selectCart = createSelector(selectCartStateFeature, (state: CartState) =>\n state ? state.cart : null,\n);\n\nexport const selectOrderLineById = (id: number) =>\n createSelector(selectCartStateFeature, (state: CartState) =>\n state ? state.cart.orderLines.find((o) => o.orderLineId === id) : null,\n );\n\nexport const selectLoading = createSelector(selectCartStateFeature, (state) =>\n state ? state.loading : false,\n);\n\nexport const selectAddSurpriseBuyLoading = createSelector(selectCartStateFeature, (state) =>\n state ? state.addSurpriseBuyLoading : false,\n);\n","import { CheckoutPersonalInfoResponse } from '@core/dto/checkout.dto';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { createAction, props } from '@ngrx/store';\nimport { Address } from '../address/address-state-models';\nimport { BillingAddressModel, PersonalInfo } from './checkout-state-models';\n\nexport enum CheckoutActionTypes {\n updatePersonalInfo = '[Checkout] Update Personal Info',\n updatePersonalInfoSuccess = '[Checkout] Update Personal Info Success',\n updatePersonalInfoFailure = '[Checkout] Update Personal Info Failure',\n\n checkoutAddressValidation = '[Checkout] Address validation',\n resetCheckoutAddressValidationModal = '[Checkout] Reset personal info modal',\n resetSaveSuccessful = '[Checkout] Reset Save successful',\n\n openSavedAddressesModal = '[Checkout] Open select addresses modal',\n resetSavedAddressesModal = '[Checkout] Reset select addresses modal',\n\n checkUserByEmail = '[Checkout] Check user by email',\n checkUserByEmailSuccess = '[Checkout] Check user by email success',\n checkUserByEmailFailure = '[Checkout] Check user by email failure',\n resetEmailCheck = '[Checkout] Reset email check',\n resetLoginModal = '[Checkout] Reset login modal',\n\n resetCheckoutState = '[Checkout] Reset Checkout State',\n\n cancelPersonalInfoUpdate = '[Checkout] Cancel Personal info update',\n\n setPaymentType = '[Checkout] Set payment type',\n\n userContinuesWithoutLogin = '[Checkout] Continue without login',\n\n storeBillingAddress = '[Checkout] Store billing address',\n}\n\nexport const updatePersonalInfo = createAction(\n CheckoutActionTypes.updatePersonalInfo,\n props<{ personalInfo: PersonalInfo; skipAddressVerification: boolean }>(),\n);\nexport const updatePersonalInfoSuccess = createAction(\n CheckoutActionTypes.updatePersonalInfoSuccess,\n props<{ personalInfo: PersonalInfo }>(),\n);\nexport const updatePersonalInfoFailure = createAction(\n CheckoutActionTypes.updatePersonalInfoFailure,\n props<{ error: any }>(),\n);\nexport const cancelPersonalInfoUpdate = createAction(CheckoutActionTypes.cancelPersonalInfoUpdate);\n\nexport const resetCheckoutState = createAction(CheckoutActionTypes.resetCheckoutState);\n\nexport const resetSaveSuccessful = createAction(CheckoutActionTypes.resetSaveSuccessful);\n\nexport const checkoutAddressValidation = createAction(\n CheckoutActionTypes.checkoutAddressValidation,\n props<{ addressValidation: CheckoutPersonalInfoResponse }>(),\n);\n\nexport const openSavedAddressesModal = createAction(\n CheckoutActionTypes.openSavedAddressesModal,\n props<{ currentAddress: Address }>(),\n);\nexport const resetSavedAddressesModal = createAction(CheckoutActionTypes.resetSavedAddressesModal);\n\nexport const resetCheckoutAddressValidationModal = createAction(\n CheckoutActionTypes.resetCheckoutAddressValidationModal,\n);\n\nexport const checkUserByEmail = createAction(\n CheckoutActionTypes.checkUserByEmail,\n props<{ email: string }>(),\n);\nexport const checkUserByEmailSuccess = createAction(CheckoutActionTypes.checkUserByEmailSuccess);\nexport const checkUserByEmailFailure = createAction(\n CheckoutActionTypes.checkUserByEmailFailure,\n props<{ error: any }>(),\n);\nexport const resetEmailCheck = createAction(CheckoutActionTypes.resetEmailCheck);\nexport const resetLoginModal = createAction(CheckoutActionTypes.resetLoginModal);\n\nexport const setPaymentType = createAction(\n CheckoutActionTypes.setPaymentType,\n props<{ paymentType: PaymentType }>(),\n);\n\nexport const userContinuesWithoutLogin = createAction(\n CheckoutActionTypes.userContinuesWithoutLogin,\n);\n\n/**\n * Billing address information\n */\nexport const storeBillingAddress = createAction(\n CheckoutActionTypes.storeBillingAddress,\n props<{ billingInfo: BillingAddressModel }>(),\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { CheckoutState } from './checkout-state-models';\n\nexport const checkoutStateFeatureKey = 'checkoutState';\n\nexport const selectCheckoutStateFeature =\n createFeatureSelector(checkoutStateFeatureKey);\n\nexport const selectPersonalInfo = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.personalInfo : null),\n);\n\nexport const selectAddressVerification = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.personalInfoModal.addressValidation : null),\n);\n\nexport const selectSaveSuccessful = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.saveSuccessful : false),\n);\n\nexport const selectCurrentAddress = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.savedAddressesModal.currentAddress : null),\n);\n\nexport const selectLoginModal = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.loginModal : null),\n);\n\nexport const selectUpdatePersonalInfoIsLoading = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.isLoading : false),\n);\n\nexport const selectPaymentType = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.paymentType : null),\n);\n\nexport const selectIsRegisteredUserWithoutLogin = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.isRegisteredUserWithoutLogin : false),\n);\n\nexport const selectEmailCheckErrorType = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.loginModal.checkEmailFailedErrorType : null),\n);\n\nexport const selectEmailChecked = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.emailChecked : false),\n);\n\nexport const selectAddressErrorType = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.addressErrorType : null),\n);\n\nexport const selectBillingInfo = createSelector(\n selectCheckoutStateFeature,\n (state: CheckoutState) => (state ? state.billingInfo : null),\n);\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { createAction, props } from '@ngrx/store';\nimport { ConditionalContent } from './conditional-content-state-models';\n\nexport enum ConditionalContentActionTypes {\n fetchConditionalContentByUrlName = '[Conditional Content] Fetch conditional content by urlName',\n // eslint-disable-next-line max-len\n fetchConditionalContentByPageCategory = '[Conditional Content] Fetch conditional content by pageCateogry',\n fetchConditionalContentSuccess = '[Conditional Content] Fetch conditional content success',\n fetchConditionalContentError = '[Conditional Content] Fetch conditional content error',\n resetConditionalContentState = '[Conditional Content] Reset conditional content state',\n}\n\nexport const fetchConditionalContentByUrlName = createAction(\n ConditionalContentActionTypes.fetchConditionalContentByUrlName,\n props<{ urlName: string }>(),\n);\n\nexport const fetchConditionalContentByPageCategory = createAction(\n ConditionalContentActionTypes.fetchConditionalContentByPageCategory,\n props<{ pageCategory: string; viewAs: string }>(),\n);\n\nexport const fetchConditionalContentSuccess = createAction(\n ConditionalContentActionTypes.fetchConditionalContentSuccess,\n props<{ content: ConditionalContent[] }>(),\n);\n\nexport const fetchConditionalContentError = createAction(\n ConditionalContentActionTypes.fetchConditionalContentError,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const resetConditionalContentState = createAction(\n ConditionalContentActionTypes.resetConditionalContentState,\n);\n","import {\n ConsultantResponse,\n FindConsultantRequest,\n LocateConsultantRequest,\n} from '@core/dto/consultant.dto';\nimport { PhException } from '@core/models/ph-exception';\nimport { createAction, props } from '@ngrx/store';\nimport { Consultant, Party } from './consultant-state-models';\n\nexport enum ConsultantActionTypes {\n fetchCurrentConsultantByVanityName = '[Consultant] Fetch current consultant by vanity name',\n fetchCurrentConsultantByLoginName = '[Consultant] Fetch current consultant by login name',\n fetchCurrentConsultantSuccess = '[Consultant] Fetch current consultant success',\n fetchCurrentConsultantFailure = '[Consultant] Fetch current consultant failure',\n resetCurrentConsultant = '[Consultant] Reset current consultant state',\n // eslint-disable-next-line max-len\n resetFetchCurrentConsultantSuccessfulStatus = '[Consultant] Reset fetch current consultant successful status',\n fetchAssignedConsultant = '[Consultant] Fetch assigned consultant',\n fetchAssignedConsultantSuccess = '[Consultant] Fetch assigned consultant success',\n fetchAssignedConsultantFailure = '[Consultant] Fetch assigned consultant failure',\n resetAssignedConsultant = '[Consultant] Reset assigned consultant',\n\n fetchAssignedConsultantOnCheckout = '[Consultant] Fetch assigned consultant on checkout',\n // eslint-disable-next-line max-len\n fetchAssignedConsultantOnCheckoutSuccess = '[Consultant] Fetch assigned consultant on checkout success',\n // eslint-disable-next-line max-len\n fetchAssignedConsultantOnCheckoutFailure = '[Consultant] Fetch assigned consultant on checkout failure',\n\n findConsultant = '[Consultant] Find consultant',\n findConsultantSuccess = '[Consultant] Find consultant success',\n findConsultantFailure = '[Consultant] Find consultant failure',\n locateConsultant = '[Consultant] Locate consultant',\n locateConsultantSuccess = '[Consultant] Locate consultant success',\n locateConsultantFailure = '[Consultant] Locate consultant failure',\n resetConsultantFinderState = '[Consultant] Reset consultant finder state',\n resetConsultantLocatorErrorType = '[Consultant] Reset consultant locator error type',\n\n fetchConsultantParties = '[Consultant] Fetch consultant parties',\n fetchConsultantPartiesSuccess = '[Consultant] Fetch consultant parties success',\n fetchConsultantPartiesFailure = '[Consultant] Fetch consultant parties failure',\n resetConsultantPartyState = '[Consultant] Reset consultant party state',\n selectParty = '[Consultant] Select party',\n resetParty = '[Consultant] Reset party',\n resetPartyAndIsOrderCreditToHostParty = '[Consultant] Reset party and isOrderAsCreditToHostParty',\n selectIsOrderCreditToHostParty = '[Consultant] Select order as credit to a host of a party',\n consultantCheckingInProgress = '[Consultant] Consultant checking is in progress',\n consultantCheckingIsDone = '[Consultant] Consultant checking is done',\n setIsOutdatedData = '[Consultant] Set isOutdatedData',\n resetOpenPartyVerificationFailedModal = '[Consultant] Reset open party verification failed modal',\n}\n\n/**\n * Fetch Consultant\n */\nexport const fetchCurrentConsultantByVanityName = createAction(\n ConsultantActionTypes.fetchCurrentConsultantByVanityName,\n props<{ vanityName: string; filterCountry: boolean }>(),\n);\n\nexport const fetchCurrentConsultantByLoginName = createAction(\n ConsultantActionTypes.fetchCurrentConsultantByLoginName,\n props<{ loginName: string; filterCountry: boolean }>(),\n);\n\nexport const fetchCurrentConsultantSuccess = createAction(\n ConsultantActionTypes.fetchCurrentConsultantSuccess,\n props<{ consultant: ConsultantResponse; isPartyEnabled: boolean }>(),\n);\n\nexport const fetchCurrentConsultantFailure = createAction(\n ConsultantActionTypes.fetchCurrentConsultantFailure,\n props<{ error: PhException; searchedVanityName: string }>(),\n);\n\nexport const resetCurrentConsultant = createAction(\n ConsultantActionTypes.resetCurrentConsultant,\n (isCurrentConsultantFetched = false) => ({ isCurrentConsultantFetched }),\n);\n\nexport const resetFetchCurrentConsultantSuccessfulStatus = createAction(\n ConsultantActionTypes.resetFetchCurrentConsultantSuccessfulStatus,\n);\n\n/**\n * Assigned consultant\n */\nexport const fetchAssignedConsultant = createAction(ConsultantActionTypes.fetchAssignedConsultant);\n\nexport const fetchAssignedConsultantSuccess = createAction(\n ConsultantActionTypes.fetchAssignedConsultantSuccess,\n props<{ consultant: ConsultantResponse }>(),\n);\n\nexport const fetchAssignedConsultantFailure = createAction(\n ConsultantActionTypes.fetchAssignedConsultantFailure,\n);\n\nexport const resetAssignedConsultant = createAction(ConsultantActionTypes.resetAssignedConsultant);\n\n/**\n * Fetch assigned consultant on checkout\n */\nexport const fetchAssignedConsultantOnCheckout = createAction(\n ConsultantActionTypes.fetchAssignedConsultantOnCheckout,\n);\nexport const fetchAssignedConsultantOnCheckoutSuccess = createAction(\n ConsultantActionTypes.fetchAssignedConsultantOnCheckoutSuccess,\n props<{ consultant: Consultant }>(),\n);\nexport const fetchAssignedConsultantOnCheckoutFailure = createAction(\n ConsultantActionTypes.fetchAssignedConsultantOnCheckoutFailure,\n);\n\n/**\n * Find consultant\n */\nexport const findConsultant = createAction(\n ConsultantActionTypes.findConsultant,\n props<{ payload: FindConsultantRequest }>(),\n);\nexport const findConsultantSuccess = createAction(\n ConsultantActionTypes.findConsultantSuccess,\n props<{ hasMore: boolean; results: Consultant[] }>(),\n);\nexport const findConsultantFailure = createAction(ConsultantActionTypes.findConsultantFailure);\n\nexport const locateConsultant = createAction(\n ConsultantActionTypes.locateConsultant,\n props<{ payload: LocateConsultantRequest }>(),\n);\nexport const locateConsultantSuccess = createAction(\n ConsultantActionTypes.locateConsultantSuccess,\n props<{ hasMore: boolean; results: Consultant[] }>(),\n);\nexport const locateConsultantFailure = createAction(\n ConsultantActionTypes.locateConsultantFailure,\n props<{ error: any }>(),\n);\nexport const resetConsultantLocatorErrorType = createAction(\n ConsultantActionTypes.resetConsultantLocatorErrorType,\n);\n\nexport const resetFindConsultantState = createAction(\n ConsultantActionTypes.resetConsultantFinderState,\n);\n\n/**\n * Consultant party\n */\nexport const fetchConsultantParties = createAction(ConsultantActionTypes.fetchConsultantParties);\nexport const fetchConsultantPartiesSuccess = createAction(\n ConsultantActionTypes.fetchConsultantPartiesSuccess,\n props<{ parties: Party[]; selectedParty: Party }>(),\n);\nexport const fetchConsultantPartiesFailure = createAction(\n ConsultantActionTypes.fetchConsultantPartiesFailure,\n);\nexport const resetConsultantPartyState = createAction(\n ConsultantActionTypes.resetConsultantPartyState,\n);\nexport const selectParty = createAction(\n ConsultantActionTypes.selectParty,\n props<{ party: Party }>(),\n);\nexport const resetParty = createAction(ConsultantActionTypes.resetParty);\nexport const resetPartyAndIsOrderCreditToHostParty = createAction(\n ConsultantActionTypes.resetPartyAndIsOrderCreditToHostParty,\n);\nexport const selectIsOrderCreditToHostParty = createAction(\n ConsultantActionTypes.selectIsOrderCreditToHostParty,\n props<{ isOrderCreditToHostParty: boolean }>(),\n);\nexport const consultantCheckingIsDone = createAction(\n ConsultantActionTypes.consultantCheckingIsDone,\n);\nexport const consultantCheckingInProgress = createAction(\n ConsultantActionTypes.consultantCheckingInProgress,\n);\n\n/**\n * Set isOutdatedData\n */\nexport const setIsOutdatedData = createAction(\n ConsultantActionTypes.setIsOutdatedData,\n props<{ isOutdatedData: boolean }>(),\n);\n\n/**\n * Reset open party verification failed modal\n */\nexport const resetOpenPartyVerificationFailedModal = createAction(\n ConsultantActionTypes.resetOpenPartyVerificationFailedModal,\n);\n","import { ConsultantLocatorErrorType } from '@core/enums/consultant-locator-error-type.enum';\nimport { SuccessfulStatus } from '@core/enums/successful-status.enum';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { ConsultantState } from './consultant-state-models';\n\nexport const consultantStateFeatureKey = 'consultantState';\n\nexport const selectConsultantStateFeature =\n createFeatureSelector(consultantStateFeatureKey);\n\nexport const selectCurrentConsultant = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.currentConsultant : null),\n);\n\nexport const selectHasCurrentConsultant = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? !!state.currentConsultant : false),\n);\n\nexport const selectConsultantState = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state : null),\n);\n\nexport const selectAssignedConsultant = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.assignedConsultant : null),\n);\n\nexport const selectConsultantFinder = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.consultantFinder : null),\n);\n\nexport const selectConsultantFinderResultCount = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.consultantFinder.results?.length : 0),\n);\n\nexport const selectCurrentConsultantParties = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) =>\n state?.currentConsultant?.parties ? state.currentConsultant?.parties : [],\n);\n\nexport const selectCurrentConsultantPartiesLoading = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.partiesLoading : false),\n);\n\nexport const selectParty = createSelector(selectConsultantStateFeature, (state: ConsultantState) =>\n state ? state.party : null,\n);\n\nexport const selectIsOrderCreditToHostParty = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.isOrderCreditToHostParty : null),\n);\n\nexport const selectIsConsultantCheckingDone = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.isConsultantCheckingDone : false),\n);\n\nexport const selectIsCurrentConsultantFetched = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.isCurrentConsultantFetched : false),\n);\n\nexport const selectIsAssignedConsultantFetched = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.isAssignedConsultFetched : false),\n);\nexport const selectIsCurrentConsultantCleared = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.isCurrentConsultantCleared : false),\n);\n\nexport const selectFetchCurrentConsultantSuccessfulStatus = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) =>\n state ? state.fetchCurrentConsultantSuccessfulStatus : SuccessfulStatus.BeforeCall,\n);\n\nexport const selectConsultantLocatorErrorType = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) =>\n state ? state.consultantLocatorErrorType : ConsultantLocatorErrorType.None,\n);\n\nexport const selectConsultantFinancialState = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.currentConsultant?.financialState : null),\n);\n\nexport const selectConsultantFinderLoading = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.consultantFinder.loading : false),\n);\n\nexport const selectIsOutdatedData = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.isOutdatedData : true),\n);\n\nexport const selectOpenPartyVerificationFailedModal = createSelector(\n selectConsultantStateFeature,\n (state: ConsultantState) => (state ? state.openPartyVerificationFailedModal : false),\n);\n","export interface ContactUsState {\n sendingMessage: SendingContactUsMessage;\n}\n\nexport enum SendingContactUsMessage {\n notReady,\n inProgress,\n successful,\n failure,\n}\n","import { ContactUsRequest } from '@core/dto/contact-us.dto';\nimport { createAction, props } from '@ngrx/store';\n\nexport enum ContactUsActionType {\n sendEmail = '[Contact Us] Send email',\n sendEmailSuccess = '[Contact Us] Send email Success',\n sendEmailFailure = '[Contact Us] Send email Failure',\n\n resetContactUsState = '[Contact Us] Reset contact us state',\n}\n\nexport const sendEmail = createAction(\n ContactUsActionType.sendEmail,\n props<{ contactUsRequest: ContactUsRequest }>(),\n);\nexport const sendEmailSuccess = createAction(ContactUsActionType.sendEmailSuccess);\nexport const sendEmailFailure = createAction(ContactUsActionType.sendEmailFailure);\n\nexport const resetContactUsState = createAction(ContactUsActionType.resetContactUsState);\n","import { createAction, props } from '@ngrx/store';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { FooterLink } from './footer-state-models';\n\nexport enum FooterActionTypes {\n fetchPrimaryFooterLinks = '[Base Footer component] Fetch primary footer links',\n fetchSecondaryFooterLinks = '[Base Footer component] Fetch secondary footer links',\n fetchPrimaryFooterLinksSuccess = '[Footer] Fetch primary footer links success',\n fetchSecondaryFooterLinksSuccess = '[Footer] Fetch secondary footer links success',\n fetchFooterLinksError = '[Footer] Fetch Footer links Error',\n}\n\nexport const fetchPrimaryFooterLinks = createAction(FooterActionTypes.fetchPrimaryFooterLinks);\n\nexport const fetchSecondaryFooterLinks = createAction(FooterActionTypes.fetchSecondaryFooterLinks);\n\nexport const fetchPrimaryFooterLinksSuccess = createAction(\n FooterActionTypes.fetchPrimaryFooterLinksSuccess,\n props<{ links: FooterLink[] }>(),\n);\n\nexport const fetchSecondaryFooterLinksSuccess = createAction(\n FooterActionTypes.fetchSecondaryFooterLinksSuccess,\n props<{ links: FooterLink[] }>(),\n);\n\nexport const fetchFooterLinksError = createAction(\n FooterActionTypes.fetchFooterLinksError,\n props<{ error: HttpErrorResponse }>(),\n);\n","import { WebsiteMode } from '@core/enums/website-mode.enum';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { selectWebsiteMode } from './../website-mode/index';\nimport { FooterState } from './footer.reducer';\n\nexport const footerStateFeatureKey = 'footerState';\n\nexport const selectFooterFeature = createFeatureSelector(footerStateFeatureKey);\n\nexport const selectPrimaryFooterLinks = createSelector(\n selectFooterFeature,\n selectWebsiteMode,\n /* eslint-disable indent */\n (state: FooterState, websiteMode: WebsiteMode) =>\n state && state.primaryFooterLinks\n ? state.primaryFooterLinks.filter(\n (s) => (Number(s.websiteMode) | websiteMode) === Number(s.websiteMode),\n )\n : null,\n /* eslint-enable indent */\n);\n\nexport const selectSecondaryFooterLinks = createSelector(\n selectFooterFeature,\n selectWebsiteMode,\n /* eslint-disable indent */\n (state: FooterState, websiteMode: WebsiteMode) =>\n state && state.secondaryFooterLinks\n ? state.secondaryFooterLinks.filter(\n (s) => (Number(s.websiteMode) | websiteMode) === Number(s.websiteMode),\n )\n : null,\n /* eslint-enable indent */\n);\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { PhErrorResponse } from '@core/dto/ph-error';\n\n/*\n TODO: ERROR HANDLING: check if there is place where PhErrorResponse is sent as error response and not\n HttpErrorResponse. If PhErrorResponse is not sent should change in store actions for HttpErrorResponse.\n Could be introduced a PhHttpErrorResponse the extends HttpErrorResponse and it's error is PhErrorResponse\n*/\n\nexport function getPhError(error: any): PhErrorResponse | any {\n if (error instanceof HttpErrorResponse) {\n return error.error as PhErrorResponse;\n }\n\n if (error.hasOwnProperty('ErrorType') && error.hasOwnProperty('ErrorMessage')) {\n return error as PhErrorResponse;\n }\n\n return undefined;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport {\n CreatePaymentErrorTypeTranslations,\n CreatePaymentMissingAddressErrorMessage,\n} from '@core/constants/create-payment-error-type-translations';\nimport { phErrorMessages } from '@core/constants/ph-error-messages';\nimport { PhErrorResponse } from '@core/dto/ph-error';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { getPhError } from './error-utils';\n\nexport function getErrorMessage(error: HttpErrorResponse | PhErrorResponse): string {\n const phError = getPhError(error);\n\n if (phError && phError?.ErrorType && phError.ErrorType in phErrorMessages) {\n return phErrorMessages[phError.ErrorType];\n }\n\n return $localize`Unknown error`;\n}\n\nexport function getCreatePaymentMethodFailureMessage(response: PhErrorResponse) {\n let description = null;\n\n if (response.ErrorType === PhExceptionErrorType.PaymentMethodCreationFailedException) {\n description = CreatePaymentErrorTypeTranslations.get(\n CreateCardPaymentErrorType[getErrorTypeFromPaymentMethodCreationFailedException(response)],\n );\n } else if (response.ErrorType === PhExceptionErrorType.CustomerDefaultAddressNotFoundException) {\n description = CreatePaymentMissingAddressErrorMessage;\n }\n\n return description;\n}\n\nexport function getErrorTypeFromPaymentMethodCreationFailedException(response: PhErrorResponse) {\n if (response.ErrorType === PhExceptionErrorType.PaymentMethodCreationFailedException) {\n for (const errorType of Object.keys(CreateCardPaymentErrorType)) {\n if (response.ErrorMessage.includes(errorType)) {\n return errorType;\n }\n }\n }\n\n return null;\n}\n","/* eslint-disable @typescript-eslint/naming-convention, max-len */\nexport const phErrorTitles = {\n ProductNotFoundException: $localize`Product fetching error`,\n ProductNotInCollectionException: $localize`Product fetching error`,\n StateNotFoundException: $localize`State not found`,\n PrimaryImageNotFoundException: $localize`Product fetching error`,\n PriceNotFoundException: $localize`Product fetching error`,\n OrderLineNotFoundException: $localize`OrderLine not found.`,\n MismatchCustomerException: $localize`Mismatching customers. Customer of the address is not the authorized user.`,\n DefaultProductRelationTypeNotFoundException: $localize`Product fetching error`,\n CustomerNotFoundException: $localize`Customer not found`,\n CountryNotFoundException: $localize`Country not found`,\n CategoryNotFoundException: $localize`Product fetching error`,\n AddressNotFoundException: $localize`Address not found`,\n AddressNameNotUniqueException: $localize`Name is not unique`,\n WishListOrderStatusNotFoundException: $localize`Wishlist error`,\n OrderSubmitTransactionFailedException: $localize`Payment failure. Transaction failed.`,\n OrderSubmitCvvDoesNotMatchException: $localize`Payment failure. CVV does not match.`,\n OrderSubmitZipDoesNotMatchException: $localize`Payment failure. Zip does not match.`,\n PaymentTransactionFailedException: $localize`Payment failure. Transaction failed.`,\n PaymentTransactionFailedNoneException: $localize`Payment failure. Transaction failed.`,\n PaymentTransactionFailedSoftException: $localize`Payment failure. Transaction failed.`,\n PaymentTransactionFailedHardException: $localize`Payment failure. Transaction failed.`,\n PaymentTransactionFailedUnrecognizedException: $localize`Payment failure. Transaction failed.`,\n PaymentMethodCreationFailedException: $localize`Payment failure. Transaction failed.`,\n PipelineException: $localize`Unknown error`,\n};\n","import { phErrorTitles } from '@core/constants/ph-error-titles';\nimport { getPhError } from './error-utils';\n\nexport function getErrorTitle(error): string {\n const phError = getPhError(error);\n\n if (phError && phError?.ErrorType) {\n return phErrorTitles[phError.ErrorType];\n }\n\n return $localize`Error`;\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport {\n AddressesResponse,\n AddressValidationResponse,\n CreateAddressRequest,\n UpdateAddressRequest,\n} from '@core/dto/address.dto';\nimport { UserRegistrationRequest, UserRegistrationResponse } from '@core/dto/user-registration.dto';\nimport { UpdateUserRequest, UserResponse } from '@core/dto/user.dto';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService {\n baseUrl: string = environment.ecommerceBackendUri;\n options: object;\n\n constructor(\n private http: HttpClient,\n @Inject(LOCALE_ID) localeId: Locale,\n ) {\n this.options = {\n params: new HttpParams({\n fromObject: { culture: getCulture(localeId) },\n }),\n };\n }\n\n registerUser(request: UserRegistrationRequest): Observable {\n return this.http.post(\n this.baseUrl + 'api/user',\n request,\n this.options,\n );\n }\n\n fetchCurrentUser(): Observable {\n return this.http.get(`${this.baseUrl}api/user`);\n }\n\n updateUser(request: UpdateUserRequest): Observable {\n return this.http.put(`${this.baseUrl}api/user`, request, this.options);\n }\n\n fetchAddresses(): Observable {\n return this.http.get(`${this.baseUrl}api/user/address`);\n }\n\n createAddress(request: CreateAddressRequest): Observable {\n return this.http.post(`${this.baseUrl}api/user/address`, request);\n }\n\n updateAddress(request: UpdateAddressRequest): Observable {\n return this.http.put(`${this.baseUrl}api/user/address`, request);\n }\n\n deleteAddress(id: number): Observable {\n return this.http.delete(`${this.baseUrl}api/user/address/${id}`);\n }\n\n updateAssignedConsultant(consultantProwessId: number): Observable {\n return this.http.put(\n `${this.baseUrl}api/user/consultant`,\n {},\n {\n params: new HttpParams({\n fromObject: { consultantProwessId: consultantProwessId.toString() },\n }),\n },\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { CountryName } from '@core/constants/country-name';\nimport { CountryStatesResponse } from '@core/dto/country-state.dto';\nimport { environment } from '@env';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CountryStateService {\n baseUrl: string = environment.ecommerceBackendUri;\n\n constructor(private http: HttpClient) {}\n\n fetchStatesByCountry(): Observable {\n return this.http.get(\n `${this.baseUrl}api/user/address/states/${CountryName[environment.country]}`,\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { CountryStateService } from '@core/services/country-state.service';\nimport { UserService } from '@core/services/user.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { getErrorMessage } from '@shared/utils/get-error-message';\nimport { getErrorTitle } from '@shared/utils/get-error-title';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, mergeMap, tap } from 'rxjs/operators';\nimport { AppState } from '..';\nimport { logOutResetConcluded } from '../auth/auth.actions';\nimport { AddressType } from './address-state-models';\nimport * as addressActions from './address.actions';\n\n@Injectable()\nexport class AddressEffects {\n fetchAddresses$ = createEffect(() =>\n this.actions$.pipe(\n ofType(addressActions.fetchAddresses),\n mergeMap(() =>\n this.userService.fetchAddresses().pipe(\n map((res) => {\n const addresses = res.addresses.map((address) => {\n const addressLine3 = address.addressLine3 ?? '';\n return {\n type: address.default ? AddressType.default : AddressType.other,\n address: `${address.addressLine1} ${address.addressLine2} ${addressLine3}`,\n ...address,\n };\n });\n return addressActions.fetchAddressesSuccess({ addresses });\n }),\n catchError((error) => of(addressActions.fetchAddressesFailure(error))),\n ),\n ),\n ),\n );\n\n createAddress$ = createEffect(() =>\n this.actions$.pipe(\n ofType(addressActions.createAddress),\n mergeMap(({ address }) =>\n this.userService.createAddress(address).pipe(\n map((res) => {\n if (!res.saveSuccessful) {\n return addressActions.addressValidation({ addressValidation: res });\n } else {\n return addressActions.createAddressSuccess({ addressValidation: res });\n }\n }),\n catchError((error) => of(addressActions.createAddressFailure(error))),\n ),\n ),\n ),\n );\n\n createAddressSuccess = createEffect(\n () =>\n this.actions$.pipe(\n ofType(addressActions.createAddressSuccess),\n tap(() => this.router.navigate([UserRoute.MyAccount, UserRoute.Addresses])),\n ),\n { dispatch: false },\n );\n\n createAddressFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(addressActions.createAddressFailure),\n filter(({ error }) => !!error),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n updateAddress$ = createEffect(() =>\n this.actions$.pipe(\n ofType(addressActions.updateAddress),\n mergeMap(({ address }) =>\n this.userService.updateAddress(address).pipe(\n map((res) => {\n if (!res.saveSuccessful) {\n return addressActions.addressValidation({ addressValidation: res });\n } else {\n return addressActions.updateAddressSuccess({ addressValidation: res });\n }\n }),\n catchError((error) => of(addressActions.updateAddressFailure(error))),\n ),\n ),\n ),\n );\n\n updateAddressSuccess = createEffect(\n () =>\n this.actions$.pipe(\n ofType(addressActions.updateAddressSuccess),\n tap(() => this.router.navigate([UserRoute.MyAccount, UserRoute.Addresses])),\n ),\n { dispatch: false },\n );\n\n updateAddressFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(addressActions.updateAddressFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n deleteAddress$ = createEffect(() =>\n this.actions$.pipe(\n ofType(addressActions.deleteAddress),\n mergeMap(({ id }) =>\n this.userService.deleteAddress(id).pipe(\n map(() => addressActions.deleteAddressSuccess()),\n catchError((error) => of(addressActions.deleteAddressFailure(error))),\n ),\n ),\n ),\n );\n\n deleteAddressSuccess = createEffect(\n () =>\n this.actions$.pipe(\n ofType(addressActions.deleteAddressSuccess),\n tap(() => this.router.navigate([UserRoute.MyAccount, UserRoute.Addresses])),\n ),\n { dispatch: false },\n );\n\n fetchCountryStates$ = createEffect(() =>\n this.actions$.pipe(\n ofType(addressActions.fetchCountryStates),\n mergeMap(() =>\n this.countryStateService.fetchStatesByCountry().pipe(\n map((res) => addressActions.fetchCountryStatesSuccess({ countryStates: res.states })),\n catchError((error) => of(addressActions.fetchCountryStatesFailure(error))),\n ),\n ),\n ),\n );\n\n resetAddressState$ = createEffect(() =>\n this.actions$.pipe(\n ofType(addressActions.resetAddressState),\n map(() => logOutResetConcluded({ state: 'addressState' })),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private userService: UserService,\n private countryStateService: CountryStateService,\n private router: Router,\n private toastr: ToastrService,\n private store: Store,\n ) {}\n}\n","/* eslint-disable no-unused-vars */\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n CreatePaymentMethodRequest,\n CreatePaymentMethodResponse,\n CreatePayPalOrderResponse,\n PaymentMethodsResponse,\n UpdatePayPalOrderRequest,\n UpdatePayPalOrderResponse,\n} from '@core/dto/payment.dto';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { environment } from '@env';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentService {\n baseUrl: string = environment.ecommerceBackendUri;\n options = { withCredentials: true };\n\n fetchPaymentMethods(): Observable {\n return this.http.get(`${this.baseUrl}api/user/payment/methods`);\n }\n\n createPaymentMethod(\n request: CreatePaymentMethodRequest,\n ): Observable {\n return this.http.post(\n `${this.baseUrl}api/order/payment/paymentmethod`,\n request,\n this.options,\n );\n }\n\n setAsDefault(token: string, provider: PaymentProviderType): Observable {\n return this.http.put(\n `${this.baseUrl}api/user/payment/methods/${token}/${provider}`,\n {},\n );\n }\n\n deletePaymentMethod(token: string, provider: PaymentProviderType): Observable {\n return this.http.delete(\n `${this.baseUrl}api/user/payment/methods/${token}/${provider}`,\n );\n }\n\n createCheckoutPayPalOrder(): Observable {\n return this.http.post(\n `${this.baseUrl}api/order/payment/createpaypalorder`,\n {},\n this.options,\n );\n }\n\n updateCheckoutPayPalOrder(\n request: UpdatePayPalOrderRequest,\n ): Observable {\n return this.http.post(\n `${this.baseUrl}api/order/payment/updatepaypalorder`,\n request,\n this.options,\n );\n }\n\n createPartyOrderPayPalOrder(\n masterOrderId: number,\n amount: number,\n ): Observable {\n return this.http.post(\n `${this.baseUrl}api/partyorder/createpaypalorder`,\n {\n masterOrderId,\n amount,\n },\n this.options,\n );\n }\n\n constructor(private http: HttpClient) {}\n}\n","import { Injectable } from '@angular/core';\nimport { PhErrorResponse } from '@core/dto/ph-error';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { LoggerService } from '@core/services/logger.service';\nimport { OrderService } from '@core/services/order.service';\nimport { PaymentService } from '@core/services/payment.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport {\n getCreatePaymentMethodFailureMessage,\n getErrorMessage,\n getErrorTypeFromPaymentMethodCreationFailedException,\n} from '@shared/utils/get-error-message';\nimport { getErrorTitle } from '@shared/utils/get-error-title';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { CreatedCardPaymentMethod, PaymentMethodType } from './payment-state-models';\nimport * as paymentActions from './payment.actions';\n\n@Injectable()\nexport class PaymentEffects {\n fetchClientToken$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.fetchClientToken),\n mergeMap(({ payload }) =>\n this.orderService.fetchClientToken(payload).pipe(\n map((res) => paymentActions.fetchClientTokenSuccess({ payload: res })),\n catchError((error) => of(paymentActions.fetchClientTokenFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchClientTokenFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(paymentActions.fetchClientTokenFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchPartyOrderClientToken$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.fetchPartyOrderClientToken),\n mergeMap(({ payload }) =>\n this.orderService.fetchPartyOrderClientToken(payload).pipe(\n map((res) => paymentActions.fetchPartyOrderClientTokenSuccess({ payload: res })),\n catchError((error) => of(paymentActions.fetchPartyOrderClientTokenFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchPartyOrderClientTokenFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(paymentActions.fetchPartyOrderClientTokenFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchPaymentMethods$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.fetchPaymentMethods),\n switchMap(() =>\n this.paymentService.fetchPaymentMethods().pipe(\n map((res) =>\n paymentActions.fetchPaymentMethodsSuccess({\n paymentMethods: res.paymentMethods.map((item) => ({\n id: item.token,\n cardName: item.cardName,\n cardNumber: item.cardNumber,\n cardType: item.type,\n expiryDate: item.expiryDate,\n isExpired: item.isExpired,\n type: item.isDefault ? PaymentMethodType.default : PaymentMethodType.other,\n provider: item.provider,\n })),\n }),\n ),\n catchError((error) => of(paymentActions.fetchPaymentMethodsFailure(error))),\n ),\n ),\n ),\n );\n\n fetchPaymentMethodsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(paymentActions.fetchPaymentMethodsFailure),\n tap(() => this.toastr.error($localize`Fetching payment methods failed.`, $localize`Error`)),\n ),\n { dispatch: false },\n );\n\n storePaymentInfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.storePaymentInfo),\n map(({ paymentInfo }) => paymentActions.storePaymentInfoSuccess({ payload: paymentInfo })),\n ),\n );\n\n createPaymentMethod$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.createPaymentMethod),\n mergeMap(({ payload }) =>\n this.paymentService.createPaymentMethod(payload).pipe(\n map((res) => paymentActions.createPaymentMethodSuccess({ payload: res })),\n catchError((error) => of(paymentActions.createPaymentMethodFailure({ error }))),\n ),\n ),\n ),\n );\n\n createPaymentMethodFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(paymentActions.createPaymentMethodFailure),\n tap((response) => {\n this.loggerService.error(\n 'Create payment methods failed:',\n response.error.error?.ErrorMessage,\n );\n this.toastr.error(\n $localize`Create payment methods failed! ${getCreatePaymentMethodFailureMessage(\n response.error.error,\n )}`,\n $localize`Error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n setAsDefault$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.setAsDefault),\n mergeMap(({ token, provider }) =>\n this.paymentService.setAsDefault(token, provider).pipe(\n map(() => paymentActions.setAsDefaultSuccess()),\n catchError(() => of(paymentActions.setAsDefaultFailure())),\n ),\n ),\n ),\n );\n\n setAsDefaultFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.setAsDefaultFailure),\n tap(() =>\n this.toastr.error($localize`Setting default payment method failed.`, $localize`Error`),\n ),\n map(() => paymentActions.fetchPaymentMethods()),\n ),\n );\n\n deletePaymentMethod$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.deletePaymentMethod),\n mergeMap(({ token, provider }) =>\n this.paymentService.deletePaymentMethod(token, provider).pipe(\n map(() => paymentActions.deletePaymentMethodSuccess()),\n catchError(() => of(paymentActions.deletePaymentMethodFailure())),\n ),\n ),\n ),\n );\n\n deletePaymentMethodSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.deletePaymentMethodSuccess),\n map(() => paymentActions.fetchPaymentMethods()),\n ),\n );\n\n deletePaymentMethodFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.deletePaymentMethodFailure),\n tap(() => this.toastr.error($localize`Deleting payment method failed.`, $localize`Error`)),\n map(() => paymentActions.fetchPaymentMethods()),\n ),\n );\n\n createCheckoutPayPalOrder$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.createCheckoutPayPalOrder),\n mergeMap(() =>\n this.paymentService.createCheckoutPayPalOrder().pipe(\n map((res) => paymentActions.createCheckoutPayPalOrderSuccess({ payload: res })),\n catchError((error) => of(paymentActions.createCheckoutPayPalOrderFailure(error))),\n ),\n ),\n ),\n );\n\n createCheckoutPayPalOrderFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.createCheckoutPayPalOrderFailure),\n tap(() => this.toastr.error($localize`Create order failed.`, $localize`Error`)),\n ),\n );\n\n createPartyOrderPayPalOrder$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.createPartyOrderPayPalOrder),\n mergeMap(({ payload }) =>\n this.paymentService.createPartyOrderPayPalOrder(payload.masterOrderId, payload.amount).pipe(\n map((res) => paymentActions.createPartyOrderPayPalOrderSuccess({ payload: res })),\n catchError((error) => of(paymentActions.createPartyOrderPayPalOrderFailure(error))),\n ),\n ),\n ),\n );\n\n createPartyOrderPayPalOrderFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.createPartyOrderPayPalOrderFailure),\n tap(() => this.toastr.error($localize`Create order failed.`, $localize`Error`)),\n ),\n );\n\n updatePayPalOrder$ = createEffect(() =>\n this.actions$.pipe(\n ofType(paymentActions.updateCheckoutPayPalOrder),\n mergeMap(({ orderId }) =>\n this.paymentService.updateCheckoutPayPalOrder({ oldPayPalOrderId: orderId }).pipe(\n map((res) => paymentActions.updateCheckoutPayPalOrderSuccess({ payload: res })),\n catchError((error) => of(paymentActions.updateCheckoutPayPalOrderFailure(error))),\n ),\n ),\n ),\n );\n\n updatePayPalOrderFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(paymentActions.updateCheckoutPayPalOrderFailure),\n tap(() => this.toastr.error($localize`Update order failed.`, $localize`Error`)),\n ),\n { dispatch: false },\n );\n\n constructor(\n private actions$: Actions,\n private orderService: OrderService,\n private paymentService: PaymentService,\n private toastr: ToastrService,\n private loggerService: LoggerService,\n ) {}\n}\n\nexport function mapCreateCardPaymentMethodError(error: PhErrorResponse): CreatedCardPaymentMethod {\n const errorType =\n error.ErrorType === PhExceptionErrorType.PaymentMethodCreationFailedException\n ? CreateCardPaymentErrorType[getErrorTypeFromPaymentMethodCreationFailedException(error)]\n : (error.ErrorType as CreateCardPaymentErrorType);\n\n return {\n errorType: errorType,\n message: error.ErrorMessage,\n id: null,\n responseCode: null,\n token: null,\n errors: null,\n card: null,\n account: null,\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { map } from 'rxjs/operators';\nimport { resetAddressState } from '../address/address.actions';\nimport { mergeCarts, newCart } from '../cart/cart.actions';\nimport { resetCheckoutState } from '../checkout/checkout.actions';\nimport { fetchUserWithConsultant, resetUserStore } from '../user/user.actions';\nimport { mergeWishlist, newWishlist } from '../wishlist/wishlist.actions';\nimport { logInSuccess, logOut } from './auth.actions';\n\n@Injectable()\nexport class AuthEffects {\n fetchUserWithConsultant$ = createEffect(() =>\n this.actions$.pipe(\n ofType(logInSuccess),\n map(() => fetchUserWithConsultant()),\n ),\n );\n\n mergeCarts$ = createEffect(() =>\n this.actions$.pipe(\n ofType(logInSuccess),\n map(() => mergeCarts()),\n ),\n );\n\n mergeWishlist$ = createEffect(() =>\n this.actions$.pipe(\n ofType(logInSuccess),\n map(() => mergeWishlist()),\n ),\n );\n\n resetUserStore$ = createEffect(() =>\n this.actions$.pipe(\n ofType(logOut),\n map(() => resetUserStore()),\n ),\n );\n\n newCart$ = createEffect(() =>\n this.actions$.pipe(\n ofType(logOut),\n map(() => newCart()),\n ),\n );\n\n newWishlist$ = createEffect(() =>\n this.actions$.pipe(\n ofType(logOut),\n map(() => newWishlist()),\n ),\n );\n\n resetAddressState$ = createEffect(() =>\n this.actions$.pipe(\n ofType(logOut),\n map(() => resetAddressState()),\n ),\n );\n\n resetCheckoutState$ = createEffect(() =>\n this.actions$.pipe(\n ofType(logInSuccess, logOut),\n map(() => resetCheckoutState()),\n ),\n );\n\n constructor(private actions$: Actions) {}\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { BlogDetailsResponse, BlogsResponse } from '@core/dto/blog.dto';\nimport { BlogCategoriesResponse } from '@core/dto/tag.dto';\nimport { Locale } from '@core/enums/locale';\nimport { LoadBlogsProps } from '@core/models/load-blogs.model';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BlogService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.culture = getCulture(localeId);\n }\n\n fetchBlogs(payload: LoadBlogsProps) {\n return this.http.get(this.baseUrl + 'api/blog', {\n params: new HttpParams({\n fromObject: {\n pageNumber: payload.pageNumber.toString(),\n pageSize: payload.pageSize.toString(),\n categoryUrl: payload.categoryUrl,\n ...(payload.sortType ? { sortType: String(payload.sortType) } : {}),\n culture: this.culture,\n },\n }),\n });\n }\n\n fetchBlogCategories(): Observable {\n return this.http.get(this.baseUrl + 'api/blog/categories', {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchBlogDetails(id: string): Observable {\n return this.http.get(`${this.baseUrl}api/blog/${id}`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BlogService } from '@core/services/blog.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, map, mergeMap, tap } from 'rxjs/operators';\nimport * as blogActions from './blog.actions';\n\n@Injectable()\nexport class BlogEffects {\n fetchBlogs$ = createEffect(() =>\n this.actions$.pipe(\n ofType(blogActions.fetchBlogs),\n exhaustMap((payload) =>\n this.blogService.fetchBlogs(payload).pipe(\n map((res) =>\n blogActions.fetchBlogsSuccess({\n items: res.blogs,\n pageSize: payload.pageSize,\n isFirstPage: payload.isFirstPage,\n }),\n ),\n catchError((error) => of(blogActions.fetchBlogsFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchBlogsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(blogActions.fetchBlogsFailure),\n tap(() => {\n this.toastr.error($localize`Failed to fetch Blogs`, $localize`Blog fetching error`);\n }),\n ),\n { dispatch: false },\n );\n\n fetchBlogCategories$ = createEffect(() =>\n this.actions$.pipe(\n ofType(blogActions.fetchBlogCategories),\n mergeMap(() =>\n this.blogService.fetchBlogCategories().pipe(\n map(\n ({ blogCategories }) => blogActions.fetchBlogCategoriesSuccess({ blogCategories }),\n catchError((error) => of(blogActions.fetchBlogCategoriesFailure({ error }))),\n ),\n ),\n ),\n ),\n );\n\n fetchBlogCategoriesFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(blogActions.fetchBlogCategoriesFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch Blog categories`,\n $localize`Blog category fetching error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n fetchBlogDetails$ = createEffect(() =>\n this.actions$.pipe(\n ofType(blogActions.fetchBlogDetails),\n mergeMap(({ url }) =>\n this.blogService.fetchBlogDetails(url).pipe(\n map((item) => blogActions.fetchBlogDetailsSuccess({ item })),\n catchError(() => of(blogActions.fetchBlogDetailsFailure())),\n ),\n ),\n ),\n );\n\n fetchBlogDetailsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(blogActions.fetchBlogDetailsFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch blog details`,\n $localize`Blog details fetching error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n constructor(\n private actions$: Actions,\n private blogService: BlogService,\n private toastr: ToastrService,\n ) {}\n}\n","import { isArray } from './array-utils';\nimport { isObject } from './object-utils';\n\nexport const keysToCamelCase = (o) => {\n if (isObject(o)) {\n const n = {};\n\n Object.keys(o).forEach((k) => {\n n[toCamel(k)] = keysToCamelCase(o[k]);\n });\n\n return n;\n } else if (isArray(o)) {\n return o.map((i) => keysToCamelCase(i));\n }\n\n return o;\n};\n\nconst toCamel = (str) =>\n str\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\n return index === 0 ? word.toLowerCase() : word.toUpperCase();\n })\n .replace(/\\s+/g, '');\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { CartResponse } from '@core/dto/cart.dto';\nimport { ProductRecommendationsResponse } from '@core/dto/product-details.dto';\nimport { Locale } from '@core/enums/locale';\nimport { AddToCart } from '@core/store/cart/cart-state-models';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { keysToCamelCase } from '@shared/utils/object-transform-utils';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CartService {\n baseUrl: string = environment.ecommerceBackendUri;\n options: object;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.options = {\n withCredentials: true,\n params: new HttpParams({\n fromObject: { culture: getCulture(localeId) },\n }),\n };\n }\n\n fetchCart(): Observable {\n return this.http.get(`${this.baseUrl}api/cart`, this.options);\n }\n\n updateOrderLine(orderLineId: number, quantity: number): Observable {\n return this.http.put(\n `${this.baseUrl}api/cart`,\n { orderLineId, quantity },\n this.options,\n );\n }\n\n mergeCarts(): Observable {\n return this.http.post(`${this.baseUrl}api/cart/merge`, {}, this.options);\n }\n\n newCart(): Observable {\n return this.http.post(`${this.baseUrl}api/cart`, {}, this.options);\n }\n\n addToCart(sku: string, quantity: number): Observable {\n return this.http\n .post(`${this.baseUrl}api/cart/add`, { sku, quantity }, this.options)\n .pipe(map((res) => keysToCamelCase(res)));\n }\n\n deleteOrderLine(orderLineId: number): Observable {\n return this.http.delete(`${this.baseUrl}api/cart/${orderLineId}`, this.options);\n }\n\n fetchProductsRecommendations(skus: string[]): Observable {\n return this.http.get(\n `${this.baseUrl}api/product/recommendation/multiple`,\n {\n params: new HttpParams({\n fromObject: { 'skus[]': skus, culture: getCulture(this.localeId) },\n }),\n },\n );\n }\n\n addSurpriseBuy(): Observable {\n return this.http.put(`${this.baseUrl}api/cart/addSurprise`, {}, this.options);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppcuesEvent } from '@core/constants/appcues-event';\nimport { LocalStorageKey } from '@core/enums/local-storage-key.enum';\nimport { AppcuesService } from '@core/services/appcues.service';\nimport { CartService } from '@core/services/cart.service';\nimport { GtmService } from '@core/services/gtm.service';\nimport { LocalStorageService } from '@core/services/local-storage.service';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { getErrorMessage } from '@shared/utils/get-error-message';\nimport { getErrorTitle } from '@shared/utils/get-error-title';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { selectOrderLineById } from '.';\nimport { AppState } from '..';\nimport { logOutResetConcluded } from '../auth/auth.actions';\nimport * as cartActions from './cart.actions';\n\n@Injectable()\nexport class CartEffects {\n addToCart$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.addToCart),\n mergeMap(({ payload }) =>\n this.cartService.addToCart(payload.sku, payload.quantity).pipe(\n tap((cart) => this.handelCartModified(cart.isModifiedByAutoUpdate)),\n map(() => cartActions.addToCartSuccess({ payload })),\n catchError((error) => of(cartActions.addToCartFailure({ error }))),\n ),\n ),\n ),\n );\n\n addToCartsSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.addToCartSuccess),\n tap(({ payload }) => {\n this.gtmService.addToCart(payload);\n this.appcuesService.track(AppcuesEvent.AddItemToCart);\n }),\n map(() => cartActions.fetchCart()),\n ),\n );\n\n addToCartFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(cartActions.addToCartFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchCart$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.fetchCart),\n exhaustMap(() =>\n this.cartService.fetchCart().pipe(\n tap((cart) => this.handelCartModified(cart.isModifiedByAutoUpdate)),\n map((cart) => cartActions.fetchCartSuccess({ cart })),\n catchError((error) => of(cartActions.fetchCartFailure({ error }))),\n ),\n ),\n ),\n );\n\n updateOrderLine$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.updateOrderLineQty),\n switchMap(({ orderLineId, quantity }) =>\n this.cartService.updateOrderLine(orderLineId, quantity).pipe(\n tap((cart) => this.handelCartModified(cart.isModifiedByAutoUpdate)),\n map((cart) => cartActions.updateOrderLineQtySuccess({ cart })),\n catchError((error) => of(cartActions.updateOrderLineQtyFailure({ error }))),\n ),\n ),\n ),\n );\n\n mergeCarts$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.mergeCarts),\n mergeMap(() =>\n this.cartService.mergeCarts().pipe(\n map(() => cartActions.mergeCartsSuccess()),\n catchError((error) => of(cartActions.mergeCartsFailure({ error }))),\n ),\n ),\n ),\n );\n\n mergeCartsSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.mergeCartsSuccess),\n map(() => cartActions.fetchCart()),\n ),\n );\n\n newCart$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.newCart),\n exhaustMap(() =>\n this.cartService.newCart().pipe(\n map(() => cartActions.newCartSuccess()),\n catchError((error) => of(cartActions.newCartFailure({ error }))),\n ),\n ),\n ),\n );\n\n newCartSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.newCartSuccess),\n map(() => cartActions.resetCartState()),\n ),\n );\n\n newCartFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.newCartFailure),\n map(() => cartActions.resetCartState()),\n ),\n );\n\n deleteFromCart$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.deleteFromCart),\n concatLatestFrom(({ orderLineId }) => this.store$.select(selectOrderLineById(orderLineId))),\n tap(([, orderLine]) => this.gtmService.removeFromCart(orderLine)),\n mergeMap(([{ orderLineId }]) =>\n this.cartService.deleteOrderLine(orderLineId).pipe(\n tap((cart) => this.handelCartModified(cart.isModifiedByAutoUpdate)),\n map((cart) => cartActions.deleteFromCartSuccess({ cart })),\n catchError((error) => of(cartActions.deleteFromCartFailure({ error }))),\n ),\n ),\n ),\n );\n\n deleteFromCartFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(cartActions.deleteFromCartFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchProductsRecommendations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.fetchProductsRecommendations),\n mergeMap(({ skus }) =>\n this.cartService.fetchProductsRecommendations(skus).pipe(\n map((res) =>\n cartActions.fetchProductsRecommendationsSuccess({\n recommendations: res.recommendations,\n }),\n ),\n catchError((error) => of(cartActions.fetchProductsRecommendationsFailure(error))),\n ),\n ),\n ),\n );\n\n fetchProductsRecommendationFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(cartActions.fetchProductsRecommendationsFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n addSurpriseBuy$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.addSurpriseBuy),\n switchMap(() =>\n this.cartService.addSurpriseBuy().pipe(\n tap((cart) => this.handelCartModified(cart.isModifiedByAutoUpdate)),\n map((cart) => cartActions.addSurpriseBuySuccess({ cart })),\n catchError((error) => of(cartActions.addSurpriseBuyFailure({ error }))),\n ),\n ),\n ),\n );\n\n resetCartState$ = createEffect(() =>\n this.actions$.pipe(\n ofType(cartActions.resetCartState),\n map(() => logOutResetConcluded({ state: 'cartState' })),\n ),\n );\n\n private handelCartModified(isCartModified): void {\n if (isCartModified) {\n this.localStorageService.setItem(LocalStorageKey.isCartUpdated, 'true');\n }\n }\n\n constructor(\n private store$: Store,\n private actions$: Actions,\n private cartService: CartService,\n private toastr: ToastrService,\n private gtmService: GtmService,\n private appcuesService: AppcuesService,\n private localStorageService: LocalStorageService,\n ) {}\n}\n","export const AppcuesEvent = {\n AddItemToCart: 'add item to cart',\n SubmitOrder: 'submit order',\n AddItemToWishlist: 'add item to wishlist',\n};\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { CheckoutPersonalInfoRequest, CheckoutPersonalInfoResponse } from '@core/dto/checkout.dto';\nimport { environment } from '@env';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CheckoutService {\n baseUrl: string = environment.ecommerceBackendUri;\n options = { withCredentials: true };\n\n constructor(private http: HttpClient) {}\n\n addressValidation(\n request: CheckoutPersonalInfoRequest,\n ): Observable {\n return this.http.post(\n `${this.baseUrl}api/checkout/personalInfo`,\n request,\n this.options,\n );\n }\n\n checkEmail(email: string): Observable {\n return this.http.get(`${this.baseUrl}api/user/check`, {\n params: new HttpParams({ fromObject: { email } }),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { CheckoutService } from '@core/services/checkout.service';\nimport { GtmService } from '@core/services/gtm.service';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { getErrorMessage } from '@shared/utils/get-error-message';\nimport { getErrorTitle } from '@shared/utils/get-error-title';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { AppState } from '..';\nimport { logOutResetConcluded } from '../auth/auth.actions';\nimport { selectCart } from '../cart';\nimport { selectAssignedConsultant, selectCurrentConsultant } from '../consultant';\nimport {\n fetchAssignedConsultantOnCheckout,\n fetchCurrentConsultantByVanityName,\n setIsOutdatedData,\n} from '../consultant/consultant.actions';\nimport * as checkoutActions from './checkout.actions';\n\n@Injectable()\nexport class CheckoutEffects {\n updatePersonalInfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(checkoutActions.updatePersonalInfo),\n mergeMap((address) =>\n this.checkoutService\n .addressValidation({\n skipAddressVerification: address.skipAddressVerification,\n shippingAddress: {\n firstName: address.personalInfo.shippingAddress.firstName,\n lastName: address.personalInfo.shippingAddress.lastName,\n phoneNumber: address.personalInfo.shippingAddress.phoneNumber,\n ...address.personalInfo.shippingAddress.address,\n },\n billingCustomer: address.personalInfo.billingCustomer,\n })\n .pipe(\n map((res) => {\n if (!res.saveSuccessful) {\n return checkoutActions.checkoutAddressValidation({ addressValidation: res });\n }\n return checkoutActions.updatePersonalInfoSuccess({\n personalInfo: address.personalInfo,\n });\n }),\n catchError((error) => of(checkoutActions.updatePersonalInfoFailure(error))),\n ),\n ),\n ),\n );\n\n updatePersonalInfoSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(checkoutActions.updatePersonalInfoSuccess),\n concatLatestFrom(() => [\n this.store$.select(selectCart),\n this.store$.select(selectCurrentConsultant),\n this.store$.select(selectAssignedConsultant),\n ]),\n tap(([, cart]) => this.gtmService.addShippingInfo(cart)),\n map(([, , currentConsultant, assignedConsultant]) => {\n if (\n currentConsultant?.beeNumber === assignedConsultant?.beeNumber &&\n currentConsultant &&\n assignedConsultant\n ) {\n return fetchAssignedConsultantOnCheckout();\n } else if (currentConsultant) {\n return fetchCurrentConsultantByVanityName({\n vanityName: currentConsultant.vanityName,\n filterCountry: true,\n });\n } else {\n return setIsOutdatedData({ isOutdatedData: false });\n }\n }),\n ),\n );\n\n updatePersonalInfoFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(checkoutActions.updatePersonalInfoFailure),\n tap(({ error }) => {\n if (error.ErrorType !== PhExceptionErrorType.ForbiddenZipCodeException) {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }\n }),\n ),\n { dispatch: false },\n );\n\n checkoutAddressValidation$ = createEffect(() =>\n this.actions$.pipe(\n ofType(checkoutActions.checkoutAddressValidation),\n filter(\n ({ addressValidation }) =>\n !addressValidation?.shippingAddressVerificationResult?.correctedAddress &&\n addressValidation?.shippingAddressVerificationResult?.isValid === false,\n ),\n map(() => checkoutActions.cancelPersonalInfoUpdate()),\n ),\n );\n\n checkEmail$ = createEffect(() =>\n this.actions$.pipe(\n ofType(checkoutActions.checkUserByEmail),\n switchMap(({ email }) =>\n this.checkoutService.checkEmail(email).pipe(\n map(() => checkoutActions.checkUserByEmailSuccess()),\n catchError((error) => of(checkoutActions.checkUserByEmailFailure(error))),\n ),\n ),\n ),\n );\n\n resetCheckoutStore$ = createEffect(() =>\n this.actions$.pipe(\n ofType(checkoutActions.resetCheckoutState),\n map(() => logOutResetConcluded({ state: 'checkoutState' })),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private store$: Store,\n private gtmService: GtmService,\n private toastr: ToastrService,\n private checkoutService: CheckoutService,\n ) {}\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { ConditionalContentsResponse } from '@core/dto/conditional-content.dto';\nimport { Locale } from '@core/enums/locale';\nimport { WebsiteMode } from '@core/enums/website-mode.enum';\nimport { ConditionalContent } from '@core/store/conditional-content/conditional-content-state-models';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { keysToCamelCase } from '@shared/utils/object-transform-utils';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConditionalContentService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.culture = getCulture(localeId);\n }\n\n fetchConditionalContentByUrlName(urlName: string): Observable {\n let params = this.getParams(`UrlName eq '${urlName}'`);\n return this.http\n .get(this.baseUrl + 'api/default/conditionalcontents', params)\n .pipe(map((res) => keysToCamelCase(res.value)));\n }\n\n fetchConditionalContentByPageCategory(\n pageCategory: string,\n date: string,\n ): Observable {\n return this.http\n .get(this.baseUrl + 'api/conditional-content', {\n params: new HttpParams({\n fromObject: { culture: this.culture, pageCategory, date },\n }),\n })\n .pipe(\n map((res) => keysToCamelCase(res.value)),\n map((conditionalContents) =>\n conditionalContents.map((conditionalContent) => ({\n ...conditionalContent,\n websiteMode: conditionalContent.websiteMode.reduce(\n (accumulator, a) => accumulator + WebsiteMode[a],\n 0,\n ),\n })),\n ),\n );\n }\n\n private getParams($filter: string = 'true'): object {\n return {\n params: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n sf_culture: this.culture,\n $expand: 'MetaPagePreviewImage($select=Url, ThumbnailUrl), PageCategories($select=Name)',\n $select:\n 'Title,EndDate,StartDate,Content,WebsiteMode,StyleInjection,' +\n 'CodeInjection,DisplaySequence,MetaPageTitle,MetaPageDescription,UrlName',\n $orderBy: 'DisplaySequence',\n $filter,\n },\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConditionalContentService } from '@core/services/conditional-content.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport * as conditionalContentActions from './conditional-content.actions';\n\n@Injectable()\nexport class ConditionalContentEffects {\n fetchConditionalContentByUrlName$ = createEffect(() =>\n this.actions$.pipe(\n ofType(conditionalContentActions.fetchConditionalContentByUrlName),\n mergeMap(({ urlName }) =>\n this.conditionalContentService.fetchConditionalContentByUrlName(urlName).pipe(\n map((content) => conditionalContentActions.fetchConditionalContentSuccess({ content })),\n catchError((error) =>\n of(conditionalContentActions.fetchConditionalContentError({ error })),\n ),\n ),\n ),\n ),\n );\n\n fetchConditionalContentByPageCategory$ = createEffect(() =>\n this.actions$.pipe(\n ofType(conditionalContentActions.fetchConditionalContentByPageCategory),\n mergeMap(({ pageCategory, viewAs }) =>\n this.conditionalContentService\n .fetchConditionalContentByPageCategory(pageCategory, viewAs)\n .pipe(\n map((content) => conditionalContentActions.fetchConditionalContentSuccess({ content })),\n catchError((error) =>\n of(conditionalContentActions.fetchConditionalContentError({ error })),\n ),\n ),\n ),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private conditionalContentService: ConditionalContentService,\n ) {}\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { findConsultantResultPageSize } from '@core/constants/find-consultant';\nimport {\n ConsultantFinderResponse,\n ConsultantPartiesResponse,\n ConsultantResponse,\n FindConsultantRequest,\n LocateConsultantRequest,\n SnaConsultantResponse,\n} from '@core/dto/consultant.dto';\nimport { Locale } from '@core/enums/locale';\nimport { RequestSource } from '@core/enums/request-source.enum';\nimport { environment } from '@env';\nimport { HtmlParamEncoder } from '@shared/utils/http-param-encoder';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable } from 'rxjs';\nimport { AppInitService } from './app-init.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConsultantService {\n baseUrl: string = environment.ecommerceBackendUri;\n finderBaseUrl: string = environment.startNowAppBackendUri;\n culture: Locale;\n\n constructor(\n @Inject(LOCALE_ID) private localeId: Locale,\n private http: HttpClient,\n private appInitService: AppInitService,\n ) {\n this.culture = getCulture(localeId);\n }\n\n fetchConsultantByVanityName(\n vanityName: string,\n filterCountry: boolean,\n ): Observable {\n return this.http.get(`${this.baseUrl}api/consultant`, {\n params: new HttpParams({\n encoder: new HtmlParamEncoder(),\n fromObject: {\n vanityName,\n culture: this.culture,\n ...(filterCountry ? { country: environment.country } : {}),\n },\n }),\n });\n }\n\n fetchConsultantByLoginName(\n loginName: string,\n filterCountry: boolean,\n ): Observable {\n return this.http.get(`${this.finderBaseUrl}api/Consultant/loginname`, {\n params: new HttpParams({\n encoder: new HtmlParamEncoder(),\n fromObject: {\n loginName,\n culture: this.culture,\n ...(filterCountry ? { country: environment.country } : {}),\n },\n }),\n });\n }\n\n fetchConsultantById(\n consultantProwessId: number,\n includeAllProwessStatuses: boolean = true,\n ): Observable {\n return this.http.get(\n `${this.baseUrl}api/consultant/${consultantProwessId}`,\n {\n params: new HttpParams({\n fromObject: {\n culture: this.culture,\n country: environment.country,\n includeAllProwessStatuses,\n },\n }),\n },\n );\n }\n\n findConsultant(request: FindConsultantRequest): Observable {\n return this.http.get(`${this.finderBaseUrl}api/Consultant/find`, {\n params: new HttpParams({\n fromObject: {\n city: request.city,\n firstName: request.firstName,\n lastName: request.lastName,\n stateCode: request.stateCode,\n mobilePhoneNumber: request.mobilePhoneNumber,\n pageNumber: request.pageNumber?.toString() || '1',\n pageSize: request.pageSize?.toString() || findConsultantResultPageSize.toString(),\n country: environment.country,\n requestSource: RequestSource.ec,\n },\n }),\n });\n }\n\n locateConsultant(request: LocateConsultantRequest): Observable {\n return this.http.get(\n `${this.finderBaseUrl}api/Consultant/nearby/${request.zipCode}`,\n {\n params: new HttpParams({\n fromObject: {\n preferredLanguageCode: request.cultureCode,\n pageNumber: request.pageNumber?.toString() || '1',\n pageSize: request.pageSize?.toString() || findConsultantResultPageSize.toString(),\n country: environment.country,\n requestSource: RequestSource.ec,\n },\n }),\n },\n );\n }\n\n fetchConsultantParties(consultantProwessId: number): Observable {\n return this.http.get(\n `${this.baseUrl}api/consultant/${consultantProwessId}/party`,\n );\n }\n}\n","import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { findConsultantResultPageSize } from '@core/constants/find-consultant';\nimport { CartRoutes } from '@core/constants/routes.const';\nimport { ConsultantFinderResponse, SnaConsultantResponse } from '@core/dto/consultant.dto';\nimport { LocalStorageKey } from '@core/enums/local-storage-key.enum';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { ConsultantService } from '@core/services/consultant.service';\nimport { LocalStorageService } from '@core/services/local-storage.service';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, filter, map, mergeMap, tap } from 'rxjs/operators';\nimport { selectAssignedConsultant, selectConsultantFinder, selectCurrentConsultant } from '.';\nimport { AppState } from '..';\nimport { selectIsAuthenticated } from '../auth';\nimport { findConsultantSuccess } from '../start-now-app/start-now-app.actions';\nimport { selectUser } from '../user';\nimport { Consultant } from './consultant-state-models';\nimport * as consultantActions from './consultant.actions';\n\nconst REMOVE_CID_QUERY_PARAM_TIMEOUT = 500;\n\n@Injectable()\nexport class ConsultantEffects {\n fetchCurrentConsultantByVanityName$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.fetchCurrentConsultantByVanityName),\n mergeMap(({ vanityName: newVanityName, filterCountry }) => {\n const vanityName =\n newVanityName ||\n (this.localStorageService.getItem(LocalStorageKey.consultantVanityName) as string);\n if (vanityName) {\n return this.consultantService.fetchConsultantByVanityName(vanityName, filterCountry).pipe(\n map((consultant) =>\n consultantActions.fetchCurrentConsultantSuccess({\n consultant,\n isPartyEnabled: this.appInitService.Settings.ec.isPartyEnabled,\n }),\n ),\n catchError(({ error }) =>\n of(\n consultantActions.fetchCurrentConsultantFailure({\n error,\n searchedVanityName: vanityName,\n }),\n ),\n ),\n );\n } else {\n return of(consultantActions.resetCurrentConsultant(true));\n }\n }),\n ),\n );\n\n fetchCurrentConsultantByLoginName$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.fetchCurrentConsultantByLoginName),\n mergeMap(({ loginName: newLoginName, filterCountry }) => {\n if (newLoginName) {\n return this.consultantService\n .fetchConsultantByLoginName(newLoginName, filterCountry)\n .pipe(\n map((consultant) =>\n consultantActions.fetchCurrentConsultantSuccess({\n consultant: this.mapSnaConsultantResult(consultant),\n isPartyEnabled: this.appInitService.Settings.ec.isPartyEnabled,\n }),\n ),\n catchError(({ error }) =>\n of(\n consultantActions.fetchCurrentConsultantFailure({\n error,\n searchedVanityName: newLoginName,\n }),\n ),\n ),\n );\n } else {\n return of(consultantActions.resetCurrentConsultant(true));\n }\n }),\n ),\n );\n\n fetchCurrentConsultantSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(consultantActions.fetchCurrentConsultantSuccess),\n tap(({ consultant, isPartyEnabled }) => {\n this.localStorageService.setItem(\n LocalStorageKey.consultantVanityName,\n consultant.vanityName,\n );\n\n if (isPartyEnabled) {\n this.store$.dispatch(consultantActions.fetchConsultantParties());\n }\n }),\n ),\n { dispatch: false },\n );\n\n fetchCurrentConsultantFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.fetchCurrentConsultantFailure),\n concatLatestFrom(() => this.store$.select(selectIsAuthenticated)),\n map(([payload, isAuthenticated]) => {\n const vanityNameFromLocalStorage = this.localStorageService.getItem(\n LocalStorageKey.consultantVanityName,\n ) as string;\n if (\n vanityNameFromLocalStorage.localeCompare(payload.searchedVanityName, undefined, {\n sensitivity: 'accent',\n }) !== 0 &&\n !isAuthenticated\n ) {\n return consultantActions.fetchCurrentConsultantByVanityName({\n vanityName: vanityNameFromLocalStorage,\n filterCountry: true,\n });\n }\n return consultantActions.resetCurrentConsultant();\n }),\n ),\n );\n\n resetCurrentConsultant$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(consultantActions.resetCurrentConsultant),\n tap(() => {\n setTimeout(() => {\n const urlParams = new URLSearchParams(window.location.search);\n urlParams.delete(RouterQueryParams.cid);\n this.location.replaceState(this.router.url.split('?')[0], urlParams.toString());\n }, REMOVE_CID_QUERY_PARAM_TIMEOUT);\n this.localStorageService.removeItem(LocalStorageKey.consultantVanityName);\n }),\n ),\n { dispatch: false },\n );\n\n fetchAssignedConsultant$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.fetchAssignedConsultant),\n concatLatestFrom(() => this.store$.select(selectUser)),\n mergeMap(([, user]) =>\n this.consultantService.fetchConsultantById(user.activeConsultantProwessId, false).pipe(\n map((res) => consultantActions.fetchAssignedConsultantSuccess({ consultant: res })),\n catchError(() => of(consultantActions.fetchAssignedConsultantFailure())),\n ),\n ),\n ),\n );\n\n fetchAssignedConsultantFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(consultantActions.fetchAssignedConsultantFailure),\n tap(() => {\n if (!window.location.href.includes(`/${CartRoutes.Checkout}`)) {\n this.toastr.error(\n $localize`Failed to fetch from server`,\n $localize`Assigned consultant`,\n );\n }\n }),\n ),\n { dispatch: false },\n );\n\n fetchAssignedConsultantOnCheckout$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.fetchAssignedConsultantOnCheckout),\n concatLatestFrom(() => this.store$.select(selectAssignedConsultant)),\n mergeMap(([, assignedConsultant]) =>\n this.consultantService\n .fetchConsultantByVanityName(assignedConsultant.vanityName, true)\n .pipe(\n map((res) =>\n consultantActions.fetchAssignedConsultantOnCheckoutSuccess({\n consultant: res,\n }),\n ),\n catchError(() => of(consultantActions.fetchAssignedConsultantOnCheckoutFailure())),\n ),\n ),\n ),\n );\n\n /**\n * Find consultant\n */\n findConsultant$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.findConsultant),\n concatLatestFrom(() => this.store$.select(selectConsultantFinder)),\n mergeMap(\n ([\n {\n payload: { pageNumber, ...rest },\n },\n consultantFinder,\n ]) =>\n this.consultantService\n .findConsultant({\n ...rest,\n ...(pageNumber === 1\n ? { pageNumber }\n : {\n pageNumber:\n Math.ceil(consultantFinder.results.length / findConsultantResultPageSize) + 1,\n }),\n })\n .pipe(\n map((res) =>\n consultantActions.findConsultantSuccess(this.mapConsultantFinderResults(res)),\n ),\n catchError(() => of(consultantActions.findConsultantFailure())),\n ),\n ),\n ),\n );\n\n findConsultantSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.fetchCurrentConsultantSuccess),\n map(({ consultant }) => findConsultantSuccess({ hasMore: false, items: [consultant] })),\n ),\n );\n\n locateConsultant$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.locateConsultant),\n concatLatestFrom(() => this.store$.select(selectConsultantFinder)),\n exhaustMap(\n ([\n {\n payload: { pageNumber, ...rest },\n },\n ]) =>\n this.consultantService\n .locateConsultant({\n ...rest,\n pageNumber,\n })\n .pipe(\n map((res) =>\n consultantActions.locateConsultantSuccess(this.mapConsultantFinderResults(res)),\n ),\n catchError(({ error }) => of(consultantActions.locateConsultantFailure({ error }))),\n ),\n ),\n ),\n );\n\n consultantFinderFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(consultantActions.findConsultantFailure, consultantActions.locateConsultantFailure),\n tap(() =>\n this.toastr.error(\n $localize`Failed to fetch result from server`,\n $localize`Consultant finder`,\n ),\n ),\n ),\n { dispatch: false },\n );\n\n fetchConsultantParties$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.fetchConsultantParties),\n concatLatestFrom(() => this.store$.select(selectCurrentConsultant)),\n mergeMap(([, currentConsultant]) =>\n this.consultantService.fetchConsultantParties(currentConsultant.beeNumber).pipe(\n map(({ parties }) => {\n const selectedParty =\n parties.find(\n (party) =>\n party.partyId.toString() ===\n this.localStorageService.getItem(RouterQueryParams.partyId)?.toString(),\n ) || null;\n\n return consultantActions.fetchConsultantPartiesSuccess({ parties, selectedParty });\n }),\n catchError(() => of(consultantActions.fetchConsultantPartiesFailure())),\n ),\n ),\n ),\n );\n\n fetchConsultantPartiesSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(consultantActions.fetchConsultantPartiesSuccess),\n filter((party) => party.selectedParty === null),\n map(() => consultantActions.resetPartyAndIsOrderCreditToHostParty()),\n ),\n );\n\n fetchConsultantPartiesFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(consultantActions.fetchConsultantPartiesFailure),\n tap(() =>\n this.toastr.error(\n $localize`Failed to fetch consultant parties`,\n $localize`Consultant parties`,\n ),\n ),\n ),\n { dispatch: false },\n );\n\n selectParty$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(consultantActions.selectParty),\n filter(({ party }) => !!party),\n tap(({ party }) => {\n this.localStorageService.setItem(RouterQueryParams.partyId, party.partyId.toString());\n }),\n ),\n { dispatch: false },\n );\n\n resetParty$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(consultantActions.resetParty),\n tap(() => this.localStorageService.removeItem(RouterQueryParams.partyId)),\n ),\n { dispatch: false },\n );\n\n private mapConsultantFinderResults(res: ConsultantFinderResponse): {\n hasMore: boolean;\n results: Consultant[];\n } {\n return {\n hasMore: res.hasMore,\n results: res.items.map((item) => ({\n id: item.id,\n beeNumber: item.beeNumber,\n displayName: item.displayName,\n fullName: item.fullName,\n city: item.city,\n state: item.state,\n email: item.email,\n phoneNumber: item.phoneNumber,\n vanityName: item.vanityName,\n profileImage: item.profileImage,\n story: null,\n financialState: item.financialState,\n })),\n };\n }\n\n private mapSnaConsultantResult(res: SnaConsultantResponse): Consultant {\n return {\n id: res.id,\n beeNumber: res.beeNumber,\n displayName: res.displayName,\n fullName: res.fullName,\n city: res.city,\n state: res.state,\n email: res.email,\n phoneNumber: res.phoneNumber,\n vanityName: res.vanityName,\n profileImage: res.profileImage,\n story: null,\n financialState: res.financialState,\n };\n }\n\n constructor(\n private actions$: Actions,\n private localStorageService: LocalStorageService,\n private consultantService: ConsultantService,\n private toastr: ToastrService,\n private store$: Store,\n private appInitService: AppInitService,\n private router: Router,\n private location: Location,\n ) {}\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { ContactUsRequest, ContactUsResponse } from '@core/dto/contact-us.dto';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ContactUsService {\n baseUrl: string = environment.ecommerceBackendUri;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {}\n\n sendEmail(contactUsRequest: ContactUsRequest): Observable {\n return this.http.post(`${this.baseUrl}api/contactus`, contactUsRequest, {\n params: new HttpParams({\n fromObject: { culture: getCulture(this.localeId) },\n }),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ContactUsService } from '@core/services/contact-us.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap, tap } from 'rxjs/operators';\nimport * as contactUsActions from './contact-us.actions';\n\n@Injectable()\nexport class ContactUsEffects {\n sendEmail$ = createEffect(() =>\n this.actions$.pipe(\n ofType(contactUsActions.sendEmail),\n mergeMap(({ contactUsRequest }) =>\n this.contactUsService.sendEmail(contactUsRequest).pipe(\n map((contactUsResponse) => {\n if (contactUsResponse.isSuccessful) {\n return contactUsActions.sendEmailSuccess();\n }\n return contactUsActions.sendEmailFailure();\n }),\n catchError(() => of(contactUsActions.sendEmailFailure())),\n ),\n ),\n ),\n );\n\n sendEmailFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(contactUsActions.sendEmailFailure),\n tap(() => this.toastr.error($localize`Failed to send email`, $localize`Send email error`)),\n ),\n { dispatch: false },\n );\n\n constructor(\n private contactUsService: ContactUsService,\n private actions$: Actions,\n private toastr: ToastrService,\n ) {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { FooterLinksResponse } from '@core/dto/footerlink.dto';\nimport { Locale } from '@core/enums/locale';\nimport { FooterLink } from '@core/store/footer/footer-state-models';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { keysToCamelCase } from '@shared/utils/object-transform-utils';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FooterlinkService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.culture = getCulture(localeId);\n }\n\n fetchPrimaryLinks(): Observable {\n let params = this.getFetchParams('1');\n return this.http\n .get(this.baseUrl + 'api/default/footerlinks', params)\n .pipe(map((res) => keysToCamelCase(res.value)));\n }\n\n fetchSecondaryLinks(): Observable {\n let params = this.getFetchParams('2');\n return this.http\n .get(this.baseUrl + 'api/default/footerlinks', params)\n .pipe(map((res) => keysToCamelCase(res.value)));\n }\n\n // prettier-ignore\n private getFetchParams(linkType: string): object {\n return {\n params: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n sf_culture: this.culture,\n $orderBy: 'Order',\n $filter: 'cast(LinkType,Edm.String) eq \\'' + linkType + '\\''\n },\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FooterlinkService } from '@core/services/footerlink.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport * as footerActions from './footer.actions';\n\n@Injectable()\nexport class FooterEffects {\n fetchPrimaryFooterLinks$ = createEffect(() =>\n this.actions$.pipe(\n ofType(footerActions.fetchPrimaryFooterLinks),\n mergeMap(() =>\n this.footerLinksService.fetchPrimaryLinks().pipe(\n map((links) => footerActions.fetchPrimaryFooterLinksSuccess({ links })),\n catchError((error) => of(footerActions.fetchFooterLinksError({ error }))),\n ),\n ),\n ),\n );\n\n fetchSecondaryFooterLinks$ = createEffect(() =>\n this.actions$.pipe(\n ofType(footerActions.fetchSecondaryFooterLinks),\n mergeMap(() =>\n this.footerLinksService.fetchSecondaryLinks().pipe(\n map((links) => footerActions.fetchSecondaryFooterLinksSuccess({ links })),\n catchError((error) => of(footerActions.fetchFooterLinksError({ error }))),\n ),\n ),\n ),\n );\n\n constructor(private actions$: Actions, private footerLinksService: FooterlinkService) {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { MagazinesResponse } from '@core/dto/magazine.dto';\nimport { Locale } from '@core/enums/locale';\nimport { Magazine } from '@core/store/magazine/magazine-state-models';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { keysToCamelCase } from '@shared/utils/object-transform-utils';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MagazineService {\n private culture: string;\n private baseUrl: string = environment.ecommerceBackendUri;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.culture = getCulture(localeId);\n }\n\n fetchMagazinePage(start: number, pageSize: number): Observable {\n return this.http\n .get(\n `${this.baseUrl}api/default/magazines`,\n this.getParams(start, pageSize),\n )\n .pipe(map((res) => keysToCamelCase(res.value)));\n }\n\n private getParams(start: number, pageSize: number): object {\n return {\n params: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n sf_culture: this.culture,\n $expand: 'CoverImage',\n $orderby: 'DateCreated desc',\n $skip: start,\n $top: pageSize,\n },\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MagazineService } from '@core/services/magazine.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport * as magazineActions from './magazine.actions';\n\n@Injectable()\nexport class MagazineEffects {\n fetchMagazinesPage$ = createEffect(() =>\n this.actions$.pipe(\n ofType(magazineActions.fetchMagazinesPage),\n mergeMap((params) =>\n this.magazineService.fetchMagazinePage(params.pageStart, params.pageSize).pipe(\n map((magazines) =>\n magazineActions.fetchMagazinePageSuccess({\n magazines,\n pageSize: params.pageSize,\n }),\n ),\n catchError((error) => of(magazineActions.fetchMagazinesPageError({ error }))),\n ),\n ),\n ),\n );\n\n constructor(private actions$: Actions, private magazineService: MagazineService) {}\n}\n","export function convertToLocalizedDate(stringDate: string) {\n const dateObject = new Date(stringDate);\n const utcTimeStamp = Date.UTC(\n dateObject.getFullYear(),\n dateObject.getMonth(),\n dateObject.getDate(),\n dateObject.getHours(),\n dateObject.getMinutes(),\n dateObject.getSeconds(),\n );\n const localizedDate = new Date(utcTimeStamp);\n return localizedDate;\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { AppcuesEvent } from '@core/constants/appcues-event';\nimport {\n ShippedCartonDetailsResponse,\n ShippedCartonSkuDto,\n SubmitValidationOrderItem,\n} from '@core/dto/order.dto';\nimport { Locale } from '@core/enums/locale';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { AppcuesService } from '@core/services/appcues.service';\nimport { GtmService } from '@core/services/gtm.service';\nimport { LoggerService } from '@core/services/logger.service';\nimport { OrderService } from '@core/services/order.service';\nimport { AppState } from '@core/store';\nimport { selectCart } from '@core/store/cart';\nimport { newCart } from '@core/store/cart/cart.actions';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport {\n getCreatePaymentMethodFailureMessage,\n getErrorMessage,\n} from '@shared/utils/get-error-message';\nimport { getErrorTitle } from '@shared/utils/get-error-title';\nimport { getLanguage } from '@shared/utils/locale-utils';\nimport { convertToLocalizedDate } from '@shared/utils/localize-date-utils';\nimport { StatusCodes } from 'http-status-codes';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap, tap } from 'rxjs/operators';\nimport { Cart } from '../cart/cart-state-models';\nimport { selectPersonalInfo } from '../checkout';\nimport { FailedOrderItem, ShippedCartonDetailsData, ShippedCartonSku } from './order-state-models';\nimport * as orderActions from './order.actions';\n\n@Injectable()\nexport class OrderEffects {\n fetchOrderHistory$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.fetchOrderHistory),\n mergeMap(() =>\n this.orderService.fetchOrderHistory().pipe(\n map((res) =>\n orderActions.fetchOrderHistorySuccess({\n payload: res.orders.map((order) => ({\n ...order,\n createdDate: convertToLocalizedDate(order.createdDate),\n })),\n }),\n ),\n catchError((error) => of(orderActions.fetchOrderHistoryFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchOrderHistoryFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(orderActions.fetchOrderHistoryFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchCCOrderHistory$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.fetchCCOrderHistory),\n mergeMap(() =>\n this.orderService.fetchCCOrderHistory().pipe(\n map((res) =>\n orderActions.fetchCCOrderHistorySuccess({\n payload: res.orders.map((order) => ({\n ...order,\n createdDate: convertToLocalizedDate(order.dateReceived),\n })),\n }),\n ),\n catchError((error) => of(orderActions.fetchCCOrderHistoryFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchCCOrderHistoryFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(orderActions.fetchCCOrderHistoryFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchOrderDetails$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.fetchOrderDetails),\n mergeMap(({ orderId }) =>\n this.orderService.fetchOrderDetails(orderId).pipe(\n map((res) =>\n orderActions.fetchOrderDetailsSuccess({\n payload: {\n ...res,\n createdDate: convertToLocalizedDate(res.createdDate),\n cartons: res.cartons.map((carton) => ({ ...carton, trackingUrl: carton.tracking })),\n },\n }),\n ),\n catchError((error) => of(orderActions.fetchOrderDetailsFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchOrderDetailsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(orderActions.fetchOrderDetailsFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchCCOrderDetails$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.fetchCCOrderDetails),\n mergeMap(({ poeOrderId }) =>\n this.orderService.fetchCCOrderDetails(poeOrderId).pipe(\n map((res) =>\n orderActions.fetchCCOrderDetailsSuccess({\n payload: {\n ...res,\n dateReceived: convertToLocalizedDate(res.dateReceived),\n },\n }),\n ),\n catchError((error) => of(orderActions.fetchCCOrderDetailsFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchCCOrderDetailsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(orderActions.fetchCCOrderDetailsFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n submitOrder$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.submitOrder),\n concatLatestFrom(() => this.store$.select(selectCart)),\n mergeMap(([{ request }, cart]) =>\n this.orderService.submitOrder(request).pipe(\n map((res) => orderActions.submitOrderSuccess({ payload: { cart, response: res } })),\n catchError((error) => {\n const updatedItems = this.mapOrderLineToFailedOrderItem(\n cart,\n error.error?.updatedItems,\n );\n const deletedItems = this.mapOrderLineToFailedOrderItem(\n cart,\n error.error?.deletedItems,\n );\n return of(orderActions.submitOrderFailure({ error, updatedItems, deletedItems }));\n }),\n ),\n ),\n ),\n );\n\n submitOrderSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.submitOrderSuccess),\n concatLatestFrom(() => this.store$.select(selectPersonalInfo)),\n tap(([{ payload }, personalInfo]) => {\n this.gtmService.purchase(\n payload.response.orderId,\n payload.cart,\n personalInfo?.billingCustomer?.email,\n );\n this.appcuesService.track(AppcuesEvent.SubmitOrder);\n }),\n map(() => newCart()),\n ),\n );\n\n submitOrderFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(orderActions.submitOrderFailure),\n tap(({ error, updatedItems, deletedItems }) => {\n if (!updatedItems.length && !deletedItems.length) {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }\n }),\n ),\n { dispatch: false },\n );\n\n fetchPartyOrderData$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.fetchPartyOrderData),\n mergeMap(({ orderNumber }) =>\n this.orderService.fetchPartyOrderData(orderNumber).pipe(\n map((partyOrderData) =>\n orderActions.fetchPartyOrderDataSuccess({\n partyOrderData: {\n hostessName: partyOrderData.hostessName,\n consultantName: partyOrderData.consultantName,\n orderNumber: partyOrderData.masterOrderId,\n receivedDate: partyOrderData.receivedDate,\n totalOrderAmount: partyOrderData.totalOrderAmount,\n paymentReceived: partyOrderData.paymentReceived,\n balanceDue: partyOrderData.balanceDue,\n consultantBeeNumber: partyOrderData.consultantBeeNumber,\n },\n }),\n ),\n catchError((res) => of(orderActions.fetchPartyOrderDataFailure(res))),\n ),\n ),\n ),\n );\n\n fetchPartyOrderDataFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(orderActions.fetchPartyOrderDataFailure),\n tap((res) => {\n if (res.status != StatusCodes.BAD_REQUEST) {\n return this.toastr.error(\n $localize`Failed to fetch party order!`,\n $localize`Party order fetching error`,\n );\n }\n }),\n ),\n { dispatch: false },\n );\n\n submitPartyOrder$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.submitPartyOrder),\n mergeMap(({ request }) =>\n this.orderService.submitPartyOrder(request).pipe(\n map((res) => orderActions.submitPartyOrderSuccess({ payload: res })),\n catchError((error) => of(orderActions.submitPartyOrderFailure({ error: error.error }))),\n ),\n ),\n ),\n );\n\n submitPartyOrderFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(orderActions.submitPartyOrderFailure),\n tap(({ error }) => {\n let message =\n error.ErrorType === PhExceptionErrorType.PaymentMethodCreationFailedException\n ? getCreatePaymentMethodFailureMessage(error)\n : getErrorMessage(error);\n\n this.toastr.error(message, getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n logCardAttempt$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.logCardAttempt),\n mergeMap(({ request }) =>\n this.orderService.logCardAttempt(request).pipe(\n map(() => orderActions.logCardAttemptSuccess()),\n catchError(({ error }) => of(orderActions.logCardAttemptFailure({ error }))),\n ),\n ),\n ),\n );\n\n logCardAttemptFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(orderActions.logCardAttemptFailure),\n tap(() => this.loggerService.error('Log card attempt failure')),\n ),\n { dispatch: false },\n );\n\n fetchShippedCartonsData$ = createEffect(() =>\n this.actions$.pipe(\n ofType(orderActions.fetchShippedCartonsData),\n mergeMap(({ orderUID, orderId }) =>\n this.orderService.fetchShippedCartons(orderUID, orderId).pipe(\n map((res) =>\n orderActions.fetchShippedCartonsSuccess({\n payload: this.mapShippedCartonDetailsResponseToShippedCartonDetailsData(\n res,\n this.language,\n ),\n }),\n ),\n catchError(({ error }) => of(orderActions.fetchShippedCartonsFailure({ error }))),\n ),\n ),\n ),\n );\n\n private language: string;\n\n constructor(\n private actions$: Actions,\n private orderService: OrderService,\n private toastr: ToastrService,\n private store$: Store,\n private gtmService: GtmService,\n private appcuesService: AppcuesService,\n private loggerService: LoggerService,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {\n this.language = getLanguage(this.localeId);\n }\n\n private mapOrderLineToFailedOrderItem(\n cart: Cart,\n failedOrderItems: SubmitValidationOrderItem[],\n ): FailedOrderItem[] {\n if (failedOrderItems?.length) {\n return failedOrderItems.map((orderItem) => {\n const cartItem = cart.orderLines.find((item) => item.sku === orderItem.skuCode);\n return { ...cartItem, actualPrice: orderItem.unitPrice };\n });\n }\n return [];\n }\n\n private mapShippedCartonDetailsResponseToShippedCartonDetailsData(\n cartonDetailsDTO: ShippedCartonDetailsResponse,\n language: string,\n ): ShippedCartonDetailsData {\n return {\n ...cartonDetailsDTO,\n backorderItems: cartonDetailsDTO.backorderItems.skus.map((sku) =>\n this.mapSkuItemDTOToSkuItem(sku, language),\n ),\n shippedCartons: cartonDetailsDTO.shippedCartons\n .map((sc) => ({\n ...sc,\n skus: sc.skus.map((sku) => this.mapSkuItemDTOToSkuItem(sku, language)),\n }))\n .sort((a, b) => a.cartonNumber - b.cartonNumber),\n };\n }\n\n private mapSkuItemDTOToSkuItem(sku: ShippedCartonSkuDto, language: string): ShippedCartonSku {\n return {\n ...sku,\n skuDescription: language === Locale.En ? sku.skuDescriptionEn : sku.skuDescriptionEs,\n };\n }\n}\n","export enum ProductErrorType {\n ProductNotFoundException = 'ProductNotFoundException',\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport {\n GetProductDetailsResponse,\n GetProductQuickViewResponse,\n ProductRecommendationsResponse,\n RecipeProductRecommendationsResponse,\n} from '@core/dto/product-details.dto';\nimport { GetProductsResponse } from '@core/dto/product.dto';\nimport { Locale } from '@core/enums/locale';\nimport { LoadProductsProps } from '@core/models/load-products.model';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport * as moment from 'moment';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.culture = getCulture(localeId);\n }\n\n fetchProducts(payload: LoadProductsProps): Observable {\n const date = moment.utc();\n return this.http.get(this.baseUrl + 'api/product', {\n params: new HttpParams({\n fromObject: {\n pageNumber: payload.pageNumber.toString(),\n pageSize: payload.pageSize.toString(),\n date: date.toString(),\n catalogUrlName: payload.catalogUrlName,\n culture: this.culture,\n },\n }),\n });\n }\n\n fetchProductDetails(sku: string, date: string = null): Observable {\n return this.http.get(this.baseUrl + 'api/product/' + sku, {\n params: new HttpParams({\n fromObject: { date, culture: this.culture },\n }),\n });\n }\n\n fetchProductQuickView(sku: string): Observable {\n return this.http.get(`${this.baseUrl}api/product/minimal/${sku}`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchProductRecommendations(\n sku: string,\n date: string = null,\n ): Observable {\n return this.http.get(\n `${this.baseUrl}api/product/recommendation`,\n { params: new HttpParams({ fromObject: { sku, date, culture: this.culture } }) },\n );\n }\n\n fetchRelatedProducts(recipeUrl: string): Observable {\n return this.http.get(\n `${this.baseUrl}api/recipe/${recipeUrl}/relatedproducts`,\n {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n },\n );\n }\n\n fetchMoreProductFromCollection(\n catalogUrlName: string,\n date: string = null,\n ): Observable {\n return this.http.get(\n `${this.baseUrl}api/product/recommendation/collection`,\n {\n params: new HttpParams({\n fromObject: { catalogUrlName, date, culture: this.culture },\n }),\n },\n );\n }\n\n fetchEcommerceCustomerSpecialOffers(date: string): Observable {\n return this.http.get(`${this.baseUrl}api/promotion/ecommerce`, {\n params: new HttpParams({\n fromObject: {\n date,\n culture: this.culture,\n },\n }),\n });\n }\n\n fetchHealthySavingsCustomerSpecialOffers(date: string): Observable {\n return this.http.get(`${this.baseUrl}api/promotion/healthySavings`, {\n params: new HttpParams({\n fromObject: {\n date,\n culture: this.culture,\n },\n }),\n });\n }\n\n fetchCollectAndSaveCustomerSpecialOffers(date: string): Observable {\n return this.http.get(`${this.baseUrl}api/promotion/collectAndSave`, {\n params: new HttpParams({\n fromObject: {\n date,\n culture: this.culture,\n },\n }),\n });\n }\n\n fetchRegularCustomerSpecialOffers(date: string): Observable {\n return this.http.get(\n `${this.baseUrl}api/promotion/regularCustomerSpecial`,\n {\n params: new HttpParams({\n fromObject: {\n date,\n culture: this.culture,\n },\n }),\n },\n );\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { GetCatalogsResponse } from '@core/dto/catalog.dto';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CatalogService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.culture = getCulture(localeId);\n }\n\n fetchCatalogs(\n catalogType: string,\n pageNumber: number,\n pageSize: number,\n ): Observable {\n return this.http.get(this.baseUrl + 'api/catalog', {\n params: new HttpParams({\n fromObject: {\n pageNumber: pageNumber.toString(),\n pageSize: pageSize.toString(),\n catalogType: catalogType,\n culture: this.culture,\n },\n }),\n });\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { RecipeDetailsResponse, RecipesResponse } from '@core/dto/recipe.dto';\nimport { RecipeCategoriesResponse } from '@core/dto/tag.dto';\nimport { Locale } from '@core/enums/locale';\nimport { LoadRecipesProps } from '@core/models/load-recipes.model';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport * as moment from 'moment';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RecipeService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.culture = getCulture(localeId);\n }\n\n fetchRecipes(payload: LoadRecipesProps): Observable {\n const date = moment.utc();\n return this.http.get(this.baseUrl + 'api/recipe', {\n params: new HttpParams({\n fromObject: {\n pageNumber: payload.pageNumber.toString(),\n pageSize: payload.pageSize.toString(),\n date: date.toString(),\n categoryUrl: payload.categoryUrl,\n ...(payload.sortType ? { sortType: String(payload.sortType) } : {}),\n culture: this.culture,\n },\n }),\n });\n }\n\n fetchRecipeCategories(): Observable {\n return this.http.get(this.baseUrl + 'api/recipe/categories', {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchRelatedRecipes(sku: string, date: string = null): Observable {\n return this.http.get(`${this.baseUrl}api/recipe/recommendation/${sku}`, {\n params: new HttpParams({ fromObject: { date, culture: this.culture } }),\n });\n }\n\n fetchRecipeRecommendations(recipeId: string): Observable {\n return this.http.get(`${this.baseUrl}api/recipe/${recipeId}/similar`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchRecipeDetails(url: string, date: string = null): Observable {\n return this.http.get(`${this.baseUrl}api/recipe/${url}`, {\n params: new HttpParams({\n fromObject: { date, culture: this.culture },\n }),\n });\n }\n\n likeRecipe(id: string): Observable {\n return this.http.post(\n `${this.baseUrl}api/recipe/${id}/like`,\n {},\n {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n },\n );\n }\n\n dislikeRecipe(id: string): Observable {\n return this.http.delete(`${this.baseUrl}api/recipe/${id}/like`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchUserRecipes(): Observable {\n return this.http.get(`${this.baseUrl}api/recipe/likes`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { VimeoDto } from '@core/dto/vimeo.dto';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VimeoService {\n readonly VimeoApiUrl: string = 'https://vimeo.com/api/oembed.json';\n\n fetchVimeoThumbnail(id: string): Observable {\n return this.http\n .get(`${this.VimeoApiUrl}?url=https://vimeo.com/${id}`)\n .pipe(map((response) => response.thumbnail_url_with_play_button));\n }\n\n constructor(private http: HttpClient) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ProductRoutes } from '@core/constants/routes.const';\nimport { ProductErrorType } from '@core/enums/product-error-type.enum';\nimport { CatalogService } from '@core/services/catalog.service';\nimport { GtmService } from '@core/services/gtm.service';\nimport { ProductService } from '@core/services/product.service';\nimport { RecipeService } from '@core/services/recipe.service';\nimport { VimeoService } from '@core/services/vimeo.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { getErrorMessage } from '@shared/utils/get-error-message';\nimport { getErrorTitle } from '@shared/utils/get-error-title';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { AppState } from '..';\nimport * as productActions from './product.actions';\n\n@Injectable()\nexport class ProductEffects {\n fetchProducts$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchProducts),\n exhaustMap((payload) =>\n this.productService.fetchProducts(payload).pipe(\n map((res) =>\n productActions.fetchProductsSuccess({\n payload: res.products,\n catalogName: res.catalogName,\n pageSize: payload.pageSize,\n }),\n ),\n catchError((error) => of(productActions.fetchProductsFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchProductsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchProductsFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchProductDetails$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchProductDetails),\n mergeMap(({ sku, date }) =>\n this.productService.fetchProductDetails(sku, date).pipe(\n map((product) =>\n productActions.fetchProductDetailsSuccess({\n product: {\n ...product,\n videos: product.vimeoIds.map((i) => ({\n id: i,\n })),\n },\n }),\n ),\n catchError((error) =>\n of(productActions.fetchProductDetailsFailure({ error: error.error })),\n ),\n ),\n ),\n ),\n );\n\n fetchProductDetailsSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchProductDetailsSuccess),\n tap(({ product }) => {\n this.gtmService.productDetailsView(product);\n product.videos.forEach((video) => {\n this.store$.dispatch(productActions.fetchProductVideoDetails({ vimeoId: video.id }));\n });\n }),\n ),\n { dispatch: false },\n );\n\n fetchProductDetailsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchProductDetailsFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n if (error.ErrorType == ProductErrorType.ProductNotFoundException) {\n this.router.navigateByUrl(`${ProductRoutes.Product}/${ProductRoutes.NotFound}`);\n }\n }),\n ),\n { dispatch: false },\n );\n\n fetchCatalogs$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchCatalogs),\n exhaustMap(({ catalogType, pageNumber, pageSize, shouldResetStore }) =>\n this.catalogService.fetchCatalogs(catalogType, pageNumber, pageSize).pipe(\n switchMap((res) => {\n const actions = [];\n if (shouldResetStore) {\n actions.push(productActions.resetCatalogs());\n }\n actions.push(productActions.fetchCatalogsSuccess({ payload: res.catalogs, pageSize }));\n return actions;\n }),\n catchError((error) => of(productActions.fetchCatalogsFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchCatalogsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchCatalogsFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchProductQuickView$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchProductQuickView),\n mergeMap(({ sku }) =>\n this.productService.fetchProductQuickView(sku).pipe(\n map((product) =>\n productActions.fetchProductQuickViewSuccess({\n product: {\n sku,\n ...product,\n videos: product.vimeoIds?.map((id) => ({ id })),\n },\n }),\n ),\n catchError(({ error }) => of(productActions.fetchProductQuickViewFailure(error))),\n ),\n ),\n ),\n );\n\n fetchProductQuickViewSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchProductQuickViewSuccess),\n tap(({ product }) => {\n product.videos?.forEach((video) => {\n this.store$.dispatch(\n productActions.fetchProductQuickViewVideoDetails({ vimeoId: video.id }),\n );\n });\n }),\n ),\n { dispatch: false },\n );\n\n fetchProductQuickViewFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchProductQuickViewFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n /**\n * Product recommendations\n */\n fetchProductRecommendations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchProductRecommendations),\n mergeMap(({ sku, date }) =>\n this.productService.fetchProductRecommendations(sku, date).pipe(\n map((res) =>\n productActions.fetchProductRecommendationsSuccess({\n recommendations: res.recommendations,\n }),\n ),\n catchError(() => of(productActions.fetchProductRecommendationsFailure())),\n ),\n ),\n ),\n );\n\n fetchProductRecommendationsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchProductRecommendationsFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch product recommendations`,\n $localize`Product recommendations error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n /**\n * Related recipes\n */\n fetchRelatedRecipes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchRelatedRecipes),\n mergeMap(({ sku, date }) =>\n this.recipeService.fetchRelatedRecipes(sku, date).pipe(\n map((res) =>\n productActions.fetchRelatedRecipesSuccess({\n recipes: res.recipes,\n }),\n ),\n catchError(() => of(productActions.fetchRelatedRecipesFailure())),\n ),\n ),\n ),\n );\n\n fetchRelatedRecipesFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchRelatedRecipesFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch related recipes`,\n $localize`Related recipes error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n /**\n * More product from collection\n */\n fetchMoreFromCollection$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchMoreFromCollection),\n mergeMap(({ catalogUrlName, sku, date }) =>\n this.productService.fetchMoreProductFromCollection(catalogUrlName, date).pipe(\n map((res) =>\n productActions.fetchMoreFromCollectionSuccess({\n moreFromCollection: res.recommendations.filter((r) => r.sku !== sku),\n }),\n ),\n catchError(() => of(productActions.fetchMoreFromCollectionFailure())),\n ),\n ),\n ),\n );\n\n fetchMoreFromCollectionFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchMoreFromCollectionFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch more product from this collection`,\n $localize`More from this collection error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n fetchEcommerceCustomerSpecialOffers$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchEcommerceCustomerSpecialOffers),\n mergeMap(({ viewAs }) =>\n this.productService.fetchEcommerceCustomerSpecialOffers(viewAs).pipe(\n map((res) =>\n productActions.fetchEcommerceCustomerSpecialOffersSuccess({\n payload: res.products,\n }),\n ),\n catchError((error) =>\n of(productActions.fetchEcommerceCustomerSpecialOffersFailure({ error })),\n ),\n ),\n ),\n ),\n );\n\n fetchEcommerceCustomerSpecialOffersFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchEcommerceCustomerSpecialOffersFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchHealthySavingsCustomerSpecialOffers$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchHealthySavingsCustomerSpecialOffers),\n mergeMap(({ viewAs }) =>\n this.productService.fetchHealthySavingsCustomerSpecialOffers(viewAs).pipe(\n map((res) =>\n productActions.fetchHealthySavingsCustomerSpecialOffersSuccess({\n payload: res.products,\n }),\n ),\n catchError((error) =>\n of(productActions.fetchHealthySavingsCustomerSpecialOffersFailure({ error })),\n ),\n ),\n ),\n ),\n );\n\n fetchHealthySavingsCustomerSpecialOffersFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchHealthySavingsCustomerSpecialOffersFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchCollectAndSaveCustomerSpecialOffers$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchCollectAndSaveCustomerSpecialOffers),\n mergeMap(({ viewAs }) =>\n this.productService.fetchCollectAndSaveCustomerSpecialOffers(viewAs).pipe(\n map((res) =>\n productActions.fetchCollectAndSaveCustomerSpecialOffersSuccess({\n payload: res.products,\n }),\n ),\n catchError((error) =>\n of(productActions.fetchCollectAndSaveCustomerSpecialOffersFailure({ error })),\n ),\n ),\n ),\n ),\n );\n\n fetchCollectAndSaveCustomerSpecialOffersFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchCollectAndSaveCustomerSpecialOffersFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchRegularCustomerSpecialOffers$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchRegularCustomerSpecialOffers),\n mergeMap(({ viewAs }) =>\n this.productService.fetchRegularCustomerSpecialOffers(viewAs).pipe(\n map((res) =>\n productActions.fetchRegularCustomerSpecialOffersSuccess({\n payload: res.products,\n }),\n ),\n catchError((error) =>\n of(productActions.fetchRegularCustomerSpecialOffersFailure({ error })),\n ),\n ),\n ),\n ),\n );\n\n fetchRegularCustomerSpecialOffersFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productActions.fetchRegularCustomerSpecialOffersFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n fetchProductVideoDetails$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchProductVideoDetails),\n mergeMap(({ vimeoId }) =>\n this.vimeoService.fetchVimeoThumbnail(vimeoId).pipe(\n map((thumbnail) =>\n productActions.fetchProductVideoDetailsSuccess({ vimeoId, thumbnail }),\n ),\n catchError(() => of(productActions.fetchProductVideoDetailsFailure())),\n ),\n ),\n ),\n );\n\n fetchProductQuickViewVideoDetails$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productActions.fetchProductQuickViewVideoDetails),\n mergeMap(({ vimeoId }) =>\n this.vimeoService.fetchVimeoThumbnail(vimeoId).pipe(\n map((thumbnail) =>\n productActions.fetchProductQuickViewVideoDetailsSuccess({ vimeoId, thumbnail }),\n ),\n catchError(() => of(productActions.fetchProductQuickViewVideoDetailsFailure())),\n ),\n ),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private productService: ProductService,\n private catalogService: CatalogService,\n private recipeService: RecipeService,\n private toastr: ToastrService,\n private gtmService: GtmService,\n private router: Router,\n private vimeoService: VimeoService,\n private store$: Store,\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { ProductService } from '@core/services/product.service';\nimport { RecipeService } from '@core/services/recipe.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { toPretty, toTitleCase } from '@shared/utils/text-utils';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, map, mergeMap, tap } from 'rxjs/operators';\nimport * as recipeActions from './recipe.actions';\n\n@Injectable()\nexport class RecipeEffects {\n fetchRecipes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipes),\n exhaustMap((payload) =>\n this.recipeService.fetchRecipes(payload).pipe(\n map((res) =>\n recipeActions.fetchRecipesSuccess({\n items: res.recipes,\n pageSize: payload.pageSize,\n isFirstPage: payload.isFirstPage,\n }),\n ),\n catchError((error) => of(recipeActions.fetchRecipesFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchRecipesFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipesFailure),\n tap(() => {\n this.toastr.error($localize`Failed to fetch recipes`, $localize`Recipe fetching error`);\n }),\n ),\n { dispatch: false },\n );\n\n fetchRecipeCategories$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipeCategories),\n mergeMap(() =>\n this.recipeService.fetchRecipeCategories().pipe(\n map(({ recipeCategories }) =>\n recipeActions.fetchRecipeCategoriesSuccess({ recipeCategories }),\n ),\n catchError((error) => of(recipeActions.fetchRecipeCategoriesFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchRecipeCategoriesFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipeCategoriesFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch recipecategories`,\n $localize`Recipecategory fetching error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n fetchRecipeDetails$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipeDetails),\n mergeMap(({ url, date }) =>\n this.recipeService.fetchRecipeDetails(url, date).pipe(\n map((item) => recipeActions.fetchRecipeDetailsSuccess({ item })),\n catchError(() => of(recipeActions.fetchRecipeDetailsFailure())),\n ),\n ),\n ),\n );\n\n fetchRecipeDetailsSilent$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipeDetailsSilent),\n mergeMap(({ url }) =>\n this.recipeService.fetchRecipeDetails(url).pipe(\n map((item) => recipeActions.fetchRecipeDetailsSuccess({ item })),\n catchError(() => of(recipeActions.fetchRecipeDetailsFailure())),\n ),\n ),\n ),\n );\n\n fetchRecipeDetailsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipeDetailsFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch recipedetails`,\n $localize`Recipe details fetching error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n fetchRecipeRecommendations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipeRecommendations),\n mergeMap(({ recipeId }) =>\n this.recipeService.fetchRecipeRecommendations(recipeId).pipe(\n map((res) => recipeActions.fetchRecipeRecommendationsSuccess({ items: res.recipes })),\n catchError(() => of(recipeActions.fetchRecipeRecommendationsFailure())),\n ),\n ),\n ),\n );\n\n fetchRecipeRecommendationsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRecipeRecommendationsFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch recipe recommendations`,\n $localize`Recipe recommendations fetching error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n fetchRelatedProducts$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRelatedProducts),\n mergeMap(({ recipeUrl }) =>\n this.productService.fetchRelatedProducts(recipeUrl).pipe(\n map((res) => recipeActions.fetchRelatedProductsSuccess({ items: res.products })),\n catchError(() => of(recipeActions.fetchRelatedProductsFailure())),\n ),\n ),\n ),\n );\n\n fetchRelatedProductsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(recipeActions.fetchRelatedProductsFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch related products`,\n $localize`Related products fetching error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n fetchUserRecipes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.fetchUserRecipes),\n mergeMap(() =>\n this.recipeService.fetchUserRecipes().pipe(\n map((res) =>\n recipeActions.fetchUserRecipesSuccess({\n items: res.recipes.map((r) => ({\n ...r,\n categories: r.categoryUrls\n .slice(0, 4)\n .map((url) => toTitleCase(toPretty(url)))\n .join(', '),\n })),\n }),\n ),\n catchError(() => of(recipeActions.fetchUserRecipesFailure())),\n ),\n ),\n ),\n );\n\n fetchUserRecipesFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(recipeActions.fetchUserRecipesFailure),\n tap(() =>\n this.toastr.error(\n $localize`Failed to fetch user recipes`,\n $localize`Recipes fetching error`,\n ),\n ),\n ),\n { dispatch: false },\n );\n\n likeRecipe$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.likeRecipe),\n exhaustMap(({ id, url }) =>\n this.recipeService.likeRecipe(id).pipe(\n map(() => recipeActions.likeRecipeSuccess()),\n catchError(() => of(recipeActions.likeRecipeFailure({ url }))),\n ),\n ),\n ),\n );\n\n likeRecipeFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.likeRecipeFailure),\n tap(() => this.toastr.error($localize`Failed like recipe`, $localize`Recipe like error`)),\n map(({ url }) => recipeActions.fetchRecipeDetailsSilent({ url })),\n ),\n );\n\n dislikeRecipe$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.dislikeRecipe),\n mergeMap(({ id, url }) =>\n this.recipeService.dislikeRecipe(id).pipe(\n map(() => recipeActions.dislikeRecipeSuccess()),\n catchError(() => of(recipeActions.dislikeRecipeFailure({ url }))),\n ),\n ),\n ),\n );\n\n dislikeRecipeFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(recipeActions.dislikeRecipeFailure),\n tap(() =>\n this.toastr.error($localize`Failed to dislike recipe`, $localize`Recipe dislike error`),\n ),\n map(({ url }) => recipeActions.fetchRecipeDetailsSilent({ url })),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private recipeService: RecipeService,\n private productService: ProductService,\n private toastr: ToastrService,\n ) {}\n}\n","export function toPretty(str: string) {\n if (str) {\n return str.replaceAll('-', ' ');\n }\n\n return '';\n}\n\nexport function toTitleCase(str) {\n return str\n .toLowerCase()\n .split(' ')\n .map(function (word) {\n return word.replace(word[0], word[0].toUpperCase());\n })\n .join(' ');\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { CountryName } from '@core/constants/country-name';\nimport { ReturnDetailsDto, ReturnsDto, SubmitReturnDto } from '@core/dto/return.dto';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReturnService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(\n private http: HttpClient,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {\n this.culture = getCulture(localeId);\n }\n\n fetchReturnHistory(): Observable {\n return this.http.get(`${this.baseUrl}api/order/returns`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n fetchReturnDetails(returnId: string): Observable {\n return this.http.get(`${this.baseUrl}api/order/return/${returnId}`, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n\n submitReturn(request: SubmitReturnDto): Observable {\n const requestWithCountry: SubmitReturnDto = {\n ...request,\n shippingAddress: { ...request.shippingAddress, country: CountryName[environment.country] },\n };\n return this.http.post(`${this.baseUrl}api/order/return`, requestWithCountry);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReturnService } from '@core/services/return.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { convertToLocalizedDate } from '@shared/utils/localize-date-utils';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap, tap } from 'rxjs/operators';\nimport { AppState } from '..';\nimport * as returnActions from './return.actions';\n\n@Injectable()\nexport class ReturnEffects {\n fetchReturnHistory$ = createEffect(() =>\n this.actions$.pipe(\n ofType(returnActions.fetchReturnHistory),\n mergeMap(() =>\n this.returnService.fetchReturnHistory().pipe(\n map((res) =>\n returnActions.fetchReturnHistorySuccess({\n returnHistory: res.returns.map((returnItem) => ({\n ...returnItem,\n submittedDate: convertToLocalizedDate(returnItem.submittedDate),\n })),\n }),\n ),\n catchError(() => of(returnActions.fetchReturnHistoryFailure())),\n ),\n ),\n ),\n );\n\n fetchReturnHistoryFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(returnActions.fetchReturnHistoryFailure),\n tap(() => {\n this.toastr.error($localize`Return history fetch failed`, $localize`Error`);\n }),\n ),\n { dispatch: false },\n );\n\n submitReturn$ = createEffect(() =>\n this.actions$.pipe(\n ofType(returnActions.submitReturn),\n mergeMap(({ payload }) =>\n this.returnService.submitReturn(payload).pipe(\n map(() => returnActions.submitReturnSuccess()),\n catchError(() => of(returnActions.submitReturnFailure())),\n ),\n ),\n ),\n );\n\n submitReturnFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(returnActions.submitReturnFailure),\n tap(() => {\n this.toastr.error($localize`Return request failed`, $localize`Error`);\n }),\n ),\n { dispatch: false },\n );\n\n fetchReturnDetails$ = createEffect(() =>\n this.actions$.pipe(\n ofType(returnActions.fetchReturnDetails),\n mergeMap(({ returnId }) =>\n this.returnService.fetchReturnDetails(returnId).pipe(\n map((res) =>\n returnActions.fetchReturnDetailsSuccess({\n returnDetails: { ...res, submittedDate: convertToLocalizedDate(res.submittedDate) },\n }),\n ),\n catchError(() => of(returnActions.fetchReturnDetailsFailure())),\n ),\n ),\n ),\n );\n\n fetchReturnDetailsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(returnActions.fetchReturnDetailsFailure),\n tap(() => {\n this.toastr.error($localize`Return details fetch failed`, $localize`Error`);\n }),\n ),\n { dispatch: false },\n );\n\n constructor(\n private actions$: Actions,\n private returnService: ReturnService,\n private toastr: ToastrService,\n private store$: Store,\n ) {}\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { SearchResultApiPageSize } from '@core/constants/search';\nimport { SearchResponse } from '@core/dto/search.dto';\nimport { Locale } from '@core/enums/locale';\nimport { FetchSearchResultProp } from '@core/models/search';\nimport { environment } from '@env';\nimport { HtmlParamEncoder } from '@shared/utils/http-param-encoder';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SearchService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.culture = getCulture(localeId);\n }\n\n search({\n searchTerm,\n pageNumber = 1,\n filter = {},\n displayDiscontinuedProducts = false,\n }: FetchSearchResultProp): Observable {\n return this.http.get(`${this.baseUrl}api/search`, {\n params: new HttpParams({\n encoder: new HtmlParamEncoder(),\n fromObject: {\n query: searchTerm,\n pageNumber: pageNumber.toString(),\n pageSize: SearchResultApiPageSize.toString(),\n culture: this.culture,\n displayDiscontinuedProducts: String(displayDiscontinuedProducts),\n ...filter,\n },\n }),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SearchResultApiPageSize } from '@core/constants/search';\nimport { SearchFacetQueryParam } from '@core/enums/search.enum';\nimport { SearchService } from '@core/services/search.service';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, concatMap, map, tap } from 'rxjs/operators';\nimport { selectSearchDocumentsCount } from '.';\nimport { AppState } from '..';\nimport * as searchActions from './search.actions';\n\n@Injectable()\nexport class SearchEffects {\n fetchSearchResult$ = createEffect(() =>\n this.actions$.pipe(\n ofType(searchActions.fetchSearchResult),\n concatLatestFrom(() => this.store$.select(selectSearchDocumentsCount)),\n concatMap(([payload, documentCount]) =>\n this.searchService\n .search({\n searchTerm: payload.searchTerm,\n pageNumber: Math.ceil(documentCount / SearchResultApiPageSize) + 1,\n filter: payload.filter,\n displayDiscontinuedProducts: payload.withDiscontinuedProducts,\n })\n .pipe(\n map((res) =>\n searchActions.fetchSearchResultSuccess({\n count: res.count,\n documents: res.documents,\n keepFacets: payload.keepFacets,\n facets: res.facets\n .filter((f) => f.name !== 'entity_type' && f.items.length)\n .map((f) => ({\n ...f,\n id: SearchFacetQueryParam[f.name],\n })),\n }),\n ),\n catchError(() => of(searchActions.fetchSearchResultFailure())),\n ),\n ),\n ),\n );\n\n fetchSearchResultFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(searchActions.fetchSearchResultFailure),\n tap(() => {\n this.toastr.error(\n $localize`Failed to fetch search result`,\n $localize`Search result fetching error`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n constructor(\n private actions$: Actions,\n private searchService: SearchService,\n private toastr: ToastrService,\n private store$: Store,\n ) {}\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { ShareInEmailRequest, ShareInEmailResponse } from '@core/dto/share-in-email.dto';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\n\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ShareService {\n baseUrl: string = environment.ecommerceBackendUri;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {}\n\n shareInEmail(req: ShareInEmailRequest): Observable {\n return this.http.post(`${this.baseUrl}api/share/email`, req, {\n params: new HttpParams({\n fromObject: { culture: getCulture(this.localeId) },\n }),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ShareService } from '@core/services/share.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap, tap } from 'rxjs/operators';\nimport * as shareActions from './share.actions';\n\n@Injectable()\nexport class ShareEffects {\n shareInEmail$ = createEffect(() =>\n this.actions$.pipe(\n ofType(shareActions.shareInEmail),\n mergeMap(({ payload }) =>\n this.shareService.shareInEmail(payload).pipe(\n map(() => shareActions.shareInEmailSuccess()),\n catchError(() => of(shareActions.shareInEmailFailure())),\n ),\n ),\n ),\n );\n\n shareInEmailSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(shareActions.shareInEmailSuccess),\n tap(() => {\n this.toastr.success($localize`Email sent!`, $localize`Success`);\n }),\n ),\n { dispatch: false },\n );\n\n shareInEmailFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(shareActions.shareInEmailFailure),\n tap(() => {\n this.toastr.error($localize`Email sending failed!`, $localize`Error`);\n }),\n ),\n { dispatch: false },\n );\n\n constructor(\n private actions$: Actions,\n private toastr: ToastrService,\n private shareService: ShareService,\n ) {}\n}\n","import { IndividualConfig } from 'ngx-toastr';\n\nexport const ToastrConfigCenterBiggerPermanent: Partial = {\n positionClass: 'toast-top-center',\n disableTimeOut: true,\n titleClass: 'toast-title-bigger',\n messageClass: 'toast-message-bigger',\n};\n","import * as snaErrorMessages from '@core/constants/sna-error-messages';\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\nimport { StatusCodes } from 'http-status-codes';\n\nexport function getSnaErrorTitle(statusCode: StatusCodes): string {\n switch (statusCode) {\n case StatusCodes.SERVICE_UNAVAILABLE:\n return snaErrorMessages.SnaDisabledErrorMessage.title;\n default:\n return snaErrorMessages.GenericErrorMessage.title;\n }\n}\n\nexport function getSnaErrorMessage(statusCode: StatusCodes): string {\n switch (statusCode) {\n case StatusCodes.SERVICE_UNAVAILABLE:\n return snaErrorMessages.SnaDisabledErrorMessage.message;\n default:\n return snaErrorMessages.GenericErrorMessage.message;\n }\n}\n\nexport function getCheckCanSubmitSnaErrorTitle(statusCode: StatusCodes): string {\n switch (statusCode) {\n case StatusCodes.SERVICE_UNAVAILABLE:\n return snaErrorMessages.SnaDisabledErrorMessage.title;\n default:\n return snaErrorMessages.CheckSnaCanSubmitGenericErrorMessage.title;\n }\n}\n\nexport function getCheckCanSubmitSnaErrorMessage(statusCode: StatusCodes): string {\n switch (statusCode) {\n case StatusCodes.SERVICE_UNAVAILABLE:\n return snaErrorMessages.SnaDisabledErrorMessage.message;\n default:\n return snaErrorMessages.CheckSnaCanSubmitGenericErrorMessage.message;\n }\n}\n\nexport function getSnaSubmitErrorTitle(statusCode: StatusCodes): string {\n switch (statusCode) {\n case StatusCodes.SERVICE_UNAVAILABLE:\n return snaErrorMessages.SnaDisabledErrorMessage.title;\n default:\n return snaErrorMessages.SnaSubmitGenericErrorMessage.title;\n }\n}\n\nexport function getSnaSubmitErrorMessage(statusCode: StatusCodes): string {\n switch (statusCode) {\n case StatusCodes.SERVICE_UNAVAILABLE:\n return snaErrorMessages.SnaDisabledErrorMessage.message;\n default:\n return snaErrorMessages.SnaSubmitGenericErrorMessage.message;\n }\n}\n\nexport function isAfterCardTransaction(errorTypes: ConsultantSubmissionErrorType[]): boolean {\n return (\n errorTypes.includes(ConsultantSubmissionErrorType.VaultImportFailed) ||\n errorTypes.includes(ConsultantSubmissionErrorType.ProwessImportFailed) ||\n errorTypes.includes(ConsultantSubmissionErrorType.ErrorWhileSync)\n );\n}\n","import { Injectable } from '@angular/core';\nimport { GenericErrorMessage } from '@core/constants/sna-error-messages';\nimport { ToastrConfigCenterBiggerPermanent } from '@core/constants/toaster.config';\nimport {\n AddressVerificationRequest,\n ConsultantDto,\n FindConsultantByAreaRequest,\n FindConsultantByZipCodeResponse,\n FindConsultantResponse,\n OrderSummaryRequest,\n} from '@core/dto/start-now-app.dto';\nimport { AddressType } from '@core/enums/address-type.enum';\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\nimport { LoggerService } from '@core/services/logger.service';\nimport { StartNowAppService } from '@core/services/start-now-app.service';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store, select } from '@ngrx/store';\nimport { mapContactInfoToSubmitContactInfoDto } from '@shared/utils/create-submit-consultant-info-utils';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport {\n getCheckCanSubmitSnaErrorMessage,\n getCheckCanSubmitSnaErrorTitle,\n getSnaErrorMessage,\n getSnaErrorTitle,\n getSnaSubmitErrorMessage,\n getSnaSubmitErrorTitle,\n} from '@shared/utils/sna-error-handling-utils';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport {\n selectAddresses,\n selectApplicationRegistrationId,\n selectConsultantFinderCriteria,\n selectSecurityKey,\n selectSelectedStarterKit,\n} from '.';\nimport { AppState } from '..';\nimport { Consultant } from '../consultant/consultant-state-models';\nimport {\n Address,\n ConsultantFinderCriteria,\n FoundConsultantsByZipCode,\n} from './start-now-app-state-models';\nimport * as startNowAppActions from './start-now-app.actions';\n\n@Injectable()\nexport class StartNowAppEffects {\n validateReCaptcha$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.validateReCaptcha),\n mergeMap(({ token }) =>\n this.startNowAppService.validateReCaptcha(token).pipe(\n map((res) => startNowAppActions.validateReCaptchaSuccess({ isValid: res.isSuccess })),\n catchError(() => of(startNowAppActions.validateReCaptchaFailure())),\n ),\n ),\n ),\n );\n\n findConsultantByArea$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.findConsultantByArea),\n mergeMap(({ consultantFinder }) =>\n this.startNowAppService.findConsultant(consultantFinder).pipe(\n map((res) => {\n if (res.items?.length > 0) {\n return startNowAppActions.findConsultantSuccess(this.mapConsultantFinderResults(res));\n } else {\n return startNowAppActions.findConsultantFailure();\n }\n }),\n catchError(() => of(startNowAppActions.findConsultantFailure())),\n ),\n ),\n ),\n );\n\n findConsultantByAreaNextPage$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.findConsultantByAreaNextPage),\n concatLatestFrom(() => [this.store$.select(selectConsultantFinderCriteria)]),\n mergeMap(([pageData, otherCriteria]) =>\n this.startNowAppService\n .findConsultant(this.mapConsultantFinderCriteria(pageData, otherCriteria))\n .pipe(\n map((res) =>\n startNowAppActions.findConsultantSuccess(this.mapConsultantFinderResults(res)),\n ),\n catchError(() => of(startNowAppActions.findConsultantFailure())),\n ),\n ),\n ),\n );\n\n findConsultantByZipCodeNextPage$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.findConsultantByZipCodeNextPage),\n concatLatestFrom(() => [\n this.store$\n .select(selectConsultantFinderCriteria)\n .pipe(select((consultantFinderCriteria) => consultantFinderCriteria.zipCode)),\n ]),\n mergeMap(([pageData, zipCode]) =>\n this.startNowAppService\n .findConsultantByZipCode({\n zipCode: zipCode,\n pageNumber: pageData.pageNumber,\n pageSize: pageData.pageSize,\n })\n .pipe(\n map((res) =>\n startNowAppActions.findConsultantByZipCodeSuccess({\n res: this.mapFindConsultantByZipCodeResponse(res),\n }),\n ),\n catchError(({ error }) =>\n of(startNowAppActions.findConsultantByZipCodeFailure({ error })),\n ),\n ),\n ),\n ),\n );\n\n findConsultantByConsultantCode$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.findConsultantByConsultantCode),\n mergeMap(({ request }) =>\n this.startNowAppService.findConsultantByConsultantCode(request).pipe(\n map((res) =>\n startNowAppActions.findConsultantSuccess({\n hasMore: false,\n items: [this.mapConsultantItemResponseToConsultant(res)],\n }),\n ),\n catchError(() => of(startNowAppActions.findConsultantFailure())),\n ),\n ),\n ),\n );\n\n findConsultantByZipCode$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.findConsultantByZipCode),\n mergeMap(({ request }) =>\n this.startNowAppService.findConsultantByZipCode(request).pipe(\n map((res) =>\n startNowAppActions.findConsultantByZipCodeSuccess({\n res: this.mapFindConsultantByZipCodeResponse(res),\n }),\n ),\n catchError(({ error }) =>\n of(startNowAppActions.findConsultantByZipCodeFailure({ error })),\n ),\n ),\n ),\n ),\n );\n\n findConsultantByZipCodeFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.findConsultantByZipCodeFailure),\n tap(() => {\n const title: string = $localize`Consultant fetch`;\n let message: string;\n if (isMexEnv) {\n message = $localize`Default consultant fetch failed`;\n } else {\n message = $localize`Consultant failed`;\n }\n this.toastr.error(message, title);\n this.loggerService.error(message);\n }),\n ),\n { dispatch: false },\n );\n\n validateRegistrationCode$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.validateRegistrationCode),\n mergeMap(({ validateRegistrationCode: registrationCode }) =>\n this.startNowAppService.validateRegistrationCode(registrationCode).pipe(\n map((res) => startNowAppActions.validateRegistrationCodeSuccess({ res })),\n catchError(() => of(startNowAppActions.validateRegistrationCodeFailure())),\n ),\n ),\n ),\n );\n\n validateRegistrationCodeFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.validateRegistrationCodeFailure),\n tap(() => {\n this.toastr.error(\n $localize`Registration code validity check`,\n $localize`Registration code validity check failed`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n updateStartNowAppUserInfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateStartNowAppUserInfo),\n concatLatestFrom(() => [\n this.store$.select(selectApplicationRegistrationId),\n this.store$.select(selectSecurityKey),\n ]),\n mergeMap(([{ userInfo }, applicationRegistrationId, securityKey]) =>\n this.startNowAppService.saveUserInfo(userInfo, applicationRegistrationId, securityKey).pipe(\n map((res) =>\n startNowAppActions.updateStartNowAppUserInfoSuccess({\n saveUserInfoResult: {\n applicationRegistrationId: res.applicationRegistrationId,\n isSuccess: res.isSuccess,\n errors: res.errorTypes,\n securityKey: res.securityKey,\n },\n }),\n ),\n catchError((error) => of(startNowAppActions.updateStartNowAppUserInfoFailure(error))),\n ),\n ),\n ),\n );\n\n updateStartNowAppUserInfoFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateStartNowAppUserInfoFailure),\n tap((error) => {\n this.toastr.error(\n getSnaErrorMessage(error?.error?.status),\n getSnaErrorTitle(error?.error?.status),\n );\n this.loggerService.error('Update user info failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n updateStartNowAppContactInfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateStartNowAppContactInfo),\n concatLatestFrom(() => [\n this.store$.select(selectApplicationRegistrationId),\n this.store$.select(selectSecurityKey),\n ]),\n mergeMap(([{ contactInfo }, applicationRegistrationId, securityKey]) =>\n this.startNowAppService\n .saveContactInfo({\n ...mapContactInfoToSubmitContactInfoDto(contactInfo),\n applicationRegistrationId,\n securityKey,\n })\n .pipe(\n map((res) =>\n startNowAppActions.updateStartNowAppContactInfoSuccess({\n saveConsultantDataResult: {\n isSuccess: res.isSuccess,\n errors: res.errorTypes,\n },\n }),\n ),\n catchError((error) =>\n of(startNowAppActions.updateStartNowAppContactInfoFailure(error)),\n ),\n ),\n ),\n ),\n );\n\n updateStartNowAppContactInfoFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateStartNowAppContactInfoFailure),\n tap((error) => {\n this.toastr.error(\n getSnaErrorMessage(error?.error?.status),\n getSnaErrorTitle(error?.error?.status),\n );\n this.loggerService.error('Update contact info failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n updateStartNowAppAddressInfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateStartNowAppAddressInfo),\n concatLatestFrom(() => [\n this.store$.select(selectApplicationRegistrationId),\n this.store$.select(selectSecurityKey),\n ]),\n mergeMap(([{ addresses, languagePreferred }, applicationRegistrationId, securityKey]) =>\n this.startNowAppService\n .saveAddressInfo({\n addresses,\n applicationRegistrationId,\n securityKey,\n languagePreferred,\n })\n .pipe(\n map((res) =>\n startNowAppActions.updateStartNowAppAddressInfoSuccess({\n saveConsultantDataResult: {\n isSuccess: res.isSuccess,\n errors: res.errorTypes,\n },\n }),\n ),\n catchError((error) =>\n of(startNowAppActions.updateStartNowAppAddressInfoFailure(error)),\n ),\n ),\n ),\n ),\n );\n\n updateStartNowAppAddressInfoFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateStartNowAppAddressInfoFailure),\n tap((error) => {\n this.toastr.error(\n getSnaErrorMessage(error?.error?.status),\n getSnaErrorTitle(error?.error?.status),\n );\n this.loggerService.error('Update address info failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n validateAddress$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.validateAddress),\n mergeMap(({ address }) =>\n this.startNowAppService.verifyAddress(address).pipe(\n map((res) => startNowAppActions.validateAddressSuccess({ addressValidation: res })),\n catchError((error) => of(startNowAppActions.validateAddressFailure(error))),\n ),\n ),\n ),\n );\n\n updateStartNowAppSelectedStarterKit$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateStartNowAppSelectedStarterKit),\n concatLatestFrom(() => [\n this.store$.select(selectApplicationRegistrationId),\n this.store$.select(selectSecurityKey),\n ]),\n mergeMap(\n ([\n { selectedStarterKit, isDepositPayment, isReducedDepositPayment, isZeroDepositPayment },\n applicationRegistrationId,\n securityKey,\n ]) =>\n this.startNowAppService\n .saveStarterKit({\n starterKitId: selectedStarterKit.id,\n isDepositPayment,\n isReducedDepositPayment,\n isZeroDepositPayment,\n applicationRegistrationId,\n securityKey,\n })\n .pipe(\n map((res) =>\n startNowAppActions.updateStartNowAppSelectedStarterKitSuccess({\n saveConsultantDataResult: {\n isSuccess: res.isSuccess,\n errors: res.errorTypes,\n },\n }),\n ),\n catchError((error) =>\n of(startNowAppActions.updateStartNowAppSelectedStarterKitFailure(error)),\n ),\n ),\n ),\n ),\n );\n\n updateStartNowAppSelectedStarterKitFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateStartNowAppSelectedStarterKitFailure),\n tap((error) => {\n this.toastr.error(\n getSnaErrorMessage(error?.error?.status),\n getSnaErrorTitle(error?.error?.status),\n );\n this.loggerService.error('Update selected starter kit failed ', error);\n }),\n ),\n { dispatch: false },\n );\n\n fetchCountryStates$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchCountryStates),\n mergeMap(() =>\n this.startNowAppService.fetchStates().pipe(\n map((res) => startNowAppActions.fetchCountryStatesSuccess({ countryStates: res })),\n catchError((error) => of(startNowAppActions.fetchCountryStatesFailure(error))),\n ),\n ),\n ),\n );\n\n emailUniquenessCheck$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.emailUniquenessCheck),\n mergeMap(({ email }) =>\n this.startNowAppService.emailUniquenessCheck(email).pipe(\n map(({ emailIsValid }) =>\n startNowAppActions.emailUniquenessCheckSuccess({ emailIsValid }),\n ),\n catchError((error) => of(startNowAppActions.emailUniquenessCheckFailure(error))),\n ),\n ),\n ),\n );\n\n phoneNumberUniquenessCheck$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.phoneNumberUniquenessCheck),\n mergeMap(({ request }) =>\n this.startNowAppService.checkPhoneNumberUniqueness(request).pipe(\n map((response) => startNowAppActions.phoneNumberUniquenessCheckSuccess({ response })),\n catchError((error) => of(startNowAppActions.phoneNumberUniquenessCheckFailure(error))),\n ),\n ),\n ),\n );\n\n phoneNumberUniquenessCheckFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.phoneNumberUniquenessCheckFailure),\n tap(() => {\n this.toastr.error(\n $localize`Phone number uniqueness check`,\n $localize`Phone number uniqueness check failed`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n fetchStarterKits$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchStartNowAppStarterKits),\n mergeMap(({ starterKitLanguageCode, isNonPfas }) =>\n this.startNowAppService.fetchStarterKits(starterKitLanguageCode, isNonPfas).pipe(\n map((res) =>\n startNowAppActions.fetchStartNowAppStarterKitsSuccess({ starterKits: res.starterKits }),\n ),\n catchError((error) =>\n of(startNowAppActions.fetchStartNowAppStarterKitsFailure({ error })),\n ),\n ),\n ),\n ),\n );\n\n fetchDepositPaymentValue$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchDepositPaymentValue),\n mergeMap(() =>\n this.startNowAppService\n .fetchDepositPaymentValue()\n .pipe(map((res) => startNowAppActions.fetchDepositPaymentValueSuccess({ res }))),\n ),\n ),\n );\n\n fetchReducedDepositPaymentValue$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchReducedDepositPaymentValue),\n mergeMap(() =>\n this.startNowAppService\n .fetchReducedDepositPaymentValue()\n .pipe(map((res) => startNowAppActions.fetchReducedDepositPaymentValueSuccess({ res }))),\n ),\n ),\n );\n\n fetchIsReducedDepositAvailable$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchIsReducedDepositAvailable),\n mergeMap(() =>\n this.startNowAppService\n .fetchIsReducedDepositAvailable()\n .pipe(map((res) => startNowAppActions.fetchIsReducedDepositAvailableSuccess({ res }))),\n ),\n ),\n );\n\n fetchIsZeroDepositAvailable$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchIsZeroDepositAvailable),\n mergeMap(() =>\n this.startNowAppService\n .fetchIsZeroDepositAvailable()\n .pipe(map((res) => startNowAppActions.fetchIsZeroDepositAvailableSuccess({ res }))),\n ),\n ),\n );\n\n checkIfNewPaymentRequired$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.checkIfNewPaymentRequired),\n mergeMap(\n ({\n applicationRegistrationId,\n starterKitId,\n isDepositPayment,\n isReducedDepositPayment,\n isZeroDepositPayment,\n }) =>\n this.startNowAppService\n .checkIfNewPaymentRequired(\n applicationRegistrationId,\n starterKitId,\n isDepositPayment,\n isReducedDepositPayment,\n isZeroDepositPayment,\n )\n .pipe(\n map((res) => startNowAppActions.checkIfNewPaymentRequiredSuccess({ res })),\n catchError((error) => of(startNowAppActions.checkIfNewPaymentRequiredFailure(error))),\n ),\n ),\n ),\n );\n\n checkIfNewPaymentRequiredSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.checkIfNewPaymentRequiredSuccess),\n filter(({ res }) => res),\n switchMap(() => [\n startNowAppActions.resetPaymentMethod(),\n startNowAppActions.resetClientToken(),\n startNowAppActions.resetVoucherInfo(),\n ]),\n ),\n );\n\n checkIfNewPaymentRequiredFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.checkIfNewPaymentRequiredFailure),\n tap((error) => {\n this.toastr.error(\n getSnaErrorMessage(error?.error?.status),\n getSnaErrorTitle(error?.error?.status),\n );\n }),\n ),\n { dispatch: false },\n );\n\n fetchOrderSummary$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchOrderSummary),\n concatLatestFrom(() => [\n this.store$.select(selectSelectedStarterKit),\n this.store$.select(selectAddresses),\n this.store$.select(selectApplicationRegistrationId),\n this.store$.select(selectSecurityKey),\n ]),\n mergeMap(([, starterKit, addresses, applicationRegistrationId, securityKey]) => {\n const shippingAddress = this.createAddressRequest(addresses);\n const request: OrderSummaryRequest = {\n starterKitId: starterKit.id,\n isDepositPayment: !!starterKit.isDepositPayment,\n shippingAddress,\n applicationRegistrationId,\n securityKey,\n isReducedDepositPayment: !!starterKit.isReducedDepositPayment,\n isZeroDepositPayment: !!starterKit.isZeroDepositPayment,\n };\n return this.startNowAppService.fetchOrderSummary(request).pipe(\n map((res) => startNowAppActions.fetchOrderSummarySuccess({ res })),\n catchError(() => of(startNowAppActions.fetchOrderSummaryFailure())),\n );\n }),\n ),\n );\n\n fetchOrderSummaryFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchOrderSummaryFailure),\n tap(() => {\n this.toastr.error($localize`Order summary fetch`, $localize`Order summary fetch failed`);\n }),\n ),\n { dispatch: false },\n );\n\n fetchClientToken$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchClientToken),\n mergeMap(({ payload }) =>\n this.startNowAppService.fetchClientToken(payload).pipe(\n map((res) => startNowAppActions.fetchClientTokenSuccess({ payload: res })),\n catchError((error) => of(startNowAppActions.fetchClientTokenFailure({ error }))),\n ),\n ),\n ),\n );\n\n storeExternalPaymentInfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.storeExternalPaymentInfo),\n map(({ paymentInfo }) =>\n startNowAppActions.storeExternalPaymentInfoSuccess({ payload: paymentInfo }),\n ),\n ),\n );\n\n createOrder$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.createOrder),\n mergeMap(({ payload }) =>\n this.startNowAppService.createOrder(payload).pipe(\n map((res) => startNowAppActions.createOrderSuccess({ payload: res })),\n catchError((error) => of(startNowAppActions.createOrderFailure({ error }))),\n ),\n ),\n ),\n );\n\n createOrderFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.createOrderFailure),\n tap(({ error }) => {\n this.toastr.error(GenericErrorMessage.message, GenericErrorMessage.title);\n this.loggerService.error('Create order failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n updateOrder$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateOrder),\n mergeMap(({ payload }) =>\n this.startNowAppService.updateOrder(payload).pipe(\n map((response) => startNowAppActions.updateOrderSuccess({ response })),\n catchError((error) => of(startNowAppActions.updateOrderFailure({ error }))),\n ),\n ),\n ),\n );\n\n updateOrderFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateOrderFailure),\n tap(({ error }) => {\n this.toastr.error(GenericErrorMessage.message, GenericErrorMessage.title);\n this.loggerService.error('Update order failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n createPaymentMethod$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.createPaymentMethod),\n mergeMap(({ payload }) =>\n this.startNowAppService.createPaymentMethod(payload).pipe(\n map((res) => startNowAppActions.createPaymentMethodSuccess({ payload: res })),\n catchError((error) => of(startNowAppActions.createPaymentMethodFailure({ error }))),\n ),\n ),\n ),\n );\n\n createPaymentMethodFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.createPaymentMethodFailure),\n tap((error) => {\n this.toastr.error(\n getSnaErrorMessage(error?.error?.status),\n getSnaErrorTitle(error?.error?.status),\n );\n this.loggerService.error('Create payment method failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n createVoucher$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.createVoucher),\n mergeMap(({ payload }) =>\n this.startNowAppService.createVoucher(payload).pipe(\n map((res) => startNowAppActions.createVoucherSuccess({ payload: res })),\n catchError((error) => of(startNowAppActions.createVoucherFailure({ error }))),\n ),\n ),\n ),\n );\n\n createVoucherFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.createVoucherFailure),\n tap((error) => {\n this.toastr.error(\n getSnaErrorMessage(error?.error?.status),\n getSnaErrorTitle(error?.error?.status),\n ToastrConfigCenterBiggerPermanent,\n );\n this.loggerService.error('Create voucher failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n receiveVouchers$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.receiveVouchers),\n mergeMap(({ vouchers }) =>\n this.startNowAppService.receiveVouchers(vouchers).pipe(\n map((res) => startNowAppActions.receiveVouchersSuccess({ payload: res })),\n catchError((error) => of(startNowAppActions.receiveVouchersFailure({ error }))),\n ),\n ),\n ),\n );\n\n receiveVoucherFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.receiveVouchersFailure),\n tap((error) => {\n this.toastr.error(\n $localize`Receive voucher failed`,\n $localize`Please try again to recreate`,\n );\n this.loggerService.error('Receive voucher failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n logCardAttempt$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.logCardAttempt),\n mergeMap(({ request }) =>\n this.startNowAppService.logCardAttempt(request).pipe(\n map(() => startNowAppActions.logCardAttemptSuccess()),\n catchError(({ error }) => of(startNowAppActions.logCardAttemptFailure({ error }))),\n ),\n ),\n ),\n );\n\n logCardAttemptFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.logCardAttemptFailure),\n tap(() => this.loggerService.error('Log card attempt failure')),\n ),\n { dispatch: false },\n );\n\n checkIfCanSubmitConsultant$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.checkIfCanSubmitConsultant),\n mergeMap(({ payload }) =>\n this.startNowAppService.checkIfCanSubmitConsultant(payload).pipe(\n map((res) => startNowAppActions.checkIfCanSubmitConsultantSuccess({ payload: res })),\n catchError((error) =>\n of(startNowAppActions.checkIfCanSubmitConsultantFailure({ error })),\n ),\n ),\n ),\n ),\n );\n\n checkIfCanSubmitConsultantFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.checkIfCanSubmitConsultantFailure),\n tap(({ error }) => {\n if (!this.isVoucherLimitError(error.error.errorTypes)) {\n this.toastr.error(\n getCheckCanSubmitSnaErrorMessage(error?.error?.status),\n getCheckCanSubmitSnaErrorTitle(error?.error?.status),\n );\n }\n this.loggerService.error('Consultant submission check failed:', error);\n }),\n ),\n { dispatch: false },\n );\n\n submitConsultant$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.submitConsultant),\n mergeMap(({ payload }) =>\n this.startNowAppService.submitConsultant(payload).pipe(\n map((res) => startNowAppActions.submitConsultantSuccess({ payload: res })),\n catchError((error) => of(startNowAppActions.submitConsultantFailure({ error }))),\n ),\n ),\n ),\n );\n\n submitConsultantFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.submitConsultantFailure),\n tap(({ error }) => {\n this.toastr.error(\n getSnaSubmitErrorMessage(error?.error?.status),\n getSnaSubmitErrorTitle(error?.error?.status),\n );\n this.loggerService.error('Consultant submission failed:', error);\n }),\n ),\n { dispatch: false },\n );\n\n fetchVoucherBarcodeUrls$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchVoucherBarCodeUrls),\n mergeMap(({ applicationRegistrationId }) =>\n this.startNowAppService\n .fetchVoucherBarCodeUrls(applicationRegistrationId)\n .pipe(map((urls) => startNowAppActions.fetchVoucherBarCodeUrlsSuccess({ urls }))),\n ),\n catchError(() => of(startNowAppActions.fetchVoucherBarCodeUrlsFailure())),\n ),\n );\n\n fetchVoucherBarCodeUrlsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.fetchVoucherBarCodeUrlsFailure),\n tap(() => {\n this.toastr.error(\n $localize`Voucher url fetching error`,\n $localize`Fetch voucher urls fail`,\n );\n }),\n ),\n { dispatch: false },\n );\n\n updateSsnNumber$ = createEffect(() =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateSsnNumber),\n concatLatestFrom(() => [\n this.store$.select(selectApplicationRegistrationId),\n this.store$.select(selectSecurityKey),\n ]),\n mergeMap(([{ ssnNumber }, applicationRegistrationId, securityKey]) =>\n this.startNowAppService\n .saveSsnNumber({\n governmentId: ssnNumber,\n applicationRegistrationId,\n securityKey,\n })\n .pipe(\n map((res) =>\n startNowAppActions.updateSsnNumberSuccess({\n saveConsultantDataResult: {\n isSuccess: res.isSuccess,\n errors: res.errorTypes,\n },\n }),\n ),\n catchError((error) => of(startNowAppActions.updateSsnNumberFailure(error))),\n ),\n ),\n ),\n );\n\n updateSsnNumberFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(startNowAppActions.updateSsnNumberFailure),\n tap(({ error }) => {\n if (!error?.errorTypes?.includes(ConsultantSubmissionErrorType.InvalidSsnNumber)) {\n this.toastr.error(getSnaErrorMessage(error?.status), getSnaErrorTitle(error?.status));\n }\n this.loggerService.error('Update ssn number failed: ', error);\n }),\n ),\n { dispatch: false },\n );\n\n private mapConsultantFinderCriteria(\n { pageNumber, pageSize },\n otherCriteria: ConsultantFinderCriteria,\n ): FindConsultantByAreaRequest {\n return {\n ...otherCriteria,\n pageNumber: pageNumber.toString(),\n pageSize: pageSize.toString(),\n };\n }\n\n private mapConsultantFinderResults(res: FindConsultantResponse): {\n hasMore: boolean;\n items: Consultant[];\n } {\n return {\n hasMore: res.hasMore,\n items: res.items.map((item) => this.mapConsultantItemResponseToConsultant(item)),\n };\n }\n\n private mapFindConsultantByZipCodeResponse(\n res: FindConsultantByZipCodeResponse,\n ): FoundConsultantsByZipCode {\n return {\n hasMore: res.hasMore,\n skipConsultantList: res.skipDisplayItems,\n items: res.items?.map((item) => this.mapConsultantItemResponseToConsultant(item)),\n };\n }\n\n private mapConsultantItemResponseToConsultant(item: ConsultantDto): Consultant {\n if (item) {\n return {\n id: item.id,\n beeNumber: item.beeNumber,\n firstName: item.firstName,\n lastName: item.lastName,\n middleName: item.middleName,\n fullName: item.fullName,\n displayName: item.displayName,\n city: item.city,\n state: item.state,\n email: item.email,\n phoneNumber: item.phoneNumber,\n vanityName: item.vanityName,\n profileImage: item.profileImage,\n facebookUrl: item.facebookUrl,\n story: null,\n isPrivateRecruitment: item.isPrivateRecruitment,\n financialState: item.financialState,\n };\n }\n }\n\n private createAddressRequest(addresses: Address[]): AddressVerificationRequest {\n let shippingAddress: Address = addresses.find(\n (address) => address.addressType === AddressType.Shipping,\n );\n if (!shippingAddress) {\n shippingAddress = addresses.find((address) => address.addressType === AddressType.Home);\n }\n\n return shippingAddress;\n }\n\n private isVoucherLimitError(errorTypes: ConsultantSubmissionErrorType[]): boolean {\n return (\n errorTypes.includes(ConsultantSubmissionErrorType.DailyVoucherAmountReached) ||\n errorTypes.includes(ConsultantSubmissionErrorType.MonthlyVoucherAmountReached) ||\n errorTypes.includes(ConsultantSubmissionErrorType.YearlyVoucherAmountReached)\n );\n }\n\n constructor(\n private actions$: Actions,\n private startNowAppService: StartNowAppService,\n private store$: Store,\n private toastr: ToastrService,\n private loggerService: LoggerService,\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AuthService } from '@core/services/auth.service';\nimport { ConsultantService } from '@core/services/consultant.service';\nimport { UserService } from '@core/services/user.service';\nimport * as addressActions from '@core/store/address/address.actions';\nimport * as consultantActions from '@core/store/consultant/consultant.actions';\nimport * as userActions from '@core/store/user/user.actions';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { getErrorMessage } from '@shared/utils/get-error-message';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { AppState } from '..';\nimport { logOutResetConcluded } from '../auth/auth.actions';\nimport { selectCurrentConsultant } from '../consultant';\n\n@Injectable()\nexport class UserEffects {\n email: string;\n password: string;\n\n register$ = createEffect(() =>\n this.actions$.pipe(\n ofType(userActions.registerUser),\n concatLatestFrom(() => this.store$.select(selectCurrentConsultant)),\n exhaustMap(([{ payload, token }, currentConsultant]) =>\n this.userService\n .registerUser({\n firstName: payload.name.firstName,\n lastName: payload.name.lastName,\n email: payload.email.email,\n password: payload.password.password,\n newsletters: payload.subscriptions.newsletters,\n phoneNumber: payload.phoneNumber,\n activeConsultantProwessId: currentConsultant?.beeNumber,\n consultantName: currentConsultant?.fullName,\n consultantPhoneNumber: currentConsultant?.phoneNumber,\n consultantEmail: currentConsultant?.email,\n shareWithConsultant: payload.shareWithConsultant,\n token,\n })\n .pipe(\n map(() => {\n this.email = payload.email.email;\n this.password = payload.password.password;\n return userActions.registerUserSuccess({ payload: { email: this.email } });\n }),\n catchError((error) => of(userActions.registerUserFailure(error))),\n ),\n ),\n ),\n );\n\n registrationSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(userActions.registerUserSuccess),\n tap(({ payload }) => {\n this.router.navigateByUrl(`/login?prefill_email=${payload.email}`);\n }),\n ),\n { dispatch: false },\n );\n\n registerFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(userActions.registerUserFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), $localize`Registration error`);\n }),\n ),\n { dispatch: false },\n );\n\n fetchUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(userActions.fetchUser),\n mergeMap(() =>\n this.userService.fetchCurrentUser().pipe(\n map((user) => userActions.fetchUserSuccess({ user })),\n catchError((error) => of(userActions.fetchUserFailure(error))),\n ),\n ),\n ),\n );\n\n fetchUserSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(userActions.fetchUserSuccess),\n map(() => addressActions.fetchAddresses()),\n ),\n );\n\n fetchUserWithConsultant$ = createEffect(() =>\n this.actions$.pipe(\n ofType(userActions.fetchUserWithConsultant),\n mergeMap(() =>\n this.userService.fetchCurrentUser().pipe(\n concatLatestFrom(() => this.store$.select(selectCurrentConsultant)),\n mergeMap(([user, currentConsultant]) => {\n if (currentConsultant || !user.activeConsultantProwessId) {\n return of(userActions.fetchUserSuccess({ user }));\n } else {\n return this.consultantService\n .fetchConsultantById(user.activeConsultantProwessId, false)\n .pipe(\n map((consultant) =>\n userActions.fetchUserWithConsultantSuccess({ user, consultant }),\n ),\n );\n }\n }),\n catchError((error) => of(userActions.fetchUserWithConsultantFailure(error))),\n ),\n ),\n ),\n );\n\n fetchUserWithConsultantSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(userActions.fetchUserWithConsultantSuccess),\n switchMap(({ consultant }) => [\n consultantActions.fetchCurrentConsultantSuccess({\n consultant,\n isPartyEnabled: this.appInitService.Settings.ec.isPartyEnabled,\n }),\n addressActions.fetchAddresses(),\n ]),\n ),\n );\n\n fetchUserWithConsultantFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(userActions.fetchUserWithConsultantFailure),\n tap(() =>\n this.toastr.error($localize`Failed`, $localize`Fetching user with consultant data`),\n ),\n ),\n { dispatch: false },\n );\n\n updateUser$ = createEffect(() =>\n this.actions$.pipe(\n ofType(userActions.updateUser),\n mergeMap(({ user }) =>\n this.userService.updateUser(user).pipe(\n map((newUser) => userActions.updateUserSuccess({ user: newUser })),\n catchError((error) => of(userActions.updateUserFailure(error))),\n ),\n ),\n ),\n );\n\n updateUserSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(userActions.updateUserSuccess),\n tap(() => this.toastr.success($localize`Success`, $localize`Update profile`)),\n ),\n { dispatch: false },\n );\n\n updateUserFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(userActions.updateUserFailure),\n tap(({ error }) => this.toastr.error(getErrorMessage(error), $localize`Update user`)),\n ),\n { dispatch: false },\n );\n\n updateAssignedConsultant$ = createEffect(() =>\n this.actions$.pipe(\n ofType(userActions.updateAssignedConsultant),\n mergeMap(({ consultantProwessId }) =>\n this.userService.updateAssignedConsultant(consultantProwessId).pipe(\n map(() => userActions.updateAssignedConsultantSuccess()),\n catchError(() => of(userActions.updateAssignedConsultantFailure())),\n ),\n ),\n ),\n );\n\n updateAssignedConsultantSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(userActions.updateAssignedConsultantSuccess),\n tap(() => this.toastr.success($localize`Success`, $localize`Update Assigned consultant`)),\n ),\n { dispatch: false },\n );\n\n updateAssignedConsultantFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(userActions.updateAssignedConsultantFailure),\n tap(() => this.toastr.error($localize`Failed`, $localize`Update Assigned consultant`)),\n ),\n { dispatch: false },\n );\n\n resetUserState$ = createEffect(() =>\n this.actions$.pipe(\n ofType(userActions.resetUserStore),\n map(() => logOutResetConcluded({ state: 'userState' })),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private userService: UserService,\n private consultantService: ConsultantService,\n private appInitService: AppInitService,\n private toastr: ToastrService,\n private store$: Store,\n private authService: AuthService,\n private router: Router,\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { VoucherService } from '@core/services/voucher.service';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { selectVoucherRetryCounter } from '.';\nimport { AppState } from '..';\nimport * as voucherActions from './voucher.actions';\n\nconst RECEIVE_VOUCHER_RETRY_TIMEOUT = 100;\nconst RECEIVE_VOUCHER_RETRY_MAX_COUNT = 5;\n\n@Injectable()\nexport class VoucherEffects {\n //#region Create Voucher\n createVoucher$ = createEffect(() =>\n this.actions$.pipe(\n ofType(voucherActions.createVoucher),\n mergeMap(({ email }) =>\n this.voucherService.createVoucher(email).pipe(\n map((res) =>\n voucherActions.createVoucherSuccess({\n vouchers: res.voucherDetails,\n }),\n ),\n catchError((error) => of(voucherActions.createVoucherFailure(error))),\n ),\n ),\n ),\n );\n\n createVoucherSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(voucherActions.createVoucherSuccess),\n map(({ vouchers }) => voucherActions.generateVoucher({ vouchers })),\n ),\n );\n\n createVoucherFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(voucherActions.createVoucherFailure),\n tap(() =>\n this.toastr.error($localize`Failed to create voucher`, $localize`Voucher creation error`),\n ),\n ),\n { dispatch: false },\n );\n //#endregion\n\n //#region Generate Voucher\n generateVoucher$ = createEffect(() =>\n this.actions$.pipe(\n ofType(voucherActions.generateVoucher),\n mergeMap(({ vouchers }) =>\n this.voucherService.generateVoucher(vouchers).pipe(\n map((voucherTokens) => voucherActions.generateVoucherSuccess({ voucherTokens })),\n catchError(() => of(voucherActions.generateVoucherFailure())),\n ),\n ),\n ),\n );\n\n generateVoucherSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(voucherActions.generateVoucherSuccess),\n map(({ voucherTokens }) => voucherActions.receiveVoucher({ voucherTokens })),\n ),\n );\n\n generateVoucherFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(voucherActions.generateVoucherFailure),\n tap(() =>\n this.toastr.error(\n $localize`Failed to generate voucher`,\n $localize`Voucher generation error`,\n ),\n ),\n ),\n { dispatch: false },\n );\n //#endregion\n\n //#region Receive Voucher\n receiveVoucher$ = createEffect(() =>\n this.actions$.pipe(\n ofType(voucherActions.receiveVoucher),\n mergeMap(({ voucherTokens: tokens }) =>\n this.voucherService.receiveVoucher({ tokens }).pipe(\n map(\n ({ vouchers }) => {\n const remainingVouchers = vouchers.filter((voucher) => !voucher.hasBarcodeUrl).length;\n\n if (remainingVouchers === 0) {\n return voucherActions.receiveVoucherSuccess({ vouchers });\n } else {\n return voucherActions.retryReceiveVoucher({ voucherTokens: tokens });\n }\n },\n catchError(() => of(voucherActions.receiveVoucherFailure())),\n ),\n ),\n ),\n ),\n );\n\n retryReceiveVoucher$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(voucherActions.retryReceiveVoucher),\n concatLatestFrom(() => this.store$.select(selectVoucherRetryCounter)),\n map(([{ voucherTokens }, retryCounter]) => {\n if (retryCounter < RECEIVE_VOUCHER_RETRY_MAX_COUNT) {\n setTimeout(() => {\n this.store$.dispatch(\n voucherActions.receiveVoucher({\n voucherTokens,\n }),\n );\n }, RECEIVE_VOUCHER_RETRY_TIMEOUT);\n } else {\n this.store$.dispatch(voucherActions.receiveVoucherFailure());\n }\n }),\n ),\n { dispatch: false },\n );\n\n receiveVoucherFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(voucherActions.receiveVoucherFailure),\n tap(() =>\n this.toastr.error(\n $localize`Failed to receive vouchers.`,\n $localize`Receive voucher error`,\n ),\n ),\n ),\n { dispatch: false },\n );\n //#endregion\n\n //#regin Prevalidate Voucher\n prevalidateVoucher$ = createEffect(() =>\n this.actions$.pipe(\n ofType(voucherActions.prevalidateVoucher),\n switchMap(({ email }) =>\n this.voucherService.prevalidateVoucher(email).pipe(\n map(() => voucherActions.prevalidateVoucherSuccess()),\n catchError((error) => of(voucherActions.prevalidateVoucherFailure({ error }))),\n ),\n ),\n ),\n );\n\n prevalidateVoucherFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(voucherActions.prevalidateVoucherFailure),\n tap(() =>\n this.toastr.error(\n $localize`Failed to validate voucher`,\n $localize`Voucher validation error`,\n ),\n ),\n ),\n { dispatch: false },\n );\n\n //#endregion\n constructor(\n private actions$: Actions,\n private voucherService: VoucherService,\n private toastr: ToastrService,\n private store$: Store,\n ) {}\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { WishlistResponse } from '@core/dto/wishlist.dto';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WishlistService {\n baseUrl: string = environment.ecommerceBackendUri;\n options: object;\n\n constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeId: Locale) {\n this.options = {\n withCredentials: true,\n params: new HttpParams({\n fromObject: { culture: getCulture(localeId) },\n }),\n };\n }\n\n fetchWishlist(): Observable {\n return this.http.get(`${this.baseUrl}api/wishlist`, this.options);\n }\n\n addToWishList(sku: string): Observable {\n return this.http.post(\n `${this.baseUrl}api/wishlist/add`,\n {},\n {\n withCredentials: true,\n params: new HttpParams({ fromObject: { sku, culture: getCulture(this.localeId) } }),\n },\n );\n }\n\n mergeWishlist(): Observable {\n return this.http.post(`${this.baseUrl}api/wishlist/merge`, {}, this.options);\n }\n\n deleteFromWishList(sku: string): Observable {\n return this.http.delete(`${this.baseUrl}api/wishlist/${sku}`, this.options);\n }\n\n newWishlist(): Observable {\n return this.http.post(`${this.baseUrl}api/wishlist`, {}, this.options);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppcuesEvent } from '@core/constants/appcues-event';\nimport { AppcuesService } from '@core/services/appcues.service';\nimport { WishlistService } from '@core/services/wishlist.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { getErrorMessage } from '@shared/utils/get-error-message';\nimport { getErrorTitle } from '@shared/utils/get-error-title';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, map, mergeMap, tap } from 'rxjs/operators';\nimport { logOutResetConcluded } from '../auth/auth.actions';\nimport * as wishlistActions from './wishlist.actions';\n\n@Injectable()\nexport class WishlistEffects {\n fetchWishlist$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.fetchWishlist),\n mergeMap(() =>\n this.wishlistService.fetchWishlist().pipe(\n map((res) => wishlistActions.fetchWishlistSuccess({ wishListItems: res.wishListItems })),\n catchError((error) => of(wishlistActions.fetchWishlistFailure({ error }))),\n ),\n ),\n ),\n );\n\n fetchWishlistFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(wishlistActions.fetchWishlistFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n addToWishlist$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.addToWishList),\n mergeMap(({ sku }) =>\n this.wishlistService.addToWishList(sku).pipe(\n map((wishListResponse) => wishlistActions.addToWishlistSuccess({ wishListResponse })),\n catchError((error) => of(wishlistActions.addToWishlistFailure({ error }))),\n ),\n ),\n ),\n );\n\n addToWishlistSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(wishlistActions.addToWishlistSuccess),\n tap(() => {\n this.appcuesService.track(AppcuesEvent.AddItemToWishlist);\n }),\n ),\n { dispatch: false },\n );\n\n addToWishlistFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(wishlistActions.addToWishlistFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n mergeWishlist$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.mergeWishlist),\n mergeMap(() =>\n this.wishlistService.mergeWishlist().pipe(\n map(() => wishlistActions.mergeWishlistSuccess()),\n catchError((error) => of(wishlistActions.mergeWishlistFailure(error))),\n ),\n ),\n ),\n );\n\n mergeWishlistSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.mergeWishlistSuccess),\n map(() => wishlistActions.fetchWishlist()),\n ),\n );\n\n deleteFromWishlist$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.deleteFromWishlist),\n mergeMap((sku) =>\n this.wishlistService.deleteFromWishList(sku.sku).pipe(\n map((wishListResponse) =>\n wishlistActions.deleteFromWishlistSuccess({ wishListResponse }),\n ),\n catchError((error) => of(wishlistActions.deleteFromWishlistFailure({ error }))),\n ),\n ),\n ),\n );\n\n deleteFromWishlistFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(wishlistActions.deleteFromWishlistFailure),\n tap(({ error }) => {\n this.toastr.error(getErrorMessage(error), getErrorTitle(error));\n }),\n ),\n { dispatch: false },\n );\n\n newWishlist$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.newWishlist),\n exhaustMap(() =>\n this.wishlistService.newWishlist().pipe(\n map(() => wishlistActions.newWishlistSuccess()),\n catchError(() => of(wishlistActions.newWishlistFailure())),\n ),\n ),\n ),\n );\n\n newWishlistSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.newWishlistSuccess),\n map(() => wishlistActions.resetWishlistState()),\n ),\n );\n\n newWishlistFailure$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.newWishlistFailure),\n map(() => wishlistActions.resetWishlistState()),\n ),\n );\n\n resetWishlistState$ = createEffect(() =>\n this.actions$.pipe(\n ofType(wishlistActions.resetWishlistState),\n map(() => logOutResetConcluded({ state: 'wishlistState' })),\n ),\n );\n\n constructor(\n private actions$: Actions,\n private wishlistService: WishlistService,\n private toastr: ToastrService,\n private appcuesService: AppcuesService,\n ) {}\n}\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e1?t-1:0),o=1;o1?t-1:0),o=1;o=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n","import produce from 'immer';\nimport { AddressState } from './address-state-models';\nimport { AddressActionTypes } from './address.actions';\n\nexport const initialState: AddressState = {\n loading: false,\n addressIsFetched: false,\n addresses: [],\n countryStates: [],\n saveInProgress: false,\n modals: {\n addressValidation: null,\n },\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case AddressActionTypes.resetAddressState:\n return initialState;\n\n case AddressActionTypes.fetchAddresses:\n draft.loading = true;\n return draft;\n\n case AddressActionTypes.fetchAddressesSuccess:\n draft.addressIsFetched = true;\n draft.loading = false;\n draft.addresses = action.addresses;\n return draft;\n\n case AddressActionTypes.fetchAddressesFailure:\n draft.addressIsFetched = true;\n draft.loading = false;\n return draft;\n\n case AddressActionTypes.fetchCountryStatesSuccess:\n draft.countryStates = action.countryStates;\n return draft;\n\n case AddressActionTypes.resetAddressValidationModal:\n draft.modals.addressValidation = initialState.modals.addressValidation;\n return draft;\n\n case AddressActionTypes.createAddress:\n case AddressActionTypes.updateAddress:\n draft.saveInProgress = true;\n return draft;\n\n case AddressActionTypes.createAddressFailure:\n case AddressActionTypes.updateAddressFailure:\n draft.saveInProgress = false;\n return draft;\n\n case AddressActionTypes.addressValidation:\n draft.modals.addressValidation = action.addressValidation;\n draft.saveInProgress = false;\n return draft;\n\n case AddressActionTypes.createAddressSuccess:\n case AddressActionTypes.updateAddressSuccess:\n draft.saveInProgress = false;\n return draft;\n\n default:\n return;\n }\n}, initialState);\n","import produce from 'immer';\nimport { AuthState } from './auth-state-models';\nimport { AuthActionTypes } from './auth.actions';\n\nexport const initialState: AuthState = {\n loading: false,\n error: null,\n isNewLogin: false,\n resetConcluded: {\n addressState: false,\n cartState: false,\n checkoutState: false,\n userState: false,\n wishlistState: false,\n },\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case AuthActionTypes.logInFailed:\n draft.isAuthenticated = false;\n\n draft.error = action.error;\n return draft;\n\n case AuthActionTypes.logInSuccess:\n draft.isAuthenticated = true;\n\n draft.error = null;\n return draft;\n\n case AuthActionTypes.logOut:\n draft.isAuthenticated = false;\n draft.error = null;\n draft.resetConcluded = initialState.resetConcluded;\n return draft;\n\n case AuthActionTypes.logOutResetConcluded:\n draft.resetConcluded[action.state] = true;\n return draft;\n\n case AuthActionTypes.setAuthLoading:\n draft.loading = action.loading;\n return;\n\n case AuthActionTypes.setIsAuthenticated:\n draft.isAuthenticated = action.isAuthenticated;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { BlogState } from './blog-state-models';\nimport { BlogActionTypes } from './blog.actions';\n\nexport const initialState: BlogState = {\n blogs: {\n items: [],\n isAllFetched: false,\n },\n blogCategories: [{ title: 'All Blogs', urlName: '' }],\n isBlogCategoriesFetched: false,\n blogDetails: {\n item: null,\n isLoading: false,\n },\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case BlogActionTypes.fetchBlogsSuccess:\n draft.blogs.items = action.isFirstPage\n ? action.items\n : [...draft.blogs.items, ...action.items];\n draft.blogs.isAllFetched = action.isFirstPage\n ? initialState.blogs.isAllFetched\n : action.items.length < action.pageSize;\n return draft;\n\n case BlogActionTypes.resetBlogs:\n draft.blogs = initialState.blogs;\n return draft;\n\n case BlogActionTypes.fetchBlogCategories:\n draft.isBlogCategoriesFetched = false;\n return;\n\n case BlogActionTypes.fetchBlogCategoriesSuccess:\n draft.isBlogCategoriesFetched = true;\n draft.blogCategories = [...initialState.blogCategories, ...action.blogCategories];\n return draft;\n\n case BlogActionTypes.fetchBlogCategoriesFailure:\n draft.isBlogCategoriesFetched = false;\n return;\n\n case BlogActionTypes.fetchBlogDetails:\n draft.blogDetails.isLoading = true;\n return draft;\n\n case BlogActionTypes.fetchBlogDetailsSuccess:\n draft.blogDetails.isLoading = false;\n draft.blogDetails.item = action.item;\n return draft;\n\n case BlogActionTypes.fetchBlogDetailsFailure:\n draft.blogDetails.isLoading = false;\n return draft;\n\n case BlogActionTypes.resetBlogDetails:\n draft.blogDetails = initialState.blogDetails;\n return draft;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { CartState } from './cart-state-models';\nimport { CartActionTypes } from './cart.actions';\n\nexport const initialState: CartState = {\n loading: false,\n addSurpriseBuyLoading: false,\n cart: null,\n modals: {\n addToCartConfirm: {\n loading: false,\n data: null,\n },\n },\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case CartActionTypes.resetCartState:\n case CartActionTypes.createCart:\n return initialState;\n\n case CartActionTypes.fetchCartSuccess:\n draft.cart = action.cart;\n return draft;\n\n case CartActionTypes.updateOrderLine:\n draft.loading = true;\n return;\n\n case CartActionTypes.updateOrderLineSuccess:\n draft.cart = action.cart;\n draft.loading = false;\n return draft;\n\n case CartActionTypes.updateOrderLineFailure:\n draft.loading = false;\n return;\n\n case CartActionTypes.addToCart:\n draft.modals.addToCartConfirm.data = null;\n draft.modals.addToCartConfirm.loading = true;\n return draft;\n\n case CartActionTypes.addToCartSuccess:\n draft.modals.addToCartConfirm.data = action.payload;\n draft.modals.addToCartConfirm.loading = false;\n return draft;\n\n case CartActionTypes.addToCartFailure:\n draft.modals.addToCartConfirm.loading = false;\n return draft;\n\n case CartActionTypes.deleteFromCart:\n draft.loading = true;\n return;\n\n case CartActionTypes.deleteFromCartSuccess:\n draft.cart = action.cart;\n draft.loading = false;\n return draft;\n\n case CartActionTypes.deleteFromCartFailure:\n draft.loading = false;\n return;\n\n case CartActionTypes.setAddToCartConfirmModal:\n draft.modals.addToCartConfirm.data = action.payload;\n draft.modals.addToCartConfirm.loading = false;\n return draft;\n\n case CartActionTypes.fetchProductsRecommendationsSuccess:\n draft.cart.recommendations = action.recommendations;\n return;\n\n case CartActionTypes.addSurpriseBuy:\n draft.addSurpriseBuyLoading = true;\n return;\n\n case CartActionTypes.addSurpriseBuySuccess:\n draft.cart = action.cart;\n draft.addSurpriseBuyLoading = false;\n return draft;\n\n case CartActionTypes.addSurpriseBuyFailure:\n draft.addSurpriseBuyLoading = false;\n return draft;\n\n default:\n return draft;\n }\n}, initialState);\n","import { PaymentType } from '@core/enums/payment-type.enum';\nimport produce from 'immer';\nimport { CheckoutState } from './checkout-state-models';\nimport { CheckoutActionTypes } from './checkout.actions';\n\nexport const initialState: CheckoutState = {\n personalInfo: null,\n saveSuccessful: false,\n personalInfoModal: {\n addressValidation: null,\n },\n billingInfo: null,\n addressErrorType: null,\n loginModal: {\n isRegistered: false,\n checkEmailFailedErrorType: null,\n },\n savedAddressesModal: {\n currentAddress: null,\n },\n emailChecked: false,\n isLoading: false,\n paymentType: PaymentType.CreditOrDebitCard,\n isRegisteredUserWithoutLogin: false,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case CheckoutActionTypes.updatePersonalInfo:\n draft.isLoading = true;\n return;\n\n case CheckoutActionTypes.updatePersonalInfoSuccess:\n draft.personalInfo = action.personalInfo;\n draft.saveSuccessful = true;\n draft.isLoading = false;\n return;\n\n case CheckoutActionTypes.updatePersonalInfoFailure:\n if (action.error.ErrorType) {\n draft.addressErrorType = action.error.ErrorType;\n }\n draft.isLoading = false;\n return;\n\n case CheckoutActionTypes.cancelPersonalInfoUpdate:\n draft.isLoading = false;\n return;\n\n case CheckoutActionTypes.resetCheckoutState:\n return initialState;\n\n case CheckoutActionTypes.resetSaveSuccessful:\n draft.saveSuccessful = false;\n return draft;\n\n case CheckoutActionTypes.checkoutAddressValidation:\n draft.personalInfoModal.addressValidation = action.addressValidation;\n return;\n\n case CheckoutActionTypes.resetCheckoutAddressValidationModal:\n draft.personalInfoModal = initialState.personalInfoModal;\n return;\n\n case CheckoutActionTypes.openSavedAddressesModal:\n draft.savedAddressesModal.currentAddress = action.currentAddress;\n return;\n\n case CheckoutActionTypes.resetSavedAddressesModal:\n draft.savedAddressesModal = initialState.savedAddressesModal;\n return;\n\n case CheckoutActionTypes.checkUserByEmail:\n draft.emailChecked = false;\n return;\n\n case CheckoutActionTypes.checkUserByEmailSuccess:\n draft.loginModal.isRegistered = true;\n draft.emailChecked = true;\n return;\n\n case CheckoutActionTypes.checkUserByEmailFailure:\n draft.loginModal.checkEmailFailedErrorType = action.error?.ErrorType;\n draft.emailChecked = true;\n return;\n\n case CheckoutActionTypes.resetEmailCheck:\n draft.loginModal.checkEmailFailedErrorType =\n initialState.loginModal.checkEmailFailedErrorType;\n draft.emailChecked = initialState.emailChecked;\n return;\n\n case CheckoutActionTypes.resetLoginModal:\n draft.loginModal.isRegistered = false;\n return;\n\n case CheckoutActionTypes.setPaymentType:\n draft.paymentType = action.paymentType;\n return;\n\n case CheckoutActionTypes.userContinuesWithoutLogin:\n draft.isRegisteredUserWithoutLogin = true;\n return draft;\n\n case CheckoutActionTypes.storeBillingAddress:\n draft.billingInfo = action.billingInfo;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { ConditionalContent, ConditionalContentState } from './conditional-content-state-models';\nimport { ConditionalContentActionTypes } from './conditional-content.actions';\n\nexport const initialState: ConditionalContentState = {\n conditionalContent: [],\n error: null,\n fetched: 0,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case ConditionalContentActionTypes.fetchConditionalContentSuccess:\n const contents: ConditionalContent[] = [...draft.conditionalContent, ...action.content];\n draft.conditionalContent = contents.sort((a, b) => a.displaySequence - b.displaySequence);\n draft.fetched++;\n return draft;\n\n case ConditionalContentActionTypes.resetConditionalContentState:\n return initialState;\n }\n}, initialState);\n","import { CartRoutes } from '@core/constants/routes.const';\nimport { ConsultantLocatorErrorType } from '@core/enums/consultant-locator-error-type.enum';\nimport { LocalStorageKey } from '@core/enums/local-storage-key.enum';\nimport { SuccessfulStatus } from '@core/enums/successful-status.enum';\nimport { produce } from 'immer';\nimport { ConsultantState } from './consultant-state-models';\nimport { ConsultantActionTypes } from './consultant.actions';\n\nexport const initialState: ConsultantState = {\n currentConsultant: null,\n partiesLoading: false,\n assignedConsultant: null,\n isCurrentConsultantFetched: false,\n isAssignedConsultFetched: false,\n isConsultantCheckingDone: true,\n isCurrentConsultantCleared: false,\n isOrderCreditToHostParty: null,\n fetchCurrentConsultantSuccessfulStatus: SuccessfulStatus.BeforeCall,\n party: null,\n consultantLocatorErrorType: ConsultantLocatorErrorType.None,\n consultantFinder: {\n loading: false,\n hasMore: true,\n results: [],\n },\n isOutdatedData: true,\n openPartyVerificationFailedModal: false,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case ConsultantActionTypes.fetchCurrentConsultantByVanityName:\n case ConsultantActionTypes.fetchCurrentConsultantByLoginName:\n draft.fetchCurrentConsultantSuccessfulStatus = SuccessfulStatus.BeforeCall;\n draft.isConsultantCheckingDone = false;\n return;\n\n case ConsultantActionTypes.fetchCurrentConsultantSuccess:\n draft.isCurrentConsultantCleared = false;\n draft.currentConsultant = action.consultant;\n draft.isCurrentConsultantFetched = true;\n draft.isConsultantCheckingDone = true;\n draft.fetchCurrentConsultantSuccessfulStatus = SuccessfulStatus.Success;\n draft.isOutdatedData = action.isPartyEnabled;\n return;\n\n case ConsultantActionTypes.fetchCurrentConsultantFailure:\n draft.isCurrentConsultantCleared = false;\n draft.isCurrentConsultantFetched = true;\n draft.fetchCurrentConsultantSuccessfulStatus = SuccessfulStatus.Failed;\n draft.currentConsultant = initialState.currentConsultant;\n draft.isOutdatedData = false;\n return;\n\n case ConsultantActionTypes.resetCurrentConsultant:\n draft.isCurrentConsultantCleared = true;\n draft.currentConsultant = initialState.currentConsultant;\n draft.isCurrentConsultantFetched = action.isCurrentConsultantFetched;\n draft.party = initialState.party;\n return;\n\n case ConsultantActionTypes.resetFetchCurrentConsultantSuccessfulStatus:\n draft.fetchCurrentConsultantSuccessfulStatus =\n initialState.fetchCurrentConsultantSuccessfulStatus;\n return;\n\n case ConsultantActionTypes.fetchAssignedConsultantSuccess:\n draft.assignedConsultant = action.consultant;\n draft.isAssignedConsultFetched = true;\n return;\n\n case ConsultantActionTypes.fetchAssignedConsultantFailure:\n draft.isAssignedConsultFetched = true;\n return;\n\n case ConsultantActionTypes.resetAssignedConsultant:\n draft.assignedConsultant = initialState.assignedConsultant;\n return;\n\n case ConsultantActionTypes.fetchAssignedConsultantOnCheckout:\n draft.isOutdatedData = true;\n return;\n\n case ConsultantActionTypes.fetchAssignedConsultantOnCheckoutSuccess:\n draft.currentConsultant = action.consultant;\n draft.isOutdatedData = false;\n return;\n\n case ConsultantActionTypes.fetchAssignedConsultantOnCheckoutFailure:\n draft.assignedConsultant = initialState.assignedConsultant;\n draft.currentConsultant = initialState.currentConsultant;\n draft.isOutdatedData = false;\n return;\n\n case ConsultantActionTypes.locateConsultant:\n draft.consultantFinder.loading = true;\n draft.consultantFinder.results = initialState.consultantFinder.results;\n return;\n\n case ConsultantActionTypes.findConsultant:\n draft.consultantFinder.loading = true;\n if (action.payload.pageNumber === 1) {\n draft.consultantFinder.results = initialState.consultantFinder.results;\n }\n return;\n\n case ConsultantActionTypes.findConsultantSuccess:\n case ConsultantActionTypes.locateConsultantSuccess:\n draft.consultantFinder.loading = false;\n draft.consultantFinder.results = [...draft.consultantFinder.results, ...action.results];\n draft.consultantFinder.hasMore = action.hasMore;\n return;\n\n case ConsultantActionTypes.findConsultantFailure:\n draft.consultantFinder.loading = false;\n return;\n\n case ConsultantActionTypes.locateConsultantFailure:\n draft.consultantLocatorErrorType = action.error.status;\n draft.consultantFinder.loading = false;\n return;\n\n case ConsultantActionTypes.resetConsultantFinderState:\n draft.consultantFinder = initialState.consultantFinder;\n return;\n\n case ConsultantActionTypes.resetConsultantLocatorErrorType:\n draft.consultantLocatorErrorType = initialState.consultantLocatorErrorType;\n return;\n\n case ConsultantActionTypes.fetchConsultantParties:\n draft.partiesLoading = true;\n return;\n\n case ConsultantActionTypes.fetchConsultantPartiesSuccess:\n draft.currentConsultant.parties = action.parties;\n draft.party = action.selectedParty;\n draft.partiesLoading = false;\n draft.isOutdatedData = false;\n return;\n\n case ConsultantActionTypes.fetchConsultantPartiesFailure:\n draft.partiesLoading = true;\n draft.isOutdatedData = false;\n if (\n window.localStorage.getItem(LocalStorageKey.partyId) &&\n window.location.pathname === `/${CartRoutes.Checkout}`\n ) {\n draft.openPartyVerificationFailedModal = true;\n }\n return;\n\n case ConsultantActionTypes.resetConsultantPartyState:\n draft.currentConsultant.parties = initialState.currentConsultant.parties;\n draft.partiesLoading = initialState.partiesLoading;\n draft.party = initialState.party;\n return;\n\n case ConsultantActionTypes.selectParty:\n draft.party = action.party;\n return;\n\n case ConsultantActionTypes.resetPartyAndIsOrderCreditToHostParty:\n draft.party = initialState.party;\n draft.isOrderCreditToHostParty = initialState.isOrderCreditToHostParty;\n return;\n\n case ConsultantActionTypes.resetParty:\n draft.party = initialState.party;\n return;\n\n case ConsultantActionTypes.selectIsOrderCreditToHostParty:\n draft.isOrderCreditToHostParty = action.isOrderCreditToHostParty;\n return;\n\n case ConsultantActionTypes.consultantCheckingInProgress:\n draft.isConsultantCheckingDone = false;\n return;\n\n case ConsultantActionTypes.consultantCheckingIsDone:\n draft.isConsultantCheckingDone = true;\n return;\n\n case ConsultantActionTypes.setIsOutdatedData:\n draft.isOutdatedData = action.isOutdatedData;\n return;\n\n case ConsultantActionTypes.resetOpenPartyVerificationFailedModal:\n draft.openPartyVerificationFailedModal = initialState.openPartyVerificationFailedModal;\n return;\n\n default:\n return;\n }\n}, initialState);\n","import { ContactUsState, SendingContactUsMessage } from './contact-us-state-models';\nimport { produce } from 'immer';\nimport { ContactUsActionType } from './contact-us.actions';\n\nexport const initialState: ContactUsState = {\n sendingMessage: SendingContactUsMessage.notReady,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case ContactUsActionType.sendEmail:\n draft.sendingMessage = SendingContactUsMessage.inProgress;\n return;\n\n case ContactUsActionType.sendEmailSuccess:\n draft.sendingMessage = SendingContactUsMessage.successful;\n return;\n\n case ContactUsActionType.sendEmailFailure:\n draft.sendingMessage = SendingContactUsMessage.failure;\n return;\n\n case ContactUsActionType.resetContactUsState:\n return initialState;\n\n default:\n return;\n }\n}, initialState);\n","import produce from 'immer';\nimport { FooterLink } from './footer-state-models';\nimport { FooterActionTypes } from './footer.actions';\n\nexport interface FooterState {\n primaryFooterLinks: FooterLink[];\n secondaryFooterLinks: FooterLink[];\n error: any;\n}\n\nexport const initialState: FooterState = {\n primaryFooterLinks: null,\n secondaryFooterLinks: null,\n error: null,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case FooterActionTypes.fetchPrimaryFooterLinksSuccess:\n draft.primaryFooterLinks = action.links;\n return draft;\n\n case FooterActionTypes.fetchSecondaryFooterLinksSuccess:\n draft.secondaryFooterLinks = action.links;\n return draft;\n\n case FooterActionTypes.fetchFooterLinksError:\n draft.error = action.error;\n return draft;\n\n default:\n return draft;\n }\n}, initialState);\n","import { environment } from '@env';\nimport { MetaReducer } from '@ngrx/store';\nimport produce from 'immer';\nimport { Magazine } from './magazine-state-models';\nimport { MagazineActionTypes } from './magazine.actions';\n\nexport interface MagazineState {\n items: Magazine[];\n isAllFetched: boolean;\n error: any;\n}\n\nexport const initialState: MagazineState = {\n items: [],\n isAllFetched: false,\n error: null,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case MagazineActionTypes.fetchMagazinePageSuccess:\n draft.items = draft.items\n .concat(action.magazines)\n .sort((a, b) => +new Date(b.dateCreated) - +new Date(a.dateCreated));\n draft.isAllFetched = action.magazines.length < action.pageSize;\n return draft;\n\n case MagazineActionTypes.fetchMagazinesPageError:\n draft.error = action.error;\n return draft;\n\n case MagazineActionTypes.resetMagazineStore:\n draft.items = initialState.items;\n draft.isAllFetched = initialState.isAllFetched;\n return draft;\n\n default:\n return draft;\n }\n}, initialState);\n\nexport const metaReducers: MetaReducer[] = !environment.production ? [] : [];\n","import { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\n\nexport const OrderSubmissionErrorTypes: PhExceptionErrorType[] = [\n PhExceptionErrorType.OrderSubmitTransactionFailedException,\n PhExceptionErrorType.OrderSubmitCvvDoesNotMatchException,\n PhExceptionErrorType.OrderSubmitZipDoesNotMatchException,\n PhExceptionErrorType.PipelineException,\n];\n","import { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\n\nexport const PaymentErrorTypes: PhExceptionErrorType[] = [\n PhExceptionErrorType.PaymentTransactionFailedException,\n PhExceptionErrorType.PaymentTransactionFailedHardException,\n PhExceptionErrorType.PaymentTransactionFailedNoneException,\n PhExceptionErrorType.PaymentTransactionFailedSoftException,\n PhExceptionErrorType.PaymentTransactionFailedUnrecognizedException,\n];\n","import { OrderSubmissionErrorTypes } from '@core/constants/ec-order-submission-error-types';\nimport { PaymentErrorTypes } from '@core/constants/ec-payment-error-types';\nimport produce from 'immer';\nimport { OrderState, SubmittedOrderStatus } from './order-state-models';\nimport { OrderActionTypes } from './order.actions';\n\nexport const initialState: OrderState = {\n loading: false,\n isSubmitDisabled: false,\n orderHistory: [],\n ccOrderHistory: [],\n orderDetails: null,\n ccOrderDetails: undefined,\n hasPaymentError: false,\n submittedOrder: {\n status: SubmittedOrderStatus.initial,\n submissionErrorType: null,\n submittedOrderId: null,\n cart: null,\n updatedItems: [],\n deletedItems: [],\n },\n partyOrderPayment: {\n fetched: null,\n status: SubmittedOrderStatus.initial,\n partyOrderData: null,\n partyOrderError: null,\n partyOrderBaseData: null,\n },\n shippedCartonDetails: {\n shippedCartonDetailsData: {\n masterOrderId: null,\n backorderItems: [],\n shippedCartons: [],\n pickingSlipDocuments: [],\n },\n shippedCartonError: null,\n },\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case OrderActionTypes.resetOrderHistoryState:\n draft.orderHistory = initialState.orderHistory;\n return draft;\n\n case OrderActionTypes.fetchOrderHistory:\n draft.loading = true;\n return;\n\n case OrderActionTypes.fetchOrderHistorySuccess:\n draft.loading = false;\n draft.orderHistory = action.payload;\n return;\n\n case OrderActionTypes.fetchOrderHistoryFailure:\n draft.loading = false;\n return;\n\n case OrderActionTypes.fetchCCOrderHistory:\n draft.loading = true;\n return;\n\n case OrderActionTypes.fetchCCOrderHistorySuccess:\n draft.loading = false;\n draft.ccOrderHistory = action.payload;\n return;\n\n case OrderActionTypes.fetchCCOrderHistoryFailure:\n draft.loading = false;\n return;\n\n case OrderActionTypes.resetOrderDetailsState:\n draft.orderDetails = initialState.orderDetails;\n return draft;\n\n case OrderActionTypes.fetchOrderDetails:\n draft.loading = true;\n draft.orderDetails = initialState.orderDetails;\n return;\n\n case OrderActionTypes.fetchOrderDetailsSuccess:\n draft.loading = false;\n draft.orderDetails = action.payload;\n return;\n\n case OrderActionTypes.fetchOrderDetailsFailure:\n draft.loading = false;\n return;\n\n case OrderActionTypes.resetCCOrderDetailsState:\n draft.ccOrderDetails = initialState.ccOrderDetails;\n return draft;\n\n case OrderActionTypes.fetchCCOrderDetails:\n draft.loading = true;\n draft.ccOrderDetails = initialState.ccOrderDetails;\n return;\n\n case OrderActionTypes.fetchCCOrderDetailsSuccess:\n draft.loading = false;\n draft.ccOrderDetails = action.payload;\n return;\n\n case OrderActionTypes.fetchCCOrderDetailsFailure:\n draft.loading = false;\n return;\n\n case OrderActionTypes.submitOrder:\n draft.submittedOrder.status = SubmittedOrderStatus.inProgress;\n return;\n\n case OrderActionTypes.submitOrderSuccess:\n draft.submittedOrder.status = SubmittedOrderStatus.success;\n draft.submittedOrder.submittedOrderId = action.payload.response.orderId;\n draft.submittedOrder.cart = action.payload.cart;\n return;\n\n case OrderActionTypes.submitOrderFailure:\n draft.submittedOrder.status = SubmittedOrderStatus.failure;\n draft.submittedOrder.submissionErrorType = action.error.error?.ErrorType;\n if (OrderSubmissionErrorTypes.includes(action.error.error?.ErrorType)) {\n draft.isSubmitDisabled = true;\n }\n if (PaymentErrorTypes.includes(action.error.error?.ErrorType)) {\n draft.hasPaymentError = true;\n }\n draft.submittedOrder.updatedItems = action.updatedItems;\n draft.submittedOrder.deletedItems = action.deletedItems;\n return;\n\n case OrderActionTypes.setSubmissionStatus:\n draft.submittedOrder.status = action.status;\n return;\n\n case OrderActionTypes.resetSubmissionStatus:\n draft.submittedOrder.status = initialState.submittedOrder.status;\n draft.isSubmitDisabled = initialState.isSubmitDisabled;\n return;\n\n case OrderActionTypes.resetIsSubmitDisabledAndErrorType:\n draft.isSubmitDisabled = initialState.isSubmitDisabled;\n draft.submittedOrder.submissionErrorType = null;\n return;\n\n case OrderActionTypes.resetSubmittedOrderState:\n draft.submittedOrder = initialState.submittedOrder;\n return;\n\n case OrderActionTypes.resetFailedOrderItems:\n draft.submittedOrder.deletedItems = [];\n draft.submittedOrder.updatedItems = [];\n return;\n\n case OrderActionTypes.fetchPartyOrderData:\n draft.partyOrderPayment = initialState.partyOrderPayment;\n draft.loading = true;\n return;\n\n case OrderActionTypes.fetchPartyOrderDataSuccess:\n draft.partyOrderPayment.fetched = true;\n draft.partyOrderPayment.partyOrderData = action.partyOrderData;\n draft.loading = false;\n return;\n\n case OrderActionTypes.fetchPartyOrderDataFailure:\n draft.loading = false;\n draft.partyOrderPayment.fetched = false;\n draft.partyOrderPayment.partyOrderError = action.error;\n return;\n\n case OrderActionTypes.resetPartyOrderFetched:\n draft.partyOrderPayment.fetched = initialState.partyOrderPayment.fetched;\n draft.partyOrderPayment.partyOrderData = initialState.partyOrderPayment.partyOrderData;\n draft.partyOrderPayment.partyOrderError = initialState.partyOrderPayment.partyOrderError;\n return;\n\n case OrderActionTypes.storePartyOrderBaseData:\n draft.partyOrderPayment.partyOrderBaseData = action.payload;\n return;\n\n case OrderActionTypes.submitPartyOrder:\n draft.loading = true;\n draft.partyOrderPayment.status = SubmittedOrderStatus.inProgress;\n return;\n\n case OrderActionTypes.submitPartyOrderSuccess:\n draft.partyOrderPayment.status = SubmittedOrderStatus.success;\n draft.loading = false;\n return;\n\n case OrderActionTypes.submitPartyOrderFailure:\n draft.partyOrderPayment.status = SubmittedOrderStatus.failure;\n draft.loading = false;\n return;\n\n case OrderActionTypes.fetchShippedCartonsData:\n draft.shippedCartonDetails.shippedCartonError = null;\n draft.loading = true;\n return;\n\n case OrderActionTypes.fetchShippedCartonsSuccess:\n draft.shippedCartonDetails.shippedCartonDetailsData = action.payload;\n draft.loading = false;\n return;\n\n case OrderActionTypes.fetchShippedCartonsFailure:\n draft.shippedCartonDetails.shippedCartonError = action.error;\n draft.loading = false;\n return;\n\n case OrderActionTypes.resetHasPaymentError:\n draft.hasPaymentError = initialState.hasPaymentError;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { PaymentMethodType, PaymentState } from './payment-state-models';\nimport { PaymentActionTypes } from './payment.actions';\nimport { mapCreateCardPaymentMethodError } from './payment.effects';\n\nexport const initialState: PaymentState = {\n customerId: null,\n partyOrderCustomerId: null,\n loading: false,\n paymentInfo: null,\n cardInfo: {},\n createdCardPaymentMethod: null,\n hasSavedCard: false,\n paymentMethods: {\n loading: false,\n items: [],\n createFailed: false,\n },\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case PaymentActionTypes.fetchClientToken:\n case PaymentActionTypes.fetchPartyOrderClientToken:\n return draft;\n\n case PaymentActionTypes.fetchClientTokenSuccess:\n draft.cardInfo.clientToken = action.payload.clientToken;\n draft.customerId = action.payload.customerId;\n return draft;\n\n case PaymentActionTypes.fetchPartyOrderClientTokenSuccess:\n draft.cardInfo.clientToken = action.payload.clientToken;\n draft.partyOrderCustomerId = action.payload.customerId;\n return draft;\n\n case PaymentActionTypes.fetchClientTokenFailure:\n case PaymentActionTypes.fetchPartyOrderClientTokenFailure:\n return draft;\n\n case PaymentActionTypes.resetCardPaymentInfo:\n draft.cardInfo = initialState.cardInfo;\n draft.hasSavedCard = initialState.hasSavedCard;\n return draft;\n\n case PaymentActionTypes.fetchPaymentMethods:\n draft.paymentMethods.loading = true;\n draft.paymentMethods.items = [];\n return;\n\n case PaymentActionTypes.fetchPaymentMethodsSuccess:\n draft.paymentMethods.loading = false;\n draft.paymentMethods.items = action.paymentMethods;\n return;\n\n case PaymentActionTypes.fetchPaymentMethodsFailure:\n draft.paymentMethods.loading = false;\n return;\n\n case PaymentActionTypes.storePaymentInfoSuccess:\n draft.paymentInfo = action.payload;\n draft.hasSavedCard = true;\n return;\n\n case PaymentActionTypes.storePaymentInfoFailure:\n draft.paymentInfo = initialState.paymentInfo;\n draft.hasSavedCard = false;\n return;\n\n case PaymentActionTypes.storeCardPaymentInfo:\n draft.cardInfo.cardType = action.payload;\n return;\n\n case PaymentActionTypes.resetPaymentInfo:\n draft.paymentInfo = initialState.paymentInfo;\n return;\n\n case PaymentActionTypes.resetPaymentMethods:\n draft.paymentMethods = initialState.paymentMethods;\n return;\n\n case PaymentActionTypes.createPaymentMethod:\n draft.paymentMethods.loading = true;\n draft.paymentMethods.createFailed = false;\n return;\n\n case PaymentActionTypes.createPaymentMethodSuccess:\n draft.paymentMethods.loading = false;\n draft.createdCardPaymentMethod = action.payload;\n return;\n\n case PaymentActionTypes.createPaymentMethodFailure:\n draft.paymentMethods.loading = false;\n draft.createdCardPaymentMethod = mapCreateCardPaymentMethodError(action.error.error);\n draft.paymentMethods.createFailed = true;\n return;\n\n case PaymentActionTypes.resetCreatedPaymentMethod:\n draft.createdCardPaymentMethod = initialState.createdCardPaymentMethod;\n draft.paymentMethods.createFailed = initialState.paymentMethods.createFailed;\n return;\n\n case PaymentActionTypes.setAsDefault:\n const newItems = draft.paymentMethods.items.map((item) => ({\n ...item,\n type: item.id === action.token ? PaymentMethodType.default : PaymentMethodType.other,\n }));\n draft.paymentMethods.items = newItems;\n return;\n\n case PaymentActionTypes.deletePaymentMethod:\n draft.paymentMethods.loading = true;\n draft.paymentMethods.items = draft.paymentMethods.items.filter(\n (item) => item.id !== action.token,\n );\n return;\n\n case PaymentActionTypes.createCheckoutPayPalOrderSuccess:\n draft.paymentInfo = {\n ...draft.paymentInfo,\n order: action.payload,\n };\n return;\n\n case PaymentActionTypes.updateCheckoutPayPalOrderSuccess:\n draft.paymentInfo = {\n ...draft.paymentInfo,\n order: { orderId: action.payload.payPalOrderId },\n };\n return;\n\n case PaymentActionTypes.createPartyOrderPayPalOrderSuccess:\n draft.paymentInfo = {\n ...draft.paymentInfo,\n order: { orderId: action.payload.payPalOrderId },\n };\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { ProductReviewState } from './product-review-state-models';\nimport { ProductReviewActionTypes } from './product-review.action';\n\nexport const initialState: ProductReviewState = {\n loading: false,\n productReviews: [],\n isAllFetched: false,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case ProductReviewActionTypes.resetProductReviewState:\n return initialState;\n\n case ProductReviewActionTypes.fetchProductReviews:\n draft.productReviews = initialState.productReviews;\n draft.loading = true;\n return;\n\n case ProductReviewActionTypes.fetchMoreProductReviews:\n draft.loading = true;\n return;\n\n case ProductReviewActionTypes.fetchProductReviewsSuccess:\n draft.loading = false;\n draft.productReviews = [...draft.productReviews, ...action.productReviews];\n draft.isAllFetched = action.productReviews.length < action.pageSize;\n return;\n\n case ProductReviewActionTypes.fetchProductReviewsFailure:\n draft.loading = false;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { ProductState } from './product-state-models';\nimport { ProductActionTypes } from './product.actions';\n\nexport const initialState: ProductState = {\n catalogName: null,\n products: {\n loading: false,\n items: [],\n isAllFetched: false,\n },\n catalogs: {\n items: [],\n isAllFetched: false,\n loading: false,\n },\n productDetails: {\n isLoading: false,\n item: null,\n recommendations: [],\n relatedRecipes: [],\n moreFromCollection: [],\n },\n modals: {\n productQuickView: null,\n },\n customerSpecialOffersTypes: {\n ecommerce: {\n items: [],\n loading: false,\n },\n healthySavings: {\n items: [],\n loading: false,\n },\n collectAndSave: {\n items: [],\n loading: false,\n },\n regularCustomerSpecial: {\n items: [],\n loading: false,\n },\n },\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case ProductActionTypes.fetchProducts:\n draft.products.loading = true;\n return;\n\n case ProductActionTypes.fetchProductsSuccess:\n draft.products.items = [...draft.products.items, ...action.payload];\n draft.catalogName = action.catalogName;\n draft.products.isAllFetched = action.payload.length < action.pageSize;\n draft.products.loading = false;\n\n return draft;\n\n case ProductActionTypes.fetchProductsFailure:\n draft.products.loading = false;\n return;\n\n case ProductActionTypes.resetProducts:\n draft.products = initialState.products;\n draft.catalogName = initialState.catalogName;\n return draft;\n\n case ProductActionTypes.fetchCatalogs:\n draft.catalogs.loading = true;\n if (action.pageNumber === 1) {\n draft.catalogs.items = initialState.catalogs.items;\n }\n return;\n\n case ProductActionTypes.fetchCatalogsSuccess:\n draft.catalogs.items = [...draft.catalogs.items, ...action.payload];\n draft.catalogs.isAllFetched = action.payload.length < action.pageSize;\n draft.catalogs.loading = false;\n return draft;\n\n case ProductActionTypes.fetchCatalogsFailure:\n draft.catalogs.loading = false;\n return;\n\n case ProductActionTypes.resetCatalogs:\n draft.catalogs = initialState.catalogs;\n return draft;\n\n case ProductActionTypes.fetchProductDetails:\n draft.productDetails.isLoading = true;\n return draft;\n\n case ProductActionTypes.fetchProductDetailsSuccess:\n draft.productDetails = {\n item: action.product,\n isLoading: false,\n recommendations: [],\n relatedRecipes: [],\n moreFromCollection: [],\n };\n return draft;\n\n case ProductActionTypes.fetchProductDetailsFailure:\n draft.productDetails.isLoading = false;\n return draft;\n\n case ProductActionTypes.resetProductDetails:\n draft.productDetails = initialState.productDetails;\n return draft;\n\n case ProductActionTypes.fetchProductQuickView:\n draft.modals.productQuickView = null;\n return draft;\n\n case ProductActionTypes.fetchProductQuickViewSuccess:\n draft.modals.productQuickView = action.product;\n return draft;\n\n case ProductActionTypes.resetProductQuickView:\n draft.modals.productQuickView = initialState.modals.productQuickView;\n return draft;\n\n case ProductActionTypes.fetchProductRecommendationsSuccess:\n draft.productDetails.recommendations = action.recommendations;\n return draft;\n\n case ProductActionTypes.fetchRelatedRecipesSuccess:\n draft.productDetails.relatedRecipes = action.recipes;\n return draft;\n\n case ProductActionTypes.fetchMoreFromCollectionSuccess:\n draft.productDetails.moreFromCollection = action.moreFromCollection;\n return draft;\n\n case ProductActionTypes.fetchEcommerceCustomerSpecialOffers:\n draft.customerSpecialOffersTypes.ecommerce.loading = true;\n return;\n\n case ProductActionTypes.fetchEcommerceCustomerSpecialOffersSuccess:\n draft.customerSpecialOffersTypes.ecommerce.items = action.payload;\n draft.customerSpecialOffersTypes.ecommerce.loading = false;\n return draft;\n\n case ProductActionTypes.fetchEcommerceCustomerSpecialOffersFailure:\n draft.customerSpecialOffersTypes.ecommerce.loading = false;\n return;\n\n case ProductActionTypes.fetchHealthySavingsCustomerSpecialOffers:\n draft.customerSpecialOffersTypes.healthySavings.loading = true;\n return;\n\n case ProductActionTypes.fetchHealthySavingsCustomerSpecialOffersSuccess:\n draft.customerSpecialOffersTypes.healthySavings.items = action.payload;\n draft.customerSpecialOffersTypes.healthySavings.loading = false;\n return draft;\n\n case ProductActionTypes.fetchHealthySavingsCustomerSpecialOffersFailure:\n draft.customerSpecialOffersTypes.healthySavings.loading = false;\n return;\n\n case ProductActionTypes.fetchCollectAndSaveCustomerSpecialOffers:\n draft.customerSpecialOffersTypes.collectAndSave.loading = true;\n return;\n\n case ProductActionTypes.fetchCollectAndSaveCustomerSpecialOffersSuccess:\n draft.customerSpecialOffersTypes.collectAndSave.items = action.payload;\n draft.customerSpecialOffersTypes.collectAndSave.loading = false;\n return draft;\n\n case ProductActionTypes.fetchCollectAndSaveCustomerSpecialOffersFailure:\n draft.customerSpecialOffersTypes.collectAndSave.loading = false;\n return;\n\n case ProductActionTypes.fetchRegularCustomerSpecialOffers:\n draft.customerSpecialOffersTypes.regularCustomerSpecial.loading = true;\n return;\n\n case ProductActionTypes.fetchRegularCustomerSpecialOffersSuccess:\n draft.customerSpecialOffersTypes.regularCustomerSpecial.items = action.payload;\n draft.customerSpecialOffersTypes.regularCustomerSpecial.loading = false;\n return draft;\n\n case ProductActionTypes.fetchRegularCustomerSpecialOffersFailure:\n draft.customerSpecialOffersTypes.regularCustomerSpecial.loading = false;\n return;\n\n case ProductActionTypes.fetchProductVideoDetailsSuccess:\n const i = draft.productDetails?.item?.videos.findIndex(\n (video) => video.id === action.vimeoId,\n );\n\n if (draft.productDetails.item.videos[i]) {\n draft.productDetails.item.videos[i].thumbnail = action.thumbnail;\n }\n return;\n\n case ProductActionTypes.fetchProductQuickViewVideoDetailsSuccess:\n const j = draft.modals.productQuickView?.videos.findIndex(\n (video) => video.id === action.vimeoId,\n );\n draft.modals.productQuickView.videos[j].thumbnail = action.thumbnail;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { RecipeState } from './recipe-state-models';\nimport { RecipeActionTypes } from './recipe.actions';\n\nexport const initialState: RecipeState = {\n recipes: {\n items: [],\n isAllFetched: false,\n },\n recipeCategories: [{ title: $localize`All Recipes`, urlName: '' }],\n isRecipeCategoriesFetched: false,\n recipeDetails: {\n item: null,\n isLoading: false,\n recommendations: [],\n relatedProducts: [],\n },\n userRecipes: {\n loading: false,\n items: [],\n },\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case RecipeActionTypes.fetchRecipesSuccess:\n draft.recipes.items = action.isFirstPage\n ? action.items\n : [...draft.recipes.items, ...action.items];\n draft.recipes.isAllFetched = action.isFirstPage\n ? initialState.recipes.isAllFetched\n : action.items.length < action.pageSize;\n return draft;\n\n case RecipeActionTypes.resetRecipes:\n draft.recipes = initialState.recipes;\n return draft;\n\n case RecipeActionTypes.fetchRecipeCategories:\n draft.isRecipeCategoriesFetched = false;\n return;\n\n case RecipeActionTypes.fetchRecipeCategoriesSuccess:\n draft.isRecipeCategoriesFetched = true;\n draft.recipeCategories = [...initialState.recipeCategories, ...action.recipeCategories];\n return draft;\n\n case RecipeActionTypes.fetchRecipeCategoriesFailure:\n draft.isRecipeCategoriesFetched = false;\n return;\n\n case RecipeActionTypes.fetchRecipeDetails:\n draft.recipeDetails.isLoading = true;\n return draft;\n\n case RecipeActionTypes.fetchRecipeDetailsSuccess:\n draft.recipeDetails.isLoading = false;\n draft.recipeDetails.item = action.item;\n return draft;\n\n case RecipeActionTypes.fetchRecipeDetailsFailure:\n draft.recipeDetails.isLoading = false;\n return draft;\n\n case RecipeActionTypes.fetchRecipeRecommendationsSuccess:\n draft.recipeDetails.recommendations = action.items;\n return draft;\n\n case RecipeActionTypes.fetchRelatedProductsSuccess:\n draft.recipeDetails.relatedProducts = action.items;\n return draft;\n\n case RecipeActionTypes.resetRecipeDetails:\n draft.recipeDetails = initialState.recipeDetails;\n return draft;\n\n case RecipeActionTypes.fetchUserRecipes:\n draft.userRecipes.loading = true;\n draft.userRecipes.items = [];\n return;\n\n case RecipeActionTypes.fetchUserRecipesSuccess:\n draft.userRecipes.loading = false;\n draft.userRecipes.items = action.items;\n return;\n\n case RecipeActionTypes.fetchUserRecipesFailure:\n draft.userRecipes.loading = false;\n return;\n\n case RecipeActionTypes.dislikeRecipe:\n draft.userRecipes.items = draft.userRecipes.items.filter((item) => item.id !== action.id);\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { ReturnState } from './return-state-models';\nimport { ReturnActionTypes } from './return.actions';\n\nexport const initialState: ReturnState = {\n loading: false,\n returnHistory: [],\n returnDetails: null,\n returnSucceeded: false,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case ReturnActionTypes.resetReturnState:\n return initialState;\n\n case ReturnActionTypes.fetchReturnHistory:\n draft.loading = true;\n draft.returnHistory = initialState.returnHistory;\n return;\n\n case ReturnActionTypes.fetchReturnHistorySuccess:\n draft.loading = false;\n draft.returnHistory = action.returnHistory;\n return;\n\n case ReturnActionTypes.fetchReturnHistoryFailure:\n draft.loading = false;\n return;\n\n case ReturnActionTypes.submitReturn:\n draft.loading = true;\n draft.returnSucceeded = false;\n return;\n\n case ReturnActionTypes.submitReturnFailure:\n draft.loading = false;\n draft.returnSucceeded = false;\n return;\n\n case ReturnActionTypes.submitReturnSuccess:\n draft.loading = false;\n draft.returnSucceeded = true;\n\n case ReturnActionTypes.fetchReturnDetails:\n draft.loading = true;\n draft.returnDetails = initialState.returnDetails;\n return;\n\n case ReturnActionTypes.fetchReturnDetailsSuccess:\n draft.loading = false;\n draft.returnDetails = action.returnDetails;\n return;\n\n case ReturnActionTypes.fetchReturnDetailsFailure:\n draft.loading = false;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import { SearchResultApiPageSize } from '@core/constants/search';\nimport produce from 'immer';\nimport { SearchState } from './search-state-models';\nimport { SearchActionTypes } from './search.actions';\n\nexport const initialState: SearchState = {\n loading: false,\n count: 0,\n documents: [],\n facets: [],\n isAllFetched: false,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case SearchActionTypes.resetSearchState:\n return initialState;\n\n case SearchActionTypes.fetchSearchResult:\n draft.loading = true;\n if (action.isFirstPage) {\n draft.documents = initialState.documents;\n draft.isAllFetched = initialState.isAllFetched;\n }\n return;\n\n case SearchActionTypes.fetchSearchResultSuccess:\n draft.loading = false;\n draft.count = action.count;\n draft.documents = [...draft.documents, ...action.documents];\n draft.isAllFetched = action.documents.length < SearchResultApiPageSize;\n if (!action.keepFacets) {\n draft.facets = action.facets;\n }\n return;\n\n case SearchActionTypes.fetchSearchResultFailure:\n draft.loading = false;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { ShareState } from './share-state-models';\nimport { ShareActionTypes } from './share.actions';\n\nexport const initialState: ShareState = {\n loading: false,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case ShareActionTypes.shareInEmail:\n draft.loading = true;\n return;\n\n case ShareActionTypes.shareInEmailSuccess:\n case ShareActionTypes.shareInEmailFailure:\n draft.loading = false;\n return;\n\n default:\n return;\n }\n}, initialState);\n","import { SubmittedConsultantInfo } from '@core/store/start-now-app/start-now-app-state-models';\n\nexport const DefaultFailedSubmittedConsultantInfo: SubmittedConsultantInfo = {\n errorTypes: [],\n isSuccess: false,\n consultantBeeNumber: null,\n recruiterInfo: null,\n};\n","export enum BankTransferErrorType {\n None = 'None',\n BankTransferFailed = 'BankTransferFailed',\n MissingParameter = 'MissingParameter',\n Unknown = 'Unknown',\n}\n","/* eslint-disable max-len */\nimport { DefaultFailedSubmittedConsultantInfo } from '@core/constants/default-failed-submitted-consultant-info';\nimport { BankTransferErrorType } from '@core/enums/bank-transfer-error-type.enum';\nimport { ConsultantLocatorErrorType } from '@core/enums/consultant-locator-error-type.enum';\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\nimport { PhoneNumberType } from '@core/enums/phone-number-type.enum';\nimport { StartNowPaymentType } from '@core/enums/start-now-app.enum';\nimport { SuccessfulStatus } from '@core/enums/successful-status.enum';\nimport { environment } from '@env';\nimport { isMexEnv, isUsaEnv } from '@shared/utils/environment-utils';\nimport { isAfterCardTransaction } from '@shared/utils/sna-error-handling-utils';\nimport { produce } from 'immer';\nimport { StartNowAppState } from './start-now-app-state-models';\nimport { StartNowAppActionTypes } from './start-now-app.actions';\n\nexport const initialState: StartNowAppState = {\n loading: false,\n consultantFinderStep: {\n consultantFinderResult: {\n items: [],\n hasMore: true,\n loading: false,\n skipConsultantList: null,\n },\n noConsultantFinderModalOpen: false,\n consultantFinderCriteria: null,\n findIsSuccess: true,\n isConsultantsFetched: false,\n isReCaptchaValidateSuccess: SuccessfulStatus.BeforeCall,\n findConsultantByZipCodeError: ConsultantLocatorErrorType.None,\n },\n addressValidationModal: {\n payload: null,\n validationResult: null,\n },\n addressValidationStep: {\n isAddressValidationSuccess: null,\n isNextEnabled: false,\n errors: [],\n },\n aboutYouStep: {\n isNextEnabled: false,\n errors: [],\n },\n contactStep: {\n contactUniquenessCheck: {\n emailIsValid: null,\n phoneValidity: {\n [PhoneNumberType.Mobile]: null,\n [PhoneNumberType.Home]: null,\n },\n },\n isNextEnabled: false,\n errors: [],\n },\n depositPaymentValue: null,\n starterKitStep: {\n fetched: false,\n isNextEnabled: false,\n errors: [],\n },\n paymentStep: {\n orderSummary: null,\n },\n agreementStep: {\n ssnNumberIsValid: null,\n isNextEnabled: false,\n errors: [],\n },\n startNowAppData: {\n selectedConsultant: null,\n userInfo: null,\n contactInfo: null,\n starterKits: [],\n selectedStarterKit: null,\n selectedStartNowPaymentType: StartNowPaymentType.FullPayment,\n addressInfo: {\n addresses: [],\n languagePreferred: null,\n countryStates: [],\n },\n areTermsConditionsAgreed: false,\n applicationRegistrationId: null,\n securityKey: null,\n canSubmitConsultantInfo: null,\n registrationCode: null,\n submittedConsultantInfo: null,\n startNowAppPaymentInfo: {\n externalPaymentInfo: null,\n customerId: null,\n paymentType: null,\n createdCardPaymentMethod: null,\n cardPaymentInfo: {\n clientToken: null,\n },\n createdVoucherPaymentMethod: null,\n voucherPaymentInfo: {\n amount: 0,\n email: null,\n vouchers: [],\n vouchersReceived: null,\n },\n provider: null,\n additionalBillingInformation: null,\n },\n },\n stepProcessing: false,\n consultantStepsSkipped: false,\n registrationCodeStepSkipped: false,\n congratulationStepMode: null,\n voucherBarCodeUrls: [],\n confirmRecruiter: false,\n registrationCodeCheck: null,\n reducedDepositPaymentValue: null,\n isReducedDepositAvailable: false,\n isZeroDepositAvailable: false,\n canChangeSavedCard: true,\n paymentStepSkipped: false,\n isFinalizeEnabled: true,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case StartNowAppActionTypes.validateReCaptcha:\n draft.consultantFinderStep.isReCaptchaValidateSuccess = SuccessfulStatus.BeforeCall;\n return;\n\n case StartNowAppActionTypes.validateReCaptchaSuccess:\n draft.consultantFinderStep.isReCaptchaValidateSuccess = action.isValid\n ? SuccessfulStatus.Success\n : SuccessfulStatus.Failed;\n return;\n\n case StartNowAppActionTypes.validateReCaptchaFailure:\n draft.consultantFinderStep.isReCaptchaValidateSuccess = SuccessfulStatus.Failed;\n return;\n\n case StartNowAppActionTypes.resetReCaptchaValidation:\n draft.consultantFinderStep.isReCaptchaValidateSuccess =\n initialState.consultantFinderStep.isReCaptchaValidateSuccess;\n return;\n\n case StartNowAppActionTypes.stepProcessing:\n draft.stepProcessing = action.stepProcessing;\n return;\n\n case StartNowAppActionTypes.updateConsultantStepsSkipped:\n draft.consultantStepsSkipped = action.consultantStepsSkipped;\n return;\n\n case StartNowAppActionTypes.updatePaymentStepSkipped:\n draft.paymentStepSkipped = action.paymentStepSkipped;\n return;\n\n case StartNowAppActionTypes.findConsultantByArea:\n draft.stepProcessing = true;\n draft.consultantFinderStep.consultantFinderCriteria = action.consultantFinder;\n return;\n\n case StartNowAppActionTypes.findConsultantByAreaNextPage:\n draft.stepProcessing = true;\n return;\n\n case StartNowAppActionTypes.findConsultantByConsultantCode:\n draft.stepProcessing = true;\n draft.consultantFinderStep.consultantFinderCriteria = {\n consultantCode: action.code,\n country: action.country,\n };\n return;\n\n case StartNowAppActionTypes.findConsultantSuccess:\n draft.consultantFinderStep.consultantFinderResult.items = [\n ...draft.consultantFinderStep.consultantFinderResult.items,\n ...action.items,\n ];\n draft.consultantFinderStep.consultantFinderResult.hasMore = action.hasMore;\n draft.consultantFinderStep.consultantFinderResult.skipConsultantList = true;\n draft.consultantFinderStep.findIsSuccess = true;\n draft.consultantFinderStep.isConsultantsFetched = true;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.findConsultantFailure:\n draft.consultantFinderStep.noConsultantFinderModalOpen = true;\n draft.consultantFinderStep.findIsSuccess = false;\n draft.consultantFinderStep.isConsultantsFetched = true;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.findConsultantByZipCode:\n draft.stepProcessing = true;\n draft.consultantFinderStep.consultantFinderCriteria = {\n zipCode: action.request.zipCode,\n country: environment.country,\n };\n return;\n\n case StartNowAppActionTypes.findConsultantByZipCodeNextPage:\n draft.stepProcessing = true;\n return;\n\n case StartNowAppActionTypes.findConsultantByZipCodeSuccess:\n /**\n * in Mexico if we don’t know a consultant we will return a default MEX Consultant.\n * In USA we will send back a list of consultants by zipCode and\n * we will navigate to the corresponding page to show them\n */\n if (isMexEnv && !!action.res.items[0]) {\n draft.startNowAppData.selectedConsultant = action.res.items[0];\n }\n draft.consultantFinderStep.consultantFinderResult.items.push(\n ...action.res.items.filter((item) => !!item),\n );\n draft.consultantFinderStep.consultantFinderResult.skipConsultantList =\n action.res.skipConsultantList;\n draft.consultantFinderStep.consultantFinderResult.hasMore = action.res.hasMore;\n draft.consultantFinderStep.findIsSuccess = true;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.findConsultantByZipCodeFailure:\n draft.consultantFinderStep.findConsultantByZipCodeError = action.error.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.resetFindConsultantByZipCodeErrorType:\n draft.consultantFinderStep.findConsultantByZipCodeError =\n initialState.consultantFinderStep.findConsultantByZipCodeError;\n return;\n\n case StartNowAppActionTypes.resetAddressValidationStep:\n draft.addressValidationStep = initialState.addressValidationStep;\n return;\n\n case StartNowAppActionTypes.resetNoFindConsultantModal:\n draft.consultantFinderStep.noConsultantFinderModalOpen = false;\n return;\n\n case StartNowAppActionTypes.resetFindConsultant:\n draft.consultantFinderStep = initialState.consultantFinderStep;\n return;\n\n case StartNowAppActionTypes.resetFirstConsultants:\n if (draft.consultantFinderStep.consultantFinderResult.items.length > 3) {\n draft.consultantFinderStep.consultantFinderResult.items =\n draft.consultantFinderStep.consultantFinderResult.items.slice(0, 3);\n draft.consultantFinderStep.consultantFinderResult.hasMore = true;\n }\n return;\n\n case StartNowAppActionTypes.validateRegistrationCodeSuccess:\n draft.registrationCodeCheck = action.res.isValid;\n return;\n\n case StartNowAppActionTypes.resetRegistrationCodeValidity:\n draft.registrationCodeCheck = initialState.registrationCodeCheck;\n return;\n\n case StartNowAppActionTypes.resetRegistrationCode:\n draft.startNowAppData.registrationCode = initialState.startNowAppData.registrationCode;\n return;\n\n case StartNowAppActionTypes.updateRegistrationCode:\n draft.startNowAppData.registrationCode = action.registrationCode;\n return;\n\n case StartNowAppActionTypes.updateRegistrationCodeStepSkipped:\n draft.registrationCodeStepSkipped = action.skipRegistrationCodeStep;\n draft.startNowAppData.registrationCode = action.registrationCode;\n return;\n\n case StartNowAppActionTypes.resetRegistrationCodeStepSkipped:\n draft.registrationCodeStepSkipped = initialState.registrationCodeStepSkipped;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppUserInfo:\n draft.stepProcessing = true;\n draft.startNowAppData.userInfo = {\n ...draft.startNowAppData.userInfo,\n ...action.userInfo,\n };\n return;\n\n case StartNowAppActionTypes.updateStartNowAppUserInfoSuccess:\n draft.stepProcessing = false;\n draft.aboutYouStep.errors = action.saveUserInfoResult.errors;\n draft.aboutYouStep.isNextEnabled = action.saveUserInfoResult.isSuccess;\n draft.startNowAppData.applicationRegistrationId =\n action.saveUserInfoResult.applicationRegistrationId;\n if (!!action.saveUserInfoResult.securityKey) {\n draft.startNowAppData.securityKey = action.saveUserInfoResult.securityKey;\n }\n return;\n\n case StartNowAppActionTypes.updateStartNowAppUserInfoFailure:\n if (action.error?.errorTypes?.length) {\n draft.aboutYouStep.errors = [...action.error.errorTypes];\n }\n draft.aboutYouStep.statusCode = action.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.resetAboutYouStep:\n draft.aboutYouStep = initialState.aboutYouStep;\n return;\n\n case StartNowAppActionTypes.updateSelectedConsultant:\n draft.startNowAppData.selectedConsultant = action.selectedConsultant;\n return;\n\n case StartNowAppActionTypes.resetSelectedConsultant:\n draft.startNowAppData.selectedConsultant = initialState.startNowAppData.selectedConsultant;\n return;\n\n case StartNowAppActionTypes.emailUniquenessCheck:\n case StartNowAppActionTypes.phoneNumberUniquenessCheck:\n draft.stepProcessing = true;\n return;\n\n case StartNowAppActionTypes.emailUniquenessCheckSuccess:\n draft.contactStep.contactUniquenessCheck.emailIsValid = action.emailIsValid;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.emailUniquenessCheckFailure:\n draft.contactStep.statusCode = action.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.resetEmailValidity:\n draft.contactStep.statusCode = initialState.contactStep.statusCode;\n draft.contactStep.contactUniquenessCheck.emailIsValid =\n initialState.contactStep.contactUniquenessCheck.emailIsValid;\n return;\n\n case StartNowAppActionTypes.phoneNumberUniquenessCheckSuccess:\n draft.contactStep.contactUniquenessCheck.phoneValidity[action.response.phoneNumberType] =\n action.response.phoneNumberIsValid;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.phoneNumberUniquenessCheckFailure:\n draft.contactStep.statusCode = action.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.resetPhoneNumberValidity:\n draft.contactStep.contactUniquenessCheck.phoneValidity[action.phoneNumberType] =\n initialState.contactStep.contactUniquenessCheck.phoneValidity[action.phoneNumberType];\n draft.contactStep.statusCode = initialState.contactStep.statusCode;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppContactInfo:\n draft.stepProcessing = true;\n draft.startNowAppData.contactInfo = action.contactInfo;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppContactInfoSuccess:\n draft.stepProcessing = false;\n draft.contactStep.errors = action.saveConsultantDataResult.errors;\n draft.contactStep.isNextEnabled = action.saveConsultantDataResult.isSuccess;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppContactInfoFailure:\n if (action.error?.errorTypes?.length) {\n draft.contactStep.errors = [...action.error.errorTypes];\n }\n draft.contactStep.statusCode = action.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.resetContactStep:\n draft.contactStep = initialState.contactStep;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppAddressInfo:\n draft.stepProcessing = true;\n draft.startNowAppData.addressInfo.addresses = action.addresses;\n draft.startNowAppData.addressInfo.languagePreferred = action.languagePreferred;\n draft.addressValidationStep.isAddressValidationSuccess = true;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppAddressInfoSuccess:\n draft.stepProcessing = false;\n draft.addressValidationStep.errors = action.saveConsultantDataResult.errors;\n draft.addressValidationStep.isNextEnabled = action.saveConsultantDataResult.isSuccess;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppAddressInfoFailure:\n if (action.error?.errorTypes?.length) {\n draft.addressValidationStep.errors = [...action.error.errorTypes];\n }\n draft.addressValidationStep.statusCode = action.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.addAddress:\n let addressToUpdate = draft.startNowAppData.addressInfo.addresses.find(\n (address) => address.addressType === action.address.addressType,\n );\n if (addressToUpdate) {\n addressToUpdate = action.address;\n } else {\n draft.startNowAppData.addressInfo.addresses.push(action.address);\n }\n return;\n\n case StartNowAppActionTypes.fetchCountryStatesSuccess:\n draft.startNowAppData.addressInfo.countryStates = action.countryStates;\n return;\n\n case StartNowAppActionTypes.validateAddressSuccess:\n draft.addressValidationModal = action.addressValidation;\n draft.addressValidationStep.isAddressValidationSuccess =\n action.addressValidation.payload.isValid;\n draft.stepProcessing = action.addressValidation.payload.isValid;\n return;\n\n case StartNowAppActionTypes.validateAddressFailure:\n draft.stepProcessing = false;\n draft.addressValidationStep.isAddressValidationSuccess = false;\n return;\n\n case StartNowAppActionTypes.updateAddressValidationModalValidity:\n draft.addressValidationModal.isValid = action.isSuccess;\n return;\n\n case StartNowAppActionTypes.resetAddressValidationModal:\n draft.addressValidationModal = initialState.addressValidationModal;\n return;\n\n case StartNowAppActionTypes.createPassword:\n draft.startNowAppData.userInfo.password = action.password;\n return;\n\n case StartNowAppActionTypes.fetchStartNowAppStarterKits:\n draft.loading = true;\n return;\n\n case StartNowAppActionTypes.fetchStartNowAppStarterKitsSuccess:\n draft.loading = false;\n draft.startNowAppData.starterKits = action.starterKits;\n if (isUsaEnv) {\n draft.startNowAppData.selectedStarterKit = action.starterKits[0];\n }\n return;\n\n case StartNowAppActionTypes.fetchStartNowAppStarterKitsFailure:\n draft.loading = false;\n return;\n\n case StartNowAppActionTypes.fetchDepositPaymentValueSuccess:\n if (action.res) {\n draft.depositPaymentValue = action.res;\n }\n return;\n\n case StartNowAppActionTypes.fetchReducedDepositPaymentValueSuccess:\n if (action.res) {\n draft.reducedDepositPaymentValue = action.res;\n }\n return;\n\n case StartNowAppActionTypes.fetchIsReducedDepositAvailableSuccess:\n if (action.res) {\n draft.isReducedDepositAvailable = action.res;\n }\n return;\n\n case StartNowAppActionTypes.fetchIsZeroDepositAvailableSuccess:\n if (action.res) {\n draft.isZeroDepositAvailable = action.res;\n }\n return;\n\n case StartNowAppActionTypes.updateIsDepositPayment:\n draft.startNowAppData.selectedStarterKit.isDepositPayment = action.isDepositPayment;\n return;\n\n case StartNowAppActionTypes.updateIsReducedDepositPayment:\n draft.startNowAppData.selectedStarterKit.isReducedDepositPayment =\n action.isReducedDepositPayment;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppSelectedStarterKit:\n draft.startNowAppData.selectedStarterKit = action.selectedStarterKit;\n draft.startNowAppData.selectedStartNowPaymentType = action.selectedStartNowPaymentType;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppSelectedStarterKitSuccess:\n draft.stepProcessing = false;\n draft.starterKitStep.errors = action.saveConsultantDataResult.errors;\n draft.starterKitStep.isNextEnabled = action.saveConsultantDataResult.isSuccess;\n return;\n\n case StartNowAppActionTypes.updateStartNowAppSelectedStarterKitFailure:\n if (action.error?.errorTypes?.length) {\n draft.starterKitStep.errors = [...action.error.errorTypes];\n }\n draft.starterKitStep.statusCode = action.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.checkIfNewPaymentRequired:\n draft.starterKitStep = initialState.starterKitStep;\n return;\n\n case StartNowAppActionTypes.checkIfNewPaymentRequiredSuccess:\n draft.starterKitStep.fetched = true;\n return;\n\n case StartNowAppActionTypes.checkIfNewPaymentRequiredFailure:\n draft.starterKitStep.statusCode = action.error.status;\n return;\n\n case StartNowAppActionTypes.fetchOrderSummarySuccess:\n draft.paymentStep.orderSummary = action.res;\n return;\n\n case StartNowAppActionTypes.resetOrderSummary:\n draft.paymentStep.orderSummary = initialState.paymentStep.orderSummary;\n return;\n\n case StartNowAppActionTypes.resetStarterKitStep:\n draft.starterKitStep = initialState.starterKitStep;\n return;\n\n case StartNowAppActionTypes.updateAreTermsConditionsAgreed:\n draft.startNowAppData.areTermsConditionsAgreed = action.areTermsConditionsAgreed;\n return;\n\n case StartNowAppActionTypes.fetchClientTokenSuccess:\n draft.startNowAppData.startNowAppPaymentInfo.cardPaymentInfo.clientToken =\n action.payload.clientToken;\n draft.startNowAppData.startNowAppPaymentInfo.customerId = action.payload.customerId;\n return;\n\n case StartNowAppActionTypes.resetClientToken:\n draft.startNowAppData.startNowAppPaymentInfo.cardPaymentInfo.clientToken =\n initialState.startNowAppData.startNowAppPaymentInfo.cardPaymentInfo.clientToken;\n return;\n\n case StartNowAppActionTypes.storePaymentType:\n draft.startNowAppData.startNowAppPaymentInfo.paymentType = action.paymentType;\n return;\n\n case StartNowAppActionTypes.storeCardPaymentInfo:\n draft.startNowAppData.startNowAppPaymentInfo.cardPaymentInfo.cardType =\n action.payload.cardType;\n return draft;\n\n case StartNowAppActionTypes.storeVoucherPaymentInfo:\n draft.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo = action.payload;\n return draft;\n\n case StartNowAppActionTypes.storeExternalPaymentInfoSuccess:\n draft.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo = action.payload;\n return draft;\n\n case StartNowAppActionTypes.updatePaymentProviderType:\n draft.startNowAppData.startNowAppPaymentInfo.provider = action.provider;\n return draft;\n\n case StartNowAppActionTypes.createOrderSuccess:\n draft.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo = {\n order: action.payload,\n };\n return draft;\n\n case StartNowAppActionTypes.updateOrderSuccess:\n draft.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo = {\n order: action.response,\n };\n return draft;\n\n case StartNowAppActionTypes.createOrderFailure:\n draft.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo =\n initialState.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo;\n return draft;\n\n case StartNowAppActionTypes.storeExternalPaymentInfoFailure:\n draft.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo =\n initialState.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo;\n return draft;\n\n case StartNowAppActionTypes.createPaymentMethodSuccess:\n let errorType;\n if (\n action.payload.bankTransferErrorType &&\n action.payload.bankTransferErrorType !== BankTransferErrorType.None\n ) {\n errorType = action.payload.bankTransferErrorType;\n } else {\n errorType = action.payload.errorType;\n }\n draft.startNowAppData.startNowAppPaymentInfo.createdCardPaymentMethod = {\n ...action.payload,\n errorType,\n };\n return draft;\n\n case StartNowAppActionTypes.createPaymentMethodFailure:\n draft.startNowAppData.startNowAppPaymentInfo.createdCardPaymentMethod = action.error;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.resetPaymentMethod:\n draft.startNowAppData.startNowAppPaymentInfo.createdCardPaymentMethod =\n initialState.startNowAppData.startNowAppPaymentInfo.createdCardPaymentMethod;\n return draft;\n\n case StartNowAppActionTypes.updateAdditionalBillingInformation:\n draft.startNowAppData.startNowAppPaymentInfo.additionalBillingInformation =\n action.additionalBillingInformation;\n return;\n\n case StartNowAppActionTypes.resetAdditionalBillingInformation:\n draft.startNowAppData.startNowAppPaymentInfo.additionalBillingInformation =\n initialState.startNowAppData.startNowAppPaymentInfo.additionalBillingInformation;\n return;\n\n case StartNowAppActionTypes.createVoucher:\n draft.stepProcessing = true;\n return;\n\n case StartNowAppActionTypes.createVoucherSuccess:\n draft.startNowAppData.startNowAppPaymentInfo.createdVoucherPaymentMethod = action.payload;\n draft.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo.vouchers = action.payload\n .vouchers\n ? action.payload.vouchers\n : initialState.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo.vouchers;\n draft.stepProcessing = false;\n return draft;\n\n case StartNowAppActionTypes.createVoucherFailure:\n draft.startNowAppData.startNowAppPaymentInfo.createdVoucherPaymentMethod = {\n ...action.error,\n errorTypes: action.error.error.errors.map((error) => error.errorMessage),\n };\n draft.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo.vouchers =\n initialState.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo.vouchers;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.receiveVouchersSuccess:\n draft.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo.vouchersReceived = action\n .payload.vouchers\n ? action.payload.vouchers.every((item) => item.hasBarcodeUrl === true)\n : false;\n return draft;\n\n case StartNowAppActionTypes.receiveVouchersFailure:\n draft.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo.vouchersReceived = false;\n draft.stepProcessing = false;\n return draft;\n\n case StartNowAppActionTypes.resetReceiveVoucher:\n draft.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo.vouchersReceived =\n initialState.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo.vouchersReceived;\n return draft;\n\n case StartNowAppActionTypes.resetVoucherInfo:\n draft.startNowAppData.startNowAppPaymentInfo.createdVoucherPaymentMethod =\n initialState.startNowAppData.startNowAppPaymentInfo.createdVoucherPaymentMethod;\n draft.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo =\n initialState.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo;\n return;\n\n case StartNowAppActionTypes.resetPaymentInfo:\n draft.startNowAppData.startNowAppPaymentInfo =\n initialState.startNowAppData.startNowAppPaymentInfo;\n return;\n\n case StartNowAppActionTypes.resetAgreementStep:\n draft.agreementStep = initialState.agreementStep;\n return;\n\n case StartNowAppActionTypes.updateSsnNumber:\n draft.agreementStep = initialState.agreementStep;\n draft.stepProcessing = true;\n draft.startNowAppData.userInfo.ssnNumber = action.ssnNumber;\n return;\n\n case StartNowAppActionTypes.updateSsnNumberSuccess:\n draft.agreementStep.isNextEnabled = action.saveConsultantDataResult.isSuccess;\n draft.agreementStep.errors = action.saveConsultantDataResult.errors;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.updateSsnNumberFailure:\n if (action.error?.errorTypes?.length) {\n draft.agreementStep.errors = [...action.error.errorTypes];\n if (action.error.errorTypes.includes(ConsultantSubmissionErrorType.InvalidSsnNumber)) {\n draft.agreementStep.ssnNumberIsValid = false;\n }\n }\n draft.agreementStep.statusCode = action.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.updateAgreementStepNavigableFlag:\n draft.agreementStep.isNextEnabled = action.isNextEnabled;\n return;\n\n case StartNowAppActionTypes.checkIfCanSubmitConsultant:\n draft.stepProcessing = true;\n return;\n\n case StartNowAppActionTypes.checkIfCanSubmitConsultantSuccess:\n draft.startNowAppData.canSubmitConsultantInfo = action.payload;\n return;\n\n case StartNowAppActionTypes.checkIfCanSubmitConsultantFailure:\n draft.startNowAppData.canSubmitConsultantInfo =\n action?.error?.error || DefaultFailedSubmittedConsultantInfo;\n draft.startNowAppData.submitConsultantFailStatusCode = action.error.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.resetCanSubmitConsultantInfo:\n draft.startNowAppData.canSubmitConsultantInfo =\n initialState.startNowAppData.canSubmitConsultantInfo;\n draft.startNowAppData.submitConsultantFailStatusCode =\n initialState.startNowAppData.submitConsultantFailStatusCode;\n return;\n\n case StartNowAppActionTypes.submitConsultant:\n draft.stepProcessing = true;\n return;\n\n case StartNowAppActionTypes.submitConsultantSuccess:\n draft.stepProcessing = false;\n draft.startNowAppData.submittedConsultantInfo = action.payload;\n if (isAfterCardTransaction(action.payload.errorTypes)) {\n draft.canChangeSavedCard = false;\n }\n return;\n\n case StartNowAppActionTypes.submitConsultantFailure:\n const submittedConsultantInfo = action?.error?.error || DefaultFailedSubmittedConsultantInfo;\n draft.startNowAppData.submittedConsultantInfo = submittedConsultantInfo;\n if (isAfterCardTransaction(submittedConsultantInfo.errorTypes)) {\n draft.canChangeSavedCard = false;\n }\n draft.startNowAppData.submitConsultantFailStatusCode = action.error.status;\n draft.stepProcessing = false;\n return;\n\n case StartNowAppActionTypes.resetSubmitConsultantInfo:\n draft.startNowAppData.submittedConsultantInfo =\n initialState.startNowAppData.submittedConsultantInfo;\n draft.startNowAppData.submitConsultantFailStatusCode =\n initialState.startNowAppData.submitConsultantFailStatusCode;\n return;\n\n case StartNowAppActionTypes.updateCongratulationStepMode:\n draft.congratulationStepMode = action.mode;\n return;\n\n case StartNowAppActionTypes.fetchVoucherBarCodeUrlsSuccess:\n draft.voucherBarCodeUrls = action.urls;\n return;\n\n case StartNowAppActionTypes.updateConfirmRecruiter:\n draft.confirmRecruiter = action.confirmRecruiter;\n return;\n\n case StartNowAppActionTypes.setIsFinalizeButtonEnable:\n draft.isFinalizeEnabled = action.isFinalizeButtonEnable;\n return;\n\n case StartNowAppActionTypes.resetIsFinalizeButtonEnable:\n draft.isFinalizeEnabled = initialState.isFinalizeEnabled;\n return;\n\n case StartNowAppActionTypes.resetExternalPaymentInfo:\n draft.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo =\n initialState.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo;\n\n default:\n return;\n }\n}, initialState);\n","import produce from 'immer';\nimport { UserState } from './user-state-models';\nimport { UserActionTypes } from './user.actions';\n\nexport const initialState: UserState = {\n loading: false,\n userIsFetched: false,\n user: {\n firstName: null,\n lastName: null,\n email: null,\n phoneNumber: null,\n phoneNumberValidated: false,\n newsletters: false,\n updates: false,\n activeConsultantProwessId: null,\n },\n registrationFailedErrorType: null,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case UserActionTypes.resetUserStore:\n return initialState;\n\n case UserActionTypes.fetchUser:\n case UserActionTypes.registerUser:\n draft.loading = true;\n return draft;\n\n case UserActionTypes.fetchUserSuccess:\n draft.loading = false;\n draft.userIsFetched = true;\n draft.user = {\n ...draft.user,\n ...action.user,\n phoneNumber: action.user.phoneNumber.slice(-10),\n };\n return draft;\n\n case UserActionTypes.updateUser:\n draft.loading = true;\n draft.userIsFetched = true;\n const phoneNumberValidated =\n draft.user.phoneNumberValidated && draft.user.phoneNumber === action.user.phoneNumber;\n draft.user = {\n ...draft.user,\n ...action.user,\n phoneNumberValidated,\n };\n return draft;\n\n case UserActionTypes.updateUserSuccess:\n draft.loading = false;\n draft.user = {\n ...draft.user,\n ...action.user,\n phoneNumber: action.user.phoneNumber.slice(-10),\n };\n return draft;\n\n case UserActionTypes.fetchUserWithConsultant:\n draft.loading = true;\n return draft;\n\n case UserActionTypes.fetchUserWithConsultantSuccess:\n draft.loading = false;\n draft.user = { ...draft.user, ...action.user };\n return draft;\n\n case UserActionTypes.updateUserFailure:\n case UserActionTypes.fetchUserFailure:\n case UserActionTypes.fetchUserWithConsultantFailure:\n case UserActionTypes.registerUserSuccess:\n draft.loading = false;\n return draft;\n\n case UserActionTypes.registerUserFailure:\n draft.loading = false;\n draft.registrationFailedErrorType = action.error.ErrorType;\n return draft;\n\n case UserActionTypes.resetRegistrationFailedErrorType:\n draft.registrationFailedErrorType = initialState.registrationFailedErrorType;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import produce from 'immer';\nimport { VoucherState } from './voucher-state-models';\nimport { VoucherActionTypes } from './voucher.actions';\n\nexport const initialState: VoucherState = {\n loading: false,\n email: null,\n vouchers: [],\n retryCounter: -1,\n error: null,\n prevalidated: false,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case VoucherActionTypes.resetVoucherStore:\n return initialState;\n\n case VoucherActionTypes.createVoucher:\n draft.loading = true;\n draft.retryCounter = initialState.retryCounter;\n return;\n\n case VoucherActionTypes.receiveVoucher:\n draft.loading = true;\n return;\n\n case VoucherActionTypes.receiveVoucherFailure:\n case VoucherActionTypes.generateVoucherFailure:\n draft.loading = false;\n return;\n\n case VoucherActionTypes.createVoucherFailure:\n draft.loading = false;\n draft.error = { errors: action.error.errors };\n return;\n\n case VoucherActionTypes.setVoucherEmail:\n draft.email = action.email;\n return;\n\n case VoucherActionTypes.retryReceiveVoucher:\n draft.retryCounter++;\n return;\n\n case VoucherActionTypes.receiveVoucherSuccess:\n draft.loading = false;\n draft.vouchers = action.vouchers;\n return;\n\n case VoucherActionTypes.resetVoucherErrors:\n draft.error = initialState.error;\n draft.prevalidated = false;\n return;\n\n case VoucherActionTypes.prevalidateVoucher:\n draft.prevalidated = false;\n return;\n\n case VoucherActionTypes.prevalidateVoucherSuccess:\n draft.prevalidated = true;\n return;\n\n case VoucherActionTypes.prevalidateVoucherFailure:\n draft.prevalidated = true;\n draft.error = action.error?.error;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import { WebsiteModeActionTypes } from './website-mode.actions';\nimport { produce } from 'immer';\nimport { WebsiteMode } from '@core/enums/website-mode.enum';\nimport { WebsiteModeState } from './website-mode-state-models';\n\nexport const initialState: WebsiteModeState = {\n websiteMode: WebsiteMode.corporate,\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case WebsiteModeActionTypes.setWebsiteMode:\n draft.websiteMode = action.websiteMode;\n return;\n\n default:\n return;\n }\n}, initialState);\n","import produce from 'immer';\nimport { WishlistState } from './wishlist-state-models';\nimport { WishlistActionTypes } from './wishlist.actions';\n\nexport const initialState: WishlistState = {\n loading: false,\n wishListItems: [],\n};\n\nexport const reducer = produce((draft, action) => {\n switch (action.type) {\n case WishlistActionTypes.resetWishlistState:\n return initialState;\n\n case WishlistActionTypes.fetchWishlist:\n draft.loading = true;\n return;\n\n case WishlistActionTypes.fetchWishlistSuccess:\n draft.loading = false;\n draft.wishListItems = action.wishListItems;\n return;\n\n case WishlistActionTypes.fetchWishlistFailure:\n draft.loading = false;\n return;\n\n case WishlistActionTypes.addToWishlistSuccess:\n case WishlistActionTypes.deleteFromWishlistSuccess:\n draft.wishListItems = action.wishListResponse.wishListItems;\n return;\n\n default:\n return draft;\n }\n}, initialState);\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport {\n CreateProductReviewRequest,\n FetchProductReviewRequest,\n FetchProductReviewResponse,\n ProductReviewResponse,\n} from '@core/dto/product-review.dto';\nimport { Locale } from '@core/enums/locale';\nimport { environment } from '@env';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { removeNilProperties } from '@shared/utils/object-utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductReviewService {\n baseUrl: string = environment.ecommerceBackendUri;\n culture: Locale;\n\n constructor(\n private http: HttpClient,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {\n this.culture = getCulture(localeId);\n }\n\n fetchProductReviews(request: FetchProductReviewRequest): Observable {\n const { sku, ...params } = request;\n return this.http.get(`${this.baseUrl}api/product/${sku}/reviews`, {\n params: new HttpParams({\n fromObject: removeNilProperties({\n ...params,\n pageNumber: params.pageNumber?.toString(),\n pageSize: params.pageSize.toString(),\n }),\n }),\n });\n }\n\n createProductReview(request: CreateProductReviewRequest): Observable {\n return this.http.post(`${this.baseUrl}api/product/review`, request, {\n params: new HttpParams({\n fromObject: { culture: this.culture },\n }),\n });\n }\n}\n","import { environment } from '@env';\nimport { ActionReducerMap, MetaReducer } from '@ngrx/store';\nimport { WebsiteModeState } from './website-mode/website-mode-state-models';\n\nimport { AddressEffects } from '@core/store/address/address.effects';\nimport { PaymentEffects } from '@core/store/payment/payment.effects';\nimport { AuthEffects } from './auth/auth.effects';\nimport { BlogEffects } from './blog/blog.effects';\nimport { CartEffects } from './cart/cart.effects';\nimport { CheckoutEffects } from './checkout/checkout.effects';\nimport { ConditionalContentEffects } from './conditional-content/conditional-content.effects';\nimport { ConsultantEffects } from './consultant/consultant.effects';\nimport { ContactUsEffects } from './contact-us/contact-us.effects';\nimport { FooterEffects } from './footer/footer.effects';\nimport { MagazineEffects } from './magazine/magazine.effects';\nimport { OrderEffects } from './order/order.effects';\nimport { ProductEffects } from './product/product.effects';\nimport { RecipeEffects } from './recipe/recipe.effects';\nimport { ReturnEffects } from './return/return.effects';\nimport { SearchEffects } from './search/search.effects';\nimport { ShareEffects } from './share/share.effects';\nimport { StartNowAppEffects } from './start-now-app/start-now-app.effects';\nimport { UserEffects } from './user/user.effects';\nimport { VoucherEffects } from './voucher/voucher.effects';\nimport { WishlistEffects } from './wishlist/wishlist.effects';\n\nimport * as fromAddress from './address/address.reducer';\nimport * as fromAuth from './auth/auth.reducer';\nimport * as fromBlog from './blog/blog.reducer';\nimport * as fromCart from './cart/cart.reducer';\nimport * as fromCheckout from './checkout/checkout.reducer';\nimport * as fromConditionalContent from './conditional-content/conditional-content.reducer';\nimport * as fromConsultant from './consultant/consultant.reducer';\nimport * as fromContactUs from './contact-us/contact-us.reducer';\nimport * as fromFooter from './footer/footer.reducer';\nimport * as fromMagazine from './magazine/magazine.reducer';\nimport * as fromOrder from './order/order.reducer';\nimport * as fromPayment from './payment/payment.reducer';\nimport * as fromProductReview from './product-review/product-review.reducer';\nimport * as fromProduct from './product/product.reducer';\nimport * as fromRecipe from './recipe/recipe.reducer';\nimport * as fromReturn from './return/return.reducer';\nimport * as fromSearch from './search/search.reducer';\nimport * as fromShare from './share/share.reducer';\nimport * as fromStartNowApp from './start-now-app/start-now-app.reducer';\nimport * as fromUser from './user/user.reducer';\nimport * as fromVoucher from './voucher/voucher.reducer';\nimport * as fromWebsiteMode from './website-mode/website-mode.reducer';\nimport * as fromWishlist from './wishlist/wishlist.reducer';\n\nimport { PaymentState } from '@core/store/payment/payment-state-models';\nimport { AddressState } from './address/address-state-models';\nimport { AuthState } from './auth/auth-state-models';\nimport { BlogState } from './blog/blog-state-models';\nimport { CartState } from './cart/cart-state-models';\nimport { CheckoutState } from './checkout/checkout-state-models';\nimport { ConditionalContentState } from './conditional-content/conditional-content-state-models';\nimport { ConsultantState } from './consultant/consultant-state-models';\nimport { ContactUsState } from './contact-us/contact-us-state-models';\nimport { FooterState } from './footer/footer.reducer';\nimport { MagazineState } from './magazine/magazine.reducer';\nimport { OrderState } from './order/order-state-models';\nimport { ProductReviewState } from './product-review/product-review-state-models';\nimport { ProductReviewEffects } from './product-review/product-review.effect';\nimport { ProductState } from './product/product-state-models';\nimport { RecipeState } from './recipe/recipe-state-models';\nimport { ReturnState } from './return/return-state-models';\nimport { SearchState } from './search/search-state-models';\nimport { ShareState } from './share/share-state-models';\nimport { StartNowAppState } from './start-now-app/start-now-app-state-models';\nimport { UserState } from './user/user-state-models';\nimport { VoucherState } from './voucher/voucher-state-models';\nimport { WishlistState } from './wishlist/wishlist-state-models';\n\nexport interface AppState {\n authState: AuthState;\n conditionalContentState: ConditionalContentState;\n footerState: FooterState;\n magazineState: MagazineState;\n userState: UserState;\n productState: ProductState;\n productReviewState: ProductReviewState;\n cartState: CartState;\n addressState: AddressState;\n consultantState: ConsultantState;\n websiteModeState: WebsiteModeState;\n recipeState: RecipeState;\n wishlistState: WishlistState;\n blogState: BlogState;\n checkoutState: CheckoutState;\n searchState: SearchState;\n orderState: OrderState;\n contactUsState: ContactUsState;\n paymentState: PaymentState;\n startNowAppState: StartNowAppState;\n shareState: ShareState;\n returnState: ReturnState;\n voucherState: VoucherState;\n}\n\nexport const effects = [\n UserEffects,\n AuthEffects,\n FooterEffects,\n MagazineEffects,\n ProductEffects,\n ProductReviewEffects,\n ConditionalContentEffects,\n CartEffects,\n AddressEffects,\n ConsultantEffects,\n RecipeEffects,\n WishlistEffects,\n BlogEffects,\n OrderEffects,\n CheckoutEffects,\n SearchEffects,\n OrderEffects,\n ContactUsEffects,\n PaymentEffects,\n StartNowAppEffects,\n ShareEffects,\n ReturnEffects,\n VoucherEffects,\n];\n\nexport const reducers: ActionReducerMap = {\n authState: fromAuth.reducer,\n conditionalContentState: fromConditionalContent.reducer,\n footerState: fromFooter.reducer,\n magazineState: fromMagazine.reducer,\n userState: fromUser.reducer,\n productState: fromProduct.reducer,\n productReviewState: fromProductReview.reducer,\n cartState: fromCart.reducer,\n addressState: fromAddress.reducer,\n consultantState: fromConsultant.reducer,\n websiteModeState: fromWebsiteMode.reducer,\n recipeState: fromRecipe.reducer,\n wishlistState: fromWishlist.reducer,\n blogState: fromBlog.reducer,\n orderState: fromOrder.reducer,\n checkoutState: fromCheckout.reducer,\n searchState: fromSearch.reducer,\n contactUsState: fromContactUs.reducer,\n paymentState: fromPayment.reducer,\n startNowAppState: fromStartNowApp.reducer,\n shareState: fromShare.reducer,\n returnState: fromReturn.reducer,\n voucherState: fromVoucher.reducer,\n};\n\nexport function getReducers(): ActionReducerMap {\n return reducers;\n}\n\nexport const metaReducers: MetaReducer[] = !environment.production ? [] : [];\n","import { Injectable } from '@angular/core';\nimport { ProductReviewService } from '@core/services/product-review.service';\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { convertToLocalizedDate } from '@shared/utils/localize-date-utils';\nimport { ToastrService } from 'ngx-toastr';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, mergeMap, tap } from 'rxjs/operators';\nimport { selectProductReviewsState } from '.';\nimport { AppState } from '..';\nimport * as productReviewActions from './product-review.action';\n@Injectable()\nexport class ProductReviewEffects {\n fetchProductReviews$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productReviewActions.fetchProductReviews),\n mergeMap(({ payload }) =>\n this.productReviewService.fetchProductReviews({ ...payload, pageNumber: 1 }).pipe(\n map((res) =>\n productReviewActions.fetchProductReviewsSuccess({\n productReviews: res.productReviews.map((review) => ({\n ...review,\n date: convertToLocalizedDate(review.date),\n })),\n pageSize: payload.pageSize,\n }),\n ),\n catchError(() => of(productReviewActions.fetchProductReviewsFailure())),\n ),\n ),\n ),\n );\n\n fetchMoreProductReviews$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productReviewActions.fetchMoreProductReviews),\n concatLatestFrom(() => this.store$.select(selectProductReviewsState)),\n filter(([, productReviewsState]) => !productReviewsState?.isAllFetched),\n mergeMap(([{ payload }, productReviewsState]) =>\n this.productReviewService\n .fetchProductReviews({\n ...payload,\n pageNumber: Math.ceil(productReviewsState.productReviews.length / payload.pageSize) + 1,\n })\n .pipe(\n map((res) =>\n productReviewActions.fetchProductReviewsSuccess({\n productReviews: res.productReviews.map((review) => ({\n ...review,\n date: convertToLocalizedDate(review.date),\n })),\n pageSize: payload.pageSize,\n }),\n ),\n catchError(() => of(productReviewActions.fetchProductReviewsFailure())),\n ),\n ),\n ),\n );\n\n fetchProductReviewsFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productReviewActions.fetchProductReviewsFailure),\n tap(() => {\n this.toastr.error($localize`Failed to fetch review`, $localize`Review fetching error`);\n }),\n ),\n { dispatch: false },\n );\n\n createProductReview$ = createEffect(() =>\n this.actions$.pipe(\n ofType(productReviewActions.createProductReview),\n mergeMap(({ request }) =>\n this.productReviewService.createProductReview(request).pipe(\n map((productReview) =>\n productReviewActions.createProductReviewSuccess({\n productReview: {\n ...productReview,\n date: convertToLocalizedDate(productReview.date),\n },\n }),\n ),\n catchError(() => of(productReviewActions.createProductReviewFailure())),\n ),\n ),\n ),\n );\n\n createProductReviewSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productReviewActions.createProductReviewSuccess),\n tap(() => {\n this.toastr.success($localize`Review added`, $localize`Success`);\n }),\n ),\n { dispatch: false },\n );\n\n createProductReviewFailure$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(productReviewActions.createProductReviewFailure),\n tap(() => {\n this.toastr.error($localize`Failed to create review`, $localize`Create review error`);\n }),\n ),\n { dispatch: false },\n );\n\n constructor(\n private actions$: Actions,\n private toastr: ToastrService,\n private productReviewService: ProductReviewService,\n private store$: Store,\n ) {}\n}\n","import { createAction, props } from '@ngrx/store';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Magazine } from './magazine-state-models';\n\nexport enum MagazineActionTypes {\n fetchMagazinesPage = '[Magazine] Fetch magazines page',\n fetchMagazinePageSuccess = '[Magazine] Fetch magazines page success',\n fetchMagazinesPageError = '[Magazine] Fetch magazines page error',\n resetMagazineStore = '[MagazineList Component] Reset magazine store',\n}\n\nexport const fetchMagazinesPage = createAction(\n MagazineActionTypes.fetchMagazinesPage,\n props<{ pageStart: number; pageSize: number }>(),\n);\n\nexport const fetchMagazinePageSuccess = createAction(\n MagazineActionTypes.fetchMagazinePageSuccess,\n props<{ magazines: Magazine[]; pageSize: number }>(),\n);\n\nexport const fetchMagazinesPageError = createAction(\n MagazineActionTypes.fetchMagazinesPageError,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const resetMagazineStore = createAction(MagazineActionTypes.resetMagazineStore);\n","import { OrderState } from '@core/store/order/order-state-models';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\n\nexport const orderStateFeatureKey = 'orderState';\n\nexport const selectOrderFeature = createFeatureSelector(orderStateFeatureKey);\n\nexport const selectOrderHistory = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.orderHistory : [],\n);\n\nexport const selectCCOrderHistory = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.ccOrderHistory : [],\n);\n\nexport const selectOrderStateLoading = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.loading : false,\n);\n\nexport const selectCCOrderStateLoading = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.loading : false,\n);\n\nexport const selectOrderDetails = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.orderDetails : null,\n);\n\nexport const selectCCOrderDetails = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.ccOrderDetails : null,\n);\n\nexport const selectSubmittedOrder = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.submittedOrder : null,\n);\n\nexport const selectIsFetchedPartyOrderPayment = createSelector(\n selectOrderFeature,\n (state: OrderState) => (state ? state.partyOrderPayment.fetched : null),\n);\n\nexport const selectPartyOrderData = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.partyOrderPayment.partyOrderData : null,\n);\n\nexport const selectPartyOrderStatus = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.partyOrderPayment.status : null,\n);\n\nexport const selectOrderDetailCartons = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.orderDetails.cartons : [],\n);\n\nexport const selectOrderDetailBackOrderItems = createSelector(\n selectOrderFeature,\n (state: OrderState) => (state ? state.orderDetails.backOrderItems : []),\n);\n\nexport const selectSubmittedOrderStatus = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.submittedOrder.status : null,\n);\n\nexport const selectPartyOrderError = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.partyOrderPayment.partyOrderError : null,\n);\n\nexport const selectIsSubmitDisabled = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.isSubmitDisabled : false,\n);\n\nexport const selectSubmissionErrorType = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.submittedOrder.submissionErrorType : null,\n);\n\nexport const selectPartyOrderBaseData = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.partyOrderPayment?.partyOrderBaseData : null,\n);\n\nexport const selectUpdatedOrderItems = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.submittedOrder.updatedItems : [],\n);\n\nexport const selectDeletedOrderItems = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.submittedOrder.deletedItems : [],\n);\n\nexport const selectShippedCartonDetailsData = createSelector(\n selectOrderFeature,\n (state: OrderState) => (state ? state.shippedCartonDetails.shippedCartonDetailsData : null),\n);\n\nexport const selectShippedCartonsError = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.shippedCartonDetails.shippedCartonError : null,\n);\n\nexport const selectOrderHasPaymentError = createSelector(selectOrderFeature, (state: OrderState) =>\n state ? state.hasPaymentError : false,\n);\n","import { OrderType } from '@core/enums/order-type.enum';\nimport { PartyOrderErrorType } from '@core/enums/party-order-error-type.enum';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { OrderStatus } from '@core/enums/shipment-status-enum';\nimport { ImageDetails } from '@core/models/image.model';\nimport { Cart, OrderLine } from '@core/store/cart/cart-state-models';\nimport { ReceivedVoucher } from '../voucher/voucher-state-models';\n\nexport interface OrderState {\n loading: boolean;\n isSubmitDisabled: boolean;\n orderHistory: OrderHistoryItem[];\n ccOrderHistory: CCOrderHistoryItem[];\n orderDetails: OrderDetails;\n ccOrderDetails: CCOrderDetails;\n hasPaymentError: boolean;\n submittedOrder: SubmittedOrder;\n partyOrderPayment: PartyOrderPayment;\n shippedCartonDetails: ShippedCartonDetails;\n}\n\nexport interface OrderHistoryItem {\n orderId: string;\n orderNumber: string;\n total: number;\n createdDate: Date;\n orderStatus: OrderStatus;\n orderType: OrderType;\n consultant: string;\n partyHost?: string;\n}\n\nexport interface CCOrderHistoryItem {\n masterOrderId: number;\n poeOrderId: string;\n dateReceived: string;\n generatedEmail: string;\n ecommerceStatus: string;\n totalMerchCost: number;\n}\n\nexport interface OrderDetails {\n orderId: string;\n orderNumber: string;\n createdDate: Date;\n orderStatus: OrderStatus;\n orderType: OrderType;\n isCouponApplied: boolean;\n promotionalDiscount: number;\n merchandiseTotal: number;\n deliveryFeeTotal: number;\n salesTaxTotal: number;\n totalPrice: number;\n orderLines: OrderLineDetails[];\n shippingAddress: OrderAddress;\n billingAddress: OrderAddress;\n personalInformation: OrderCustomer;\n consultantFirstName: string;\n consultantLastName: string;\n cardFirstFourDigits?: string;\n cardLastFourDigits?: string;\n partyHost?: string;\n cartons: OrderDetailsCarton[];\n vouchers: ReceivedVoucher[];\n backOrderItems?: OrderDetailsBackOrderItem[];\n}\n\nexport interface OrderDetailsCarton {\n id: string;\n name: string;\n trackingNumber?: string;\n trackingUrl: string;\n carrier?: string;\n shippingDate: string;\n weight: number;\n cartonItems: OrderDetailsCartonItem[];\n}\n\nexport interface OrderDetailsCartonItem {\n id: string;\n sku: string;\n name: string;\n qty: number;\n images: ImageDetails[];\n}\n\nexport interface OrderDetailsBackOrderItem {\n skuCode: string;\n skuDescription: string;\n name: string;\n quantity: number;\n}\n\nexport interface OrderCustomer {\n firstName: string;\n lastName: string;\n email: string;\n phoneNumber: string;\n}\n\nexport interface OrderAddress {\n firstName: string;\n lastName: string;\n addressLine1: string;\n addressLine2: string;\n addressLine3?: string;\n phoneNumber?: string;\n city: string;\n state: string;\n zipCode: string;\n country: string;\n}\n\nexport interface OrderLineDetails {\n orderLineId: string;\n collectionName: string;\n productName: string;\n sku: string;\n quantity: number;\n originalPrice: number;\n discountedPrice: number;\n total: number;\n images: ImageDetails[];\n isPFASItem: boolean;\n}\n\nexport interface CCOrderDetails {\n masterOrderId: number;\n dateReceived: Date;\n ecommerceStatus: string;\n shippingNameInfo: CustomerNameInfo;\n shippingAddressInfo: AddressInformation;\n products: ConsultantCornerOrderItem[];\n totalMerchandiseCost: number;\n shippingCost: number;\n tax: Tax;\n}\n\nexport interface CustomerNameInfo {\n firstName: string;\n lastName: string;\n}\n\nexport interface AddressInformation {\n city: string;\n stateProvince: string;\n zipPostalCode: string;\n address1: string;\n address2: string;\n address3: string;\n}\n\nexport interface ConsultantCornerOrderItem {\n skuCode: string;\n productName: string;\n quantity: number;\n price: number;\n totalPrice: number;\n}\n\nexport interface Tax {\n exemptCode: string;\n finalAmount: number;\n percentage: number;\n}\n\nexport interface SubmittedOrder {\n status: SubmittedOrderStatus;\n submissionErrorType: PhExceptionErrorType;\n submittedOrderId: string;\n cart: Cart;\n updatedItems: FailedOrderItem[];\n deletedItems: FailedOrderItem[];\n}\n\nexport interface FailedOrderItem extends OrderLine {\n actualPrice: number;\n}\n\nexport enum SubmittedOrderStatus {\n initial,\n inProgress,\n success,\n failure,\n}\n\nexport interface PartyOrderPayment {\n fetched: boolean;\n status: SubmittedOrderStatus;\n partyOrderData: PartyOrderData;\n partyOrderError: PartyOrderError;\n partyOrderBaseData: PartyOrderBaseData;\n}\n\nexport interface PartyOrderData {\n hostessName: string;\n orderNumber: number;\n receivedDate: string;\n totalOrderAmount: number;\n paymentReceived: number;\n balanceDue: number;\n consultantBeeNumber: number;\n consultantName: string;\n}\n\nexport interface PartyOrderError {\n Message: PartyOrderErrorType;\n}\n\nexport interface PartyOrderBaseData {\n masterOrderId: number;\n amount: number;\n}\n\nexport interface ShippedCartonDetails {\n shippedCartonDetailsData: ShippedCartonDetailsData;\n shippedCartonError: string;\n}\n\nexport interface ShippedCartonDetailsData {\n masterOrderId: number;\n shippedCartons: ShippedCarton[];\n backorderItems: ShippedCartonSku[];\n pickingSlipDocuments: PickingSlipDocument[];\n}\n\nexport interface ShippedCarton {\n carrier: string;\n receiverName: string;\n trackingNumber: string;\n trackingUrl: string;\n cartonNumber: number;\n pdfAvailable?: boolean;\n pickSlipNumber?: number;\n shippingDate: Date;\n skus: ShippedCartonSku[];\n weight: number;\n}\n\nexport interface ShippedCartonSku {\n skuCode: string;\n skuDescription: string;\n quantity: number;\n}\n\nexport interface PickingSlipDocument {\n pickSlipNumber: number;\n pdfUrl: string;\n}\n","import {\n AddPaymentToPartyOrderRequest,\n AddPaymentToPartyOrderResponse,\n LogCardAttemptRequest,\n SubmitOrderRequest,\n SubmitOrderResponse,\n} from '@core/dto/order.dto';\nimport { PhErrorResponse } from '@core/dto/ph-error';\nimport { Cart } from '@core/store/cart/cart-state-models';\nimport {\n CCOrderDetails,\n CCOrderHistoryItem,\n FailedOrderItem,\n OrderDetails,\n OrderHistoryItem,\n PartyOrderBaseData,\n PartyOrderData,\n PartyOrderError,\n ShippedCartonDetailsData,\n SubmittedOrderStatus,\n} from '@core/store/order/order-state-models';\nimport { createAction, props } from '@ngrx/store';\n\nexport enum OrderActionTypes {\n resetOrderHistoryState = '[Order] Reset order history state',\n\n fetchOrderHistory = '[Order] Fetch order history',\n fetchOrderHistorySuccess = '[Order] Fetch order history success',\n fetchOrderHistoryFailure = '[Order] Fetch order history failure',\n\n fetchCCOrderHistory = '[Order] Fetch CC order history',\n fetchCCOrderHistorySuccess = '[Order] Fetch CC order history success',\n fetchCCOrderHistoryFailure = '[Order] Fetch CC order history failure',\n\n resetOrderDetailsState = '[Order] Reset order details state',\n\n fetchOrderDetails = '[Order] Fetch order details',\n fetchOrderDetailsSuccess = '[Order] Fetch order details success',\n fetchOrderDetailsFailure = '[Order] Fetch order details failure',\n\n resetCCOrderDetailsState = '[Order] Reset CC order details state',\n\n fetchCCOrderDetails = '[Order] Fetch CC order details',\n fetchCCOrderDetailsSuccess = '[Order] CC Fetch order details success',\n fetchCCOrderDetailsFailure = '[Order] CC Fetch order details failure',\n\n submitOrder = '[Order] Submit Order',\n submitOrderSuccess = '[Order] Submit Order Success',\n submitOrderFailure = '[Order] Submit Order Failure',\n resetSubmittedOrderState = '[Order] Reset Submitted Order State',\n resetIsSubmitDisabledAndErrorType = '[Order] Reset is submit disabled',\n resetFailedOrderItems = '[Order] Reset failedOrderItems',\n setSubmissionStatus = '[Order] Set submission status',\n resetSubmissionStatus = '[Order] Reset submission status',\n\n fetchPartyOrderData = '[Order] Fetch party order data',\n fetchPartyOrderDataSuccess = '[Order] Fetch party order data success',\n fetchPartyOrderDataFailure = '[Order] Fetch party order data failure',\n\n storePartyOrderBaseData = '[Order] Store Party Order base data',\n\n submitPartyOrder = '[Order] Submit party order',\n submitPartyOrderSuccess = '[Order] Submit party order success',\n submitPartyOrderFailure = '[Order] Submit party order failure',\n\n resetPartyOrderFetched = '[Order] Reset party order fetched',\n\n logCardAttempt = '[Order] Log card attempt',\n logCardAttemptSuccess = '[Order] Log card attempt success',\n logCardAttemptFailure = '[Order] Log card attempt failure',\n\n fetchShippedCartonsData = '[Order] Fetch shipped cartons data',\n fetchShippedCartonsSuccess = '[Order] Fetch shipped cartons data success',\n fetchShippedCartonsFailure = '[Order] Fetch shipped cartons data failure',\n\n resetHasPaymentError = '[Order] Reset hasPaymentError',\n}\n\nexport const resetOrderHistoryState = createAction(OrderActionTypes.resetOrderHistoryState);\nexport const fetchOrderHistory = createAction(OrderActionTypes.fetchOrderHistory);\nexport const fetchOrderHistorySuccess = createAction(\n OrderActionTypes.fetchOrderHistorySuccess,\n props<{ payload: OrderHistoryItem[] }>(),\n);\nexport const fetchOrderHistoryFailure = createAction(\n OrderActionTypes.fetchOrderHistoryFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const fetchCCOrderHistory = createAction(OrderActionTypes.fetchCCOrderHistory);\nexport const fetchCCOrderHistorySuccess = createAction(\n OrderActionTypes.fetchCCOrderHistorySuccess,\n props<{ payload: CCOrderHistoryItem[] }>(),\n);\nexport const fetchCCOrderHistoryFailure = createAction(\n OrderActionTypes.fetchCCOrderHistoryFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const resetOrderDetailsState = createAction(OrderActionTypes.resetOrderDetailsState);\nexport const fetchOrderDetails = createAction(\n OrderActionTypes.fetchOrderDetails,\n props<{ orderId: string }>(),\n);\nexport const fetchOrderDetailsSuccess = createAction(\n OrderActionTypes.fetchOrderDetailsSuccess,\n props<{ payload: OrderDetails }>(),\n);\nexport const fetchOrderDetailsFailure = createAction(\n OrderActionTypes.fetchOrderDetailsFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const resetCCOrderDetailsState = createAction(OrderActionTypes.resetCCOrderDetailsState);\nexport const fetchCCOrderDetails = createAction(\n OrderActionTypes.fetchCCOrderDetails,\n props<{ poeOrderId: string }>(),\n);\nexport const fetchCCOrderDetailsSuccess = createAction(\n OrderActionTypes.fetchCCOrderDetailsSuccess,\n props<{ payload: CCOrderDetails }>(),\n);\nexport const fetchCCOrderDetailsFailure = createAction(\n OrderActionTypes.fetchCCOrderDetailsFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Submit Order\n **/\nexport const submitOrder = createAction(\n OrderActionTypes.submitOrder,\n props<{ request: SubmitOrderRequest }>(),\n);\nexport const submitOrderSuccess = createAction(\n OrderActionTypes.submitOrderSuccess,\n props<{\n payload: {\n cart: Cart;\n response: SubmitOrderResponse;\n };\n }>(),\n);\nexport const submitOrderFailure = createAction(\n OrderActionTypes.submitOrderFailure,\n props<{\n error: PhErrorResponse;\n updatedItems: FailedOrderItem[];\n deletedItems: FailedOrderItem[];\n }>(),\n);\nexport const resetSubmittedOrderState = createAction(OrderActionTypes.resetSubmittedOrderState);\nexport const resetIsSubmitDisabled = createAction(\n OrderActionTypes.resetIsSubmitDisabledAndErrorType,\n);\nexport const resetFailedOrderItems = createAction(OrderActionTypes.resetFailedOrderItems);\nexport const setSubmissionStatus = createAction(\n OrderActionTypes.setSubmissionStatus,\n props<{ status: SubmittedOrderStatus }>(),\n);\nexport const resetSubmissionStatus = createAction(OrderActionTypes.resetSubmissionStatus);\n\n/**\n * Fetch party order data\n */\nexport const fetchPartyOrderData = createAction(\n OrderActionTypes.fetchPartyOrderData,\n props<{ orderNumber: string }>(),\n);\nexport const fetchPartyOrderDataSuccess = createAction(\n OrderActionTypes.fetchPartyOrderDataSuccess,\n props<{ partyOrderData: PartyOrderData }>(),\n);\nexport const fetchPartyOrderDataFailure = createAction(\n OrderActionTypes.fetchPartyOrderDataFailure,\n props<{ error: PartyOrderError; status: number }>(),\n);\n\n/**\n * Reset party order fetchSuccess\n */\nexport const resetPartyOrderFetched = createAction(OrderActionTypes.resetPartyOrderFetched);\n\n/**\n * Store Party Order base data\n */\nexport const storePartyOrderBaseData = createAction(\n OrderActionTypes.storePartyOrderBaseData,\n props<{ payload: PartyOrderBaseData }>(),\n);\n\n/**\n * Submit party order\n */\nexport const submitPartyOrder = createAction(\n OrderActionTypes.submitPartyOrder,\n props<{ request: AddPaymentToPartyOrderRequest }>(),\n);\nexport const submitPartyOrderSuccess = createAction(\n OrderActionTypes.submitPartyOrderSuccess,\n props<{\n payload: AddPaymentToPartyOrderResponse;\n }>(),\n);\nexport const submitPartyOrderFailure = createAction(\n OrderActionTypes.submitPartyOrderFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Log card attempt\n */\nexport const logCardAttempt = createAction(\n OrderActionTypes.logCardAttempt,\n props<{ request: LogCardAttemptRequest }>(),\n);\n\nexport const logCardAttemptSuccess = createAction(OrderActionTypes.logCardAttemptSuccess);\n\nexport const logCardAttemptFailure = createAction(\n OrderActionTypes.logCardAttemptFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Fetch shipped cartons\n */\nexport const fetchShippedCartonsData = createAction(\n OrderActionTypes.fetchShippedCartonsData,\n props<{ orderUID: string; orderId: string }>(),\n);\n\nexport const fetchShippedCartonsSuccess = createAction(\n OrderActionTypes.fetchShippedCartonsSuccess,\n props<{ payload: ShippedCartonDetailsData }>(),\n);\n\nexport const fetchShippedCartonsFailure = createAction(\n OrderActionTypes.fetchShippedCartonsFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Reset hasPaymentError\n */\nexport const resetHasPaymentError = createAction(OrderActionTypes.resetHasPaymentError);\n","import { PaymentState } from '@core/store/payment/payment-state-models';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\n\nexport const paymentStateFeatureKey = 'paymentState';\n\nexport const selectPaymentFeature = createFeatureSelector(paymentStateFeatureKey);\n\nexport const selectClientToken = createSelector(selectPaymentFeature, (state: PaymentState) =>\n state ? state.cardInfo?.clientToken : '',\n);\n\nexport const selectCustomerId = createSelector(selectPaymentFeature, (state: PaymentState) =>\n state ? state.customerId : '',\n);\n\nexport const selectPartyOrderCustomerId = createSelector(\n selectPaymentFeature,\n (state: PaymentState) => (state ? state.partyOrderCustomerId : ''),\n);\n\nexport const selectPaymentMethodsState = createSelector(\n selectPaymentFeature,\n (state: PaymentState) => (state ? state.paymentMethods : null),\n);\n\nexport const selectPaymentInfo = createSelector(selectPaymentFeature, (state: PaymentState) =>\n state ? state.paymentInfo : null,\n);\n\nexport const selectCreatePaymentMethodResponse = createSelector(\n selectPaymentFeature,\n (state: PaymentState) => (state ? state.createdCardPaymentMethod : null),\n);\n\nexport const selectCreatePaymentMethodFailed = createSelector(\n selectPaymentFeature,\n (state: PaymentState) => (state ? state.paymentMethods.createFailed : false),\n);\n\nexport const selectPaymentMethodLoading = createSelector(\n selectPaymentFeature,\n (state: PaymentState) => (state ? state.paymentMethods.loading : false),\n);\n\nexport const selectPayPalOrder = createSelector(selectPaymentFeature, (state: PaymentState) =>\n state ? state.paymentInfo?.order?.orderId : null,\n);\n\nexport const selectPaymentLoading = createSelector(selectPaymentFeature, (state: PaymentState) =>\n state ? state.loading || state.paymentMethods?.loading : false,\n);\n","/* eslint-disable max-len */\nimport { BankTransferErrorType } from '@core/enums/bank-transfer-error-type.enum';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentCardType } from '@core/enums/payment-type.enum';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { StatusCodes } from 'http-status-codes';\nimport { GeneralPhErrorResponse } from '../common-store.model';\n\nexport interface PaymentState {\n customerId: string;\n partyOrderCustomerId: string;\n loading: boolean;\n paymentInfo: PaymentInfo;\n cardInfo: CardPaymentInfo;\n createdCardPaymentMethod?: CreatedCardPaymentMethod;\n hasSavedCard: boolean;\n paymentMethods: {\n loading: boolean;\n items: PaymentMethodItem[];\n createFailed: boolean;\n };\n}\n\nexport interface PaymentMethodItem {\n id: string;\n cardName: string;\n cardNumber: string;\n cardType: string;\n expiryDate: string;\n isExpired: boolean;\n type: PaymentMethodType;\n provider: PaymentProviderType;\n}\n\nexport enum PaymentMethodType {\n default = 'Default',\n other = 'Set Default',\n}\n\nexport interface ClientTokenResponse {\n clientToken: string;\n customerId: string;\n}\n\nexport interface PaymentInfo {\n /** Braintree nonce */\n nonce?: string | undefined;\n\n /** Nexio save card data */\n cardSaveRequest?: CardSaveRequest;\n\n /** PayPal */\n createPartyOrderPayPalOrder?: CreatePartyOrderPayPalOrder | undefined;\n\n /** The order could be SNA submitted order or PayPal order for Checkout and PartyOrder*/\n order?: CreatedOrder;\n\n firstFour?: string;\n lastFour?: string;\n email?: string;\n deviceData?: string;\n cardholderName?: string;\n expirationMonth?: string;\n expirationYear?: string;\n default?: boolean;\n}\n\nexport interface CreatedCardPaymentMethod {\n id: number;\n message: string;\n /** In SNA sends CreateCardPaymentErrorType, but in EC Checkout and Party Order Payment sends PaymentMethodCreationFailedException */\n errorType: CreateCardPaymentErrorType | PhExceptionErrorType | BankTransferErrorType;\n responseCode: string;\n token: string;\n errors: PaymentError[];\n card: PaymentMethodCardInfo;\n account: PaymentMethodAccountInfo;\n status?: StatusCodes;\n clabe?: string;\n email?: string;\n}\n\nexport interface CreatePartyOrderPayPalOrder {\n masterOrderId: number;\n amount: number;\n}\n\nexport interface CreatePayPalPaymentMethod {\n payPalOrderId: string;\n customerId: string;\n amount: string;\n deviceData: string;\n provider: PaymentProviderType;\n}\n\nexport interface CardPaymentInfo {\n clientToken?: string;\n cardType?: PaymentCardType;\n}\n\nexport interface CreatedVoucherPaymentMethod extends Partial {\n applicationRegistrationId: number;\n vouchers: Voucher[];\n}\n\nexport interface Voucher {\n token?: string;\n voucherUrl?: string;\n}\n\nexport interface PaymentError {\n attribute: string;\n code: string;\n message: string;\n}\n\nexport interface PaymentMethodCardInfo {\n cardholderName: string;\n lastFour: string;\n firstFour: string;\n maskedNumber: string;\n cardType: string;\n expirationDate: string;\n isExpired: boolean;\n expirationYear: number;\n expirationMonth: number;\n createdAt: Date;\n isDefault: boolean;\n}\n\nexport interface PaymentMethodAccountInfo {\n firstName: string;\n lastName: string;\n email: string;\n}\n\nexport interface CreatedOrder {\n orderId: string;\n}\n\nexport interface CardSaveRequest {\n cardSaved?: CardSavedEvent;\n error?: CardSavedErrorEvent;\n}\n\nexport interface CardSavedEvent {\n card?: CardSavedEventCard;\n cardType?: string;\n data?: CardSavedEventData;\n merchantId?: string;\n shouldUpdateCard?: boolean;\n token?: CardToken;\n avsResult?: AvsResults;\n cvcResult?: CvcResults;\n}\n\nexport interface CardSavedErrorEvent {\n error?: number;\n message?: string;\n merchantId?: string;\n cvcResults?: CvcResults;\n avsResults?: AvsResults;\n}\n\nexport interface CardSavedEventCard {\n cardHolderName?: string;\n cardType?: string;\n expirationMonth?: number;\n expirationYear?: number;\n}\nexport interface CardSavedEventData {\n customer?: PaymentCustomer;\n}\n\nexport interface CardToken {\n cardType?: string;\n firstSix?: string;\n lastFour?: string;\n token?: string;\n}\n\nexport interface CvcResults {\n matchCvv?: boolean;\n error?: boolean;\n gatewayMessage?: GatewayMessage;\n}\n\nexport interface AvsResults {\n matchAddress?: boolean;\n matchPostal?: boolean;\n error?: boolean;\n gatewayMessage?: GatewayMessage;\n}\n\nexport interface GatewayMessage {\n cvvresponse?: string;\n avsresponse?: string;\n message?: string;\n}\n\nexport interface PaymentCustomer {\n billToAddressOne?: string;\n billToAddressTwo?: string;\n billToCity?: string;\n billToCountry?: string;\n billToPhone?: string;\n billToPostal?: string;\n billToState?: string;\n birthDate?: string;\n createdAtDate?: string;\n customerRef?: string;\n email?: string;\n firstName?: string;\n invoice?: string;\n lastName?: string;\n orderDate?: string;\n orderNumber?: string;\n phone?: string;\n shipToAddressOne?: string;\n shipToAddressTwo?: string;\n shipToCity?: string;\n shipToCountry?: string;\n shipToPhone?: string;\n shipToPostal?: string;\n shipToState?: string;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ClientTokenRequest } from '@core/dto/order.dto';\nimport {\n CreatePayPalOrderResponse,\n CreatePaymentMethodRequest,\n CreatePaymentMethodResponse,\n UpdatePayPalOrderResponse,\n} from '@core/dto/payment.dto';\nimport { PhErrorResponse } from '@core/dto/ph-error';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentCardType } from '@core/enums/payment-type.enum';\nimport { createAction, props } from '@ngrx/store';\nimport {\n ClientTokenResponse,\n CreatePartyOrderPayPalOrder,\n PaymentInfo,\n PaymentMethodItem,\n} from './payment-state-models';\n\nexport enum PaymentActionTypes {\n fetchClientToken = '[Payment] Fetch Client Token',\n fetchClientTokenSuccess = '[Payment] Fetch Client Token Success',\n fetchClientTokenFailure = '[Payment] Fetch Client Token Failure',\n\n fetchPartyOrderClientToken = '[Payment] Fetch Party Order Client Token',\n fetchPartyOrderClientTokenSuccess = '[Payment] Fetch Party Order Client Token Success',\n fetchPartyOrderClientTokenFailure = '[Payment] Fetch Party Order Client Token Failure',\n\n resetCardPaymentInfo = '[Payment] Reset Card Payment Info',\n\n fetchPaymentMethods = '[Payment] Fetch payment methods',\n fetchPaymentMethodsSuccess = '[Payment] Fetch payment methods success',\n fetchPaymentMethodsFailure = '[Payment] Fetch payment methods failure',\n resetPaymentMethods = '[Payment] Reset payment methods',\n\n storePaymentInfo = '[Payment] Store Payment Info',\n storePaymentInfoSuccess = '[Payment] Store Payment Info Success',\n storePaymentInfoFailure = '[Payment] Store payment Info Failure',\n resetPaymentInfo = '[Payment] Reset Payment Info',\n storeCardPaymentInfo = '[Payment] Store Card Payment Info',\n\n createPaymentMethod = '[Payment] Create Payment Method',\n createPaymentMethodSuccess = '[Payment] Create Payment Method Success',\n createPaymentMethodFailure = '[Payment] Create Payment Method Failure',\n resetCreatedPaymentMethod = '[Payment] Reset Created Payment Method',\n\n setAsDefault = '[Payment] Set payment method as default',\n setAsDefaultSuccess = '[Payment] Set Payment Method as Default Success',\n setAsDefaultFailure = '[Payment] Set Payment Method as Default Failure',\n\n deletePaymentMethod = '[Payment] Delete payment method',\n deletePaymentMethodSuccess = '[Payment] Delete payment method success',\n deletePaymentMethodFailure = '[Payment] Delete payment method failure',\n\n createCheckoutPayPalOrder = '[Payment] Create Checkout PayPal order',\n createCheckoutPayPalOrderSuccess = '[Payment] Create Checkout PayPal order success',\n createCheckoutPayPalOrderFailure = '[Payment] Create Checkout PayPal order failure',\n\n updateCheckoutPayPalOrder = '[Payment] Update Checkout PayPal order',\n updateCheckoutPayPalOrderSuccess = '[Payment] Update Checkout PayPal order success',\n updateCheckoutPayPalOrderFailure = '[Payment] Update Checkout PayPal order failure',\n\n createPartyOrderPayPalOrder = '[Payment] Create Party Order PayPal order',\n createPartyOrderPayPalOrderSuccess = '[Payment] Create Party Order PayPal order success',\n createPartyOrderPayPalOrderFailure = '[Payment] Create Party Order PayPal order failure',\n}\n\n/**\n * Fetch client token\n **/\nexport const fetchClientToken = createAction(\n PaymentActionTypes.fetchClientToken,\n props<{ payload: ClientTokenRequest }>(),\n);\nexport const fetchClientTokenSuccess = createAction(\n PaymentActionTypes.fetchClientTokenSuccess,\n props<{ payload: ClientTokenResponse }>(),\n);\nexport const fetchClientTokenFailure = createAction(\n PaymentActionTypes.fetchClientTokenFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Fetch party order client token\n */\nexport const fetchPartyOrderClientToken = createAction(\n PaymentActionTypes.fetchPartyOrderClientToken,\n props<{ payload: ClientTokenRequest }>(),\n);\nexport const fetchPartyOrderClientTokenSuccess = createAction(\n PaymentActionTypes.fetchPartyOrderClientTokenSuccess,\n props<{ payload: ClientTokenResponse }>(),\n);\nexport const fetchPartyOrderClientTokenFailure = createAction(\n PaymentActionTypes.fetchPartyOrderClientTokenFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const resetCardPaymentInfo = createAction(PaymentActionTypes.resetCardPaymentInfo);\n\n/**\n * Fetch payment methods\n */\nexport const fetchPaymentMethods = createAction(PaymentActionTypes.fetchPaymentMethods);\nexport const fetchPaymentMethodsSuccess = createAction(\n PaymentActionTypes.fetchPaymentMethodsSuccess,\n props<{ paymentMethods: PaymentMethodItem[] }>(),\n);\nexport const fetchPaymentMethodsFailure = createAction(\n PaymentActionTypes.fetchPaymentMethodsFailure,\n props<{ error: PhErrorResponse }>(),\n);\nexport const resetPaymentMethods = createAction(PaymentActionTypes.resetPaymentMethods);\n\n/**\n * Store payment info\n **/\nexport const storePaymentInfo = createAction(\n PaymentActionTypes.storePaymentInfo,\n props<{ paymentInfo: PaymentInfo }>(),\n);\nexport const storePaymentInfoSuccess = createAction(\n PaymentActionTypes.storePaymentInfoSuccess,\n props<{ payload: PaymentInfo }>(),\n);\nexport const storePaymentInfoFailure = createAction(\n PaymentActionTypes.storePaymentInfoFailure,\n props<{ error: any }>(),\n);\nexport const resetPaymentInfo = createAction(PaymentActionTypes.resetPaymentInfo);\n\nexport const storeCardPaymentInfo = createAction(\n PaymentActionTypes.storeCardPaymentInfo,\n props<{ payload: PaymentCardType }>(),\n);\n\n/**\n * Create Payment Method\n **/\nexport const createPaymentMethod = createAction(\n PaymentActionTypes.createPaymentMethod,\n props<{ payload: CreatePaymentMethodRequest }>(),\n);\nexport const createPaymentMethodSuccess = createAction(\n PaymentActionTypes.createPaymentMethodSuccess,\n props<{ payload: CreatePaymentMethodResponse }>(),\n);\nexport const createPaymentMethodFailure = createAction(\n PaymentActionTypes.createPaymentMethodFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const resetCreatedPaymentMethod = createAction(PaymentActionTypes.resetCreatedPaymentMethod);\n\nexport const setAsDefault = createAction(\n PaymentActionTypes.setAsDefault,\n props<{ token: string; provider: PaymentProviderType }>(),\n);\nexport const setAsDefaultSuccess = createAction(PaymentActionTypes.setAsDefaultSuccess);\nexport const setAsDefaultFailure = createAction(PaymentActionTypes.setAsDefaultFailure);\n\nexport const deletePaymentMethod = createAction(\n PaymentActionTypes.deletePaymentMethod,\n props<{ token: string; provider: PaymentProviderType }>(),\n);\nexport const deletePaymentMethodSuccess = createAction(\n PaymentActionTypes.deletePaymentMethodSuccess,\n);\nexport const deletePaymentMethodFailure = createAction(\n PaymentActionTypes.deletePaymentMethodFailure,\n);\n\n/**\n * Create PayPal Order for Checkout\n **/\nexport const createCheckoutPayPalOrder = createAction(PaymentActionTypes.createCheckoutPayPalOrder);\nexport const createCheckoutPayPalOrderSuccess = createAction(\n PaymentActionTypes.createCheckoutPayPalOrderSuccess,\n props<{ payload: CreatePayPalOrderResponse }>(),\n);\nexport const createCheckoutPayPalOrderFailure = createAction(\n PaymentActionTypes.createCheckoutPayPalOrderFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Update PayPal Order for Checkout\n **/\nexport const updateCheckoutPayPalOrder = createAction(\n PaymentActionTypes.updateCheckoutPayPalOrder,\n props<{ orderId: string }>(),\n);\nexport const updateCheckoutPayPalOrderSuccess = createAction(\n PaymentActionTypes.updateCheckoutPayPalOrderSuccess,\n props<{ payload: UpdatePayPalOrderResponse }>(),\n);\nexport const updateCheckoutPayPalOrderFailure = createAction(\n PaymentActionTypes.updateCheckoutPayPalOrderFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Create PayPal Order for Party Order\n **/\nexport const createPartyOrderPayPalOrder = createAction(\n PaymentActionTypes.createPartyOrderPayPalOrder,\n props<{ payload: CreatePartyOrderPayPalOrder }>(),\n);\nexport const createPartyOrderPayPalOrderSuccess = createAction(\n PaymentActionTypes.createPartyOrderPayPalOrderSuccess,\n props<{ payload: CreatePayPalOrderResponse }>(),\n);\nexport const createPartyOrderPayPalOrderFailure = createAction(\n PaymentActionTypes.createPartyOrderPayPalOrderFailure,\n props<{ error: any }>(),\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { ProductReviewState } from './product-review-state-models';\n\nexport const productReviewFeatureKey = 'productReviewState';\n\nexport const selectProductReviewStateFeature =\n createFeatureSelector(productReviewFeatureKey);\n\nexport const selectLengthOfProductReviews = createSelector(\n selectProductReviewStateFeature,\n (state: ProductReviewState) => (state ? state.productReviews.length : 0),\n);\n\nexport const selectProductReviewsState = createSelector(\n selectProductReviewStateFeature,\n (state: ProductReviewState) => (state ? state : null),\n);\n\nexport const selectProductReviews = createSelector(\n selectProductReviewStateFeature,\n (state: ProductReviewState) => (state ? state.productReviews : []),\n);\n\nexport const selectProductReviewsLoading = createSelector(\n selectProductReviewStateFeature,\n (state: ProductReviewState) => (state ? state.loading : false),\n);\n\nexport const selectAllReviewsFetched = createSelector(\n selectProductReviewStateFeature,\n (state: ProductReviewState) => (state ? state.isAllFetched : false),\n);\n","import { CreateProductReviewRequest } from '@core/dto/product-review.dto';\nimport { createAction, props } from '@ngrx/store';\nimport { FetchProductPayload, ProductReview } from './product-review-state-models';\n\nexport enum ProductReviewActionTypes {\n fetchProductReviews = '[ProductReview] Fetch product reviews',\n fetchMoreProductReviews = '[ProductReviews] Fetch more product reviews',\n fetchProductReviewsSuccess = '[ProductReview] Fetch product reviews success',\n fetchProductReviewsFailure = '[ProductReview] Fetch product reviews failure',\n createProductReview = '[ProductReview] Create product review',\n createProductReviewSuccess = '[ProductReview] Create product review success',\n createProductReviewFailure = '[ProductReview] Create product review failure',\n resetProductReviewState = '[ProductReview] Reset product review state',\n}\n\n/**\n * Fetch product reviews\n */\nexport const fetchProductReviews = createAction(\n ProductReviewActionTypes.fetchProductReviews,\n props<{ payload: FetchProductPayload }>(),\n);\nexport const fetchMoreProductReviews = createAction(\n ProductReviewActionTypes.fetchMoreProductReviews,\n props<{ payload: FetchProductPayload }>(),\n);\nexport const fetchProductReviewsSuccess = createAction(\n ProductReviewActionTypes.fetchProductReviewsSuccess,\n props<{ productReviews: ProductReview[]; pageSize: number }>(),\n);\nexport const fetchProductReviewsFailure = createAction(\n ProductReviewActionTypes.fetchProductReviewsFailure,\n);\n\n/**\n * Create product review\n */\nexport const createProductReview = createAction(\n ProductReviewActionTypes.createProductReview,\n props<{ request: CreateProductReviewRequest }>(),\n);\nexport const createProductReviewSuccess = createAction(\n ProductReviewActionTypes.createProductReviewSuccess,\n props<{ productReview: ProductReview }>(),\n);\nexport const createProductReviewFailure = createAction(\n ProductReviewActionTypes.createProductReviewFailure,\n);\n\n/**\n * Reset product review state\n */\nexport const resetProductReviewState = createAction(\n ProductReviewActionTypes.resetProductReviewState,\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { CustomerSpecialOffersTypes, ProductState } from './product-state-models';\n\nexport const productFeatureKey = 'productState';\n\nexport const selectProductStateFeature = createFeatureSelector(productFeatureKey);\n\nexport const selectProductsLoading = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.products.loading : false),\n);\n\nexport const selectProducts = createSelector(selectProductStateFeature, (state: ProductState) =>\n state ? state.products.items : null,\n);\n\nexport const selectAllProductsFetched = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.products.isAllFetched : false),\n);\n\nexport const selectCatalogs = createSelector(selectProductStateFeature, (state: ProductState) =>\n state ? state.catalogs.items : null,\n);\n\nexport const selectAllCatalogsFetched = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.catalogs.isAllFetched : false),\n);\n\nexport const selectCatalogsLoading = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.catalogs.loading : false),\n);\n\nexport const selectProductDetails = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.productDetails : null),\n);\n\nexport const selectProductRecommendations = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.productDetails.recommendations : []),\n);\n\nexport const selectRelatedRecipes = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.productDetails.relatedRecipes : []),\n);\n\nexport const selectProductQuickView = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.modals.productQuickView : null),\n);\n\nexport const selectMoreFromCollection = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.productDetails.moreFromCollection : []),\n);\n\nexport const selectCatalogName = createSelector(selectProductStateFeature, (state: ProductState) =>\n state ? state.catalogName : null,\n);\n\nexport const selectEcommerceCustomerSpecialOffers = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.customerSpecialOffersTypes.ecommerce.items : []),\n);\n\nexport const selectHealthySavingsCustomerSpecialOffers = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.customerSpecialOffersTypes.healthySavings.items : []),\n);\n\nexport const selectCollectAndSaveCustomerSpecialOffers = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.customerSpecialOffersTypes.collectAndSave.items : []),\n);\n\nexport const selectRegularCustomerSpecialOffers = createSelector(\n selectProductStateFeature,\n (state: ProductState) =>\n state ? state.customerSpecialOffersTypes.regularCustomerSpecial.items : [],\n);\n\nexport const selectCustomerSpecialOffersLoading = createSelector(\n selectProductStateFeature,\n (state: ProductState) =>\n state ? isFetchCustomerSpecialOffers(state.customerSpecialOffersTypes) : false,\n);\n\nexport const selectProductDetailsVideos = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.productDetails?.item?.videos : []),\n);\n\nexport const selectProductQuickViewVideos = createSelector(\n selectProductStateFeature,\n (state: ProductState) => (state ? state.modals.productQuickView?.videos : []),\n);\n\nfunction isFetchCustomerSpecialOffers(\n customerSpecialOffersTypes: CustomerSpecialOffersTypes,\n): boolean {\n return (\n customerSpecialOffersTypes.ecommerce.loading ||\n customerSpecialOffersTypes.healthySavings.loading ||\n customerSpecialOffersTypes.collectAndSave.loading ||\n customerSpecialOffersTypes.regularCustomerSpecial.loading\n );\n}\n","/* eslint-disable max-len */\nimport { CatalogResponse } from '@core/dto/catalog.dto';\nimport { PhErrorResponse } from '@core/dto/ph-error';\nimport { ProductResponse } from '@core/dto/product.dto';\nimport { LoadProductsProps } from '@core/models/load-products.model';\nimport { createAction, props } from '@ngrx/store';\nimport { RecipeItem } from '../recipe/recipe-state-models';\nimport {\n ProductDetailsItem,\n ProductItem,\n ProductQuickView,\n ProductRecommendation,\n} from './product-state-models';\n\nexport enum ProductActionTypes {\n fetchProducts = '[Product] Fetch Products',\n fetchProductsSuccess = '[Product] Fetch Products Success',\n fetchProductsFailure = '[Product] Fetch Products Failure',\n resetProducts = '[Product] Reset Products',\n fetchProductDetails = '[Product] Fetch Product Details',\n fetchProductDetailsSuccess = '[Product] Fetch Product Details Success',\n fetchProductDetailsFailure = '[Product] Fetch Product Details Failed',\n resetProductDetails = '[Product] Reset Product Details',\n fetchCatalogs = '[Product] Fetch Catalogs',\n fetchCatalogsSuccess = '[Product] Fetch Catalogs Success',\n fetchCatalogsFailure = '[Product] Fetch Catalogs Failure',\n resetCatalogs = '[Product] Reset Catalogs',\n fetchProductQuickView = '[Product] Fetch Product QuickView',\n fetchProductQuickViewSuccess = '[Product] Fetch Product QuickView Success',\n fetchProductQuickViewFailure = '[Product] Fetch Product QuickView Failed',\n resetProductQuickView = '[Product] Reset Product QuickView',\n fetchProductRecommendations = '[Product] Fetch product recommendations',\n fetchProductRecommendationsSuccess = '[Product] Fetch product recommendations success',\n fetchProductRecommendationsFailure = '[Product] Fetch product recommendations failure',\n fetchRelatedRecipes = '[Product] Fetch related recipes',\n fetchRelatedRecipesSuccess = '[Product] Fetch related recipes success',\n fetchRelatedRecipesFailure = '[Product] Fetch related recipes failure',\n fetchMoreFromCollection = '[Product] Fetch more from collection',\n fetchMoreFromCollectionSuccess = '[Product] Fetch more from collection success',\n fetchMoreFromCollectionFailure = '[Product] Fetch more from collection failure',\n fetchEcommerceCustomerSpecialOffers = '[Product] Fetch ecommerce customer special offers',\n fetchEcommerceCustomerSpecialOffersSuccess = '[Product] Fetch ecommerce customer special offers success',\n fetchEcommerceCustomerSpecialOffersFailure = '[Product] Fetch ecommerce customer special offers failure',\n fetchHealthySavingsCustomerSpecialOffers = '[Product] Fetch healthy savings customer special offers',\n fetchHealthySavingsCustomerSpecialOffersSuccess = '[Product] Fetch healthy savings customer special offers success',\n fetchHealthySavingsCustomerSpecialOffersFailure = '[Product] Fetch healthy savings customer special offers failure',\n fetchCollectAndSaveCustomerSpecialOffers = '[Product] Fetch collect and save customer special offers',\n fetchCollectAndSaveCustomerSpecialOffersSuccess = '[Product] Fetch collect and save customer special offers success',\n fetchCollectAndSaveCustomerSpecialOffersFailure = '[Product] Fetch collect and save customer special offers failure',\n fetchRegularCustomerSpecialOffers = '[Product] Fetch regular customer special offers',\n fetchRegularCustomerSpecialOffersSuccess = '[Product] Fetch regular customer special offers success',\n fetchRegularCustomerSpecialOffersFailure = '[Product] Fetch regular customer special offers failure',\n fetchProductVideoDetails = '[Product] Fetch product video details',\n fetchProductVideoDetailsSuccess = '[Product] Fetch product video details success',\n fetchProductVideoDetailsFailure = '[Product] Fetch product video details failure',\n fetchProductQuickViewVideoDetails = '[Product] Fetch product quickview video details',\n fetchProductQuickViewVideoDetailsSuccess = '[Product] Fetch product quickview video details success',\n fetchProductQuickViewVideoDetailsFailure = '[Product] Fetch product quickview video details failure',\n}\n\nexport const fetchProducts = createAction(\n ProductActionTypes.fetchProducts,\n props(),\n);\n\nexport const fetchProductsSuccess = createAction(\n ProductActionTypes.fetchProductsSuccess,\n props<{\n payload: ProductResponse[];\n catalogName: string;\n pageSize: number;\n }>(),\n);\n\nexport const fetchProductsFailure = createAction(\n ProductActionTypes.fetchProductsFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const resetProducts = createAction(ProductActionTypes.resetProducts);\n\nexport const fetchProductDetails = createAction(\n ProductActionTypes.fetchProductDetails,\n props<{ sku: string; date: string }>(),\n);\n\nexport const fetchProductDetailsSuccess = createAction(\n ProductActionTypes.fetchProductDetailsSuccess,\n props<{ product: ProductDetailsItem }>(),\n);\n\nexport const fetchProductDetailsFailure = createAction(\n ProductActionTypes.fetchProductDetailsFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const resetProductDetails = createAction(ProductActionTypes.resetProductDetails);\n\nexport const fetchCatalogs = createAction(\n ProductActionTypes.fetchCatalogs,\n props<{\n catalogType: string;\n pageNumber: number;\n pageSize: number;\n shouldResetStore?: boolean;\n }>(),\n);\n\nexport const fetchCatalogsSuccess = createAction(\n ProductActionTypes.fetchCatalogsSuccess,\n props<{\n payload: CatalogResponse[];\n pageSize: number;\n }>(),\n);\n\nexport const fetchCatalogsFailure = createAction(\n ProductActionTypes.fetchCatalogsFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const resetCatalogs = createAction(ProductActionTypes.resetCatalogs);\n\n/**\n * Product quickview\n */\nexport const fetchProductQuickView = createAction(\n ProductActionTypes.fetchProductQuickView,\n props<{ sku: string }>(),\n);\nexport const fetchProductQuickViewSuccess = createAction(\n ProductActionTypes.fetchProductQuickViewSuccess,\n props<{ product: ProductQuickView }>(),\n);\nexport const fetchProductQuickViewFailure = createAction(\n ProductActionTypes.fetchProductQuickViewFailure,\n props<{ error: PhErrorResponse }>(),\n);\nexport const resetProductQuickView = createAction(ProductActionTypes.resetProductQuickView);\n\n/**\n * Fetch product recommendations\n */\nexport const fetchProductRecommendations = createAction(\n ProductActionTypes.fetchProductRecommendations,\n props<{ sku: string; date: string }>(),\n);\n\nexport const fetchProductRecommendationsSuccess = createAction(\n ProductActionTypes.fetchProductRecommendationsSuccess,\n props<{ recommendations: ProductRecommendation[] }>(),\n);\nexport const fetchProductRecommendationsFailure = createAction(\n ProductActionTypes.fetchProductRecommendationsFailure,\n);\n\n/**\n * Fetch related recipes\n */\nexport const fetchRelatedRecipes = createAction(\n ProductActionTypes.fetchRelatedRecipes,\n props<{ sku: string; date: string }>(),\n);\nexport const fetchRelatedRecipesSuccess = createAction(\n ProductActionTypes.fetchRelatedRecipesSuccess,\n props<{ recipes: RecipeItem[] }>(),\n);\nexport const fetchRelatedRecipesFailure = createAction(\n ProductActionTypes.fetchRelatedRecipesFailure,\n);\n\n/**\n * Fetch more product from this collection\n */\nexport const fetchMoreFromCollection = createAction(\n ProductActionTypes.fetchMoreFromCollection,\n props<{ catalogUrlName: string; sku: string; date: string }>(),\n);\nexport const fetchMoreFromCollectionSuccess = createAction(\n ProductActionTypes.fetchMoreFromCollectionSuccess,\n props<{ moreFromCollection: ProductRecommendation[] }>(),\n);\nexport const fetchMoreFromCollectionFailure = createAction(\n ProductActionTypes.fetchMoreFromCollectionFailure,\n);\n\nexport const fetchEcommerceCustomerSpecialOffers = createAction(\n ProductActionTypes.fetchEcommerceCustomerSpecialOffers,\n props<{ viewAs?: string }>(),\n);\nexport const fetchEcommerceCustomerSpecialOffersSuccess = createAction(\n ProductActionTypes.fetchEcommerceCustomerSpecialOffersSuccess,\n props<{ payload: ProductItem[] }>(),\n);\nexport const fetchEcommerceCustomerSpecialOffersFailure = createAction(\n ProductActionTypes.fetchEcommerceCustomerSpecialOffersFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const fetchHealthySavingsCustomerSpecialOffers = createAction(\n ProductActionTypes.fetchHealthySavingsCustomerSpecialOffers,\n props<{ viewAs?: string }>(),\n);\nexport const fetchHealthySavingsCustomerSpecialOffersSuccess = createAction(\n ProductActionTypes.fetchHealthySavingsCustomerSpecialOffersSuccess,\n props<{ payload: ProductItem[] }>(),\n);\nexport const fetchHealthySavingsCustomerSpecialOffersFailure = createAction(\n ProductActionTypes.fetchHealthySavingsCustomerSpecialOffersFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const fetchCollectAndSaveCustomerSpecialOffers = createAction(\n ProductActionTypes.fetchCollectAndSaveCustomerSpecialOffers,\n props<{ viewAs?: string }>(),\n);\nexport const fetchCollectAndSaveCustomerSpecialOffersSuccess = createAction(\n ProductActionTypes.fetchCollectAndSaveCustomerSpecialOffersSuccess,\n props<{ payload: ProductItem[] }>(),\n);\nexport const fetchCollectAndSaveCustomerSpecialOffersFailure = createAction(\n ProductActionTypes.fetchCollectAndSaveCustomerSpecialOffersFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const fetchRegularCustomerSpecialOffers = createAction(\n ProductActionTypes.fetchRegularCustomerSpecialOffers,\n props<{ viewAs?: string }>(),\n);\nexport const fetchRegularCustomerSpecialOffersSuccess = createAction(\n ProductActionTypes.fetchRegularCustomerSpecialOffersSuccess,\n props<{ payload: ProductItem[] }>(),\n);\nexport const fetchRegularCustomerSpecialOffersFailure = createAction(\n ProductActionTypes.fetchRegularCustomerSpecialOffersFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const fetchProductVideoDetails = createAction(\n ProductActionTypes.fetchProductVideoDetails,\n props<{ vimeoId: string }>(),\n);\nexport const fetchProductVideoDetailsSuccess = createAction(\n ProductActionTypes.fetchProductVideoDetailsSuccess,\n props<{ vimeoId: string; thumbnail: string }>(),\n);\nexport const fetchProductVideoDetailsFailure = createAction(\n ProductActionTypes.fetchProductVideoDetailsFailure,\n);\n\nexport const fetchProductQuickViewVideoDetails = createAction(\n ProductActionTypes.fetchProductQuickViewVideoDetails,\n props<{ vimeoId: string }>(),\n);\nexport const fetchProductQuickViewVideoDetailsSuccess = createAction(\n ProductActionTypes.fetchProductQuickViewVideoDetailsSuccess,\n props<{ vimeoId: string; thumbnail: string }>(),\n);\nexport const fetchProductQuickViewVideoDetailsFailure = createAction(\n ProductActionTypes.fetchProductQuickViewVideoDetailsFailure,\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { RecipeState } from './recipe-state-models';\n\nexport const recipeFeatureKey = 'recipeState';\n\nexport const selectRecipeStateFeature = createFeatureSelector(recipeFeatureKey);\n\nexport const selectRecipes = createSelector(selectRecipeStateFeature, (state: RecipeState) =>\n state ? state.recipes.items : [],\n);\n\nexport const selectAllRecipesFetched = createSelector(\n selectRecipeStateFeature,\n (state: RecipeState) => (state ? state.recipes.isAllFetched : false),\n);\n\nexport const selectRecipeCategories = createSelector(\n selectRecipeStateFeature,\n (state: RecipeState) => (state ? state.recipeCategories : []),\n);\n\nexport const selectRecipeDetails = createSelector(selectRecipeStateFeature, (state: RecipeState) =>\n state ? state.recipeDetails : null,\n);\n\nexport const selectUserRecipes = createSelector(selectRecipeStateFeature, (state: RecipeState) =>\n state ? state.userRecipes : null,\n);\n\nexport const selectIsRecipeCategoriesFetched = createSelector(\n selectRecipeStateFeature,\n (state: RecipeState) => (state ? state.isRecipeCategoriesFetched : false),\n);\n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ProductRecommendationResponse } from '@core/dto/product-details.dto';\nimport { RecipeResponse } from '@core/dto/recipe.dto';\nimport { LoadRecipesProps } from '@core/models/load-recipes.model';\nimport { createAction, props } from '@ngrx/store';\nimport { RecipeCategory, RecipeDetailsItem, RecipeItem } from './recipe-state-models';\n\nexport enum RecipeActionTypes {\n fetchRecipes = '[Recipe] Fetch Recipes',\n fetchRecipesSuccess = '[Recipe] Fetch recipes success',\n fetchRecipesFailure = '[Recipe] Fetch recipes failure',\n fetchRecipeCategories = '[Recipe] Fetch recipe categories',\n fetchRecipeCategoriesSuccess = '[Recipe] Fetch recipe categories success',\n fetchRecipeCategoriesFailure = '[Recipe] Fetch recipe categories failure',\n resetRecipes = '[Recipe] reset recipes',\n fetchRecipeDetails = '[Recipe] Fetch recipe details',\n fetchRecipeDetailsSilent = '[Recipe] Fetch recipe details silent',\n fetchRecipeDetailsSuccess = '[Recipe] Fetch recipe details success',\n fetchRecipeDetailsFailure = '[Recipe] Fetch recipe details failure',\n fetchRecipeRecommendations = '[Recipe] Fetch recipe recommendations',\n fetchRecipeRecommendationsSuccess = '[Recipe] Fetch recipe recommendations success',\n fetchRecipeRecommendationsFailure = '[Recipe] Fetch recipe recommendations failure',\n fetchRelatedProducts = '[Recipe] Fetch recipe related products',\n fetchRelatedProductsSuccess = '[Recipe] Fetch recipe related products success',\n fetchRelatedProductsFailure = '[Recipe] Fetch recipe related products failure',\n resetRecipeDetails = '[Recipe] Reset recipe details',\n\n fetchUserRecipes = '[Recipe] Fetch user recipes',\n fetchUserRecipesSuccess = '[Recipe] Fetch user recipes success',\n fetchUserRecipesFailure = '[Recipe] Fetch user recipes failure',\n\n likeRecipe = '[Recipe] Like recipe',\n likeRecipeSuccess = '[Recipe] Like recipe success',\n likeRecipeFailure = '[Recipe] Like recipe failure',\n\n dislikeRecipe = '[Recipe] Dislike recipe',\n dislikeRecipeSuccess = '[Recipe] Dislike recipe success',\n dislikeRecipeFailure = '[Recipe] Dislike recipe failure',\n}\n\nexport const fetchRecipes = createAction(RecipeActionTypes.fetchRecipes, props());\n\nexport const fetchRecipesSuccess = createAction(\n RecipeActionTypes.fetchRecipesSuccess,\n props<{ items: RecipeResponse[]; pageSize: number; isFirstPage?: boolean }>(),\n);\n\nexport const fetchRecipesFailure = createAction(\n RecipeActionTypes.fetchRecipesFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const fetchRecipeCategories = createAction(RecipeActionTypes.fetchRecipeCategories);\nexport const fetchRecipeCategoriesSuccess = createAction(\n RecipeActionTypes.fetchRecipeCategoriesSuccess,\n props<{ recipeCategories: RecipeCategory[] }>(),\n);\nexport const fetchRecipeCategoriesFailure = createAction(\n RecipeActionTypes.fetchRecipeCategoriesFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const resetRecipes = createAction(RecipeActionTypes.resetRecipes);\n\n/**\n * Recipe details\n */\nexport const fetchRecipeDetails = createAction(\n RecipeActionTypes.fetchRecipeDetails,\n props<{ url: string; date: string }>(),\n);\nexport const fetchRecipeDetailsSilent = createAction(\n RecipeActionTypes.fetchRecipeDetailsSilent,\n props<{ url: string }>(),\n);\nexport const fetchRecipeDetailsSuccess = createAction(\n RecipeActionTypes.fetchRecipeDetailsSuccess,\n props<{ item: RecipeDetailsItem }>(),\n);\nexport const fetchRecipeDetailsFailure = createAction(RecipeActionTypes.fetchRecipeDetailsFailure);\nexport const resetRecipeDetails = createAction(RecipeActionTypes.resetRecipeDetails);\n\n/**\n * Recipe recommendations\n */\nexport const fetchRecipeRecommendations = createAction(\n RecipeActionTypes.fetchRecipeRecommendations,\n props<{ recipeId }>(),\n);\nexport const fetchRecipeRecommendationsSuccess = createAction(\n RecipeActionTypes.fetchRecipeRecommendationsSuccess,\n props<{ items: RecipeResponse[] }>(),\n);\nexport const fetchRecipeRecommendationsFailure = createAction(\n RecipeActionTypes.fetchRecipeRecommendationsFailure,\n);\n\n/**\n * Related products\n */\nexport const fetchRelatedProducts = createAction(\n RecipeActionTypes.fetchRelatedProducts,\n props<{ recipeUrl }>(),\n);\nexport const fetchRelatedProductsSuccess = createAction(\n RecipeActionTypes.fetchRelatedProductsSuccess,\n props<{ items: ProductRecommendationResponse[] }>(),\n);\nexport const fetchRelatedProductsFailure = createAction(\n RecipeActionTypes.fetchRelatedProductsFailure,\n);\n\n/**\n * User Recipes\n */\nexport const fetchUserRecipes = createAction(RecipeActionTypes.fetchUserRecipes);\nexport const fetchUserRecipesSuccess = createAction(\n RecipeActionTypes.fetchUserRecipesSuccess,\n props<{ items: RecipeItem[] }>(),\n);\nexport const fetchUserRecipesFailure = createAction(RecipeActionTypes.fetchUserRecipesFailure);\n\nexport const likeRecipe = createAction(\n RecipeActionTypes.likeRecipe,\n props<{ id: string; url: string }>(),\n);\nexport const likeRecipeSuccess = createAction(RecipeActionTypes.likeRecipeSuccess);\nexport const likeRecipeFailure = createAction(\n RecipeActionTypes.likeRecipeFailure,\n props<{ url: string }>(),\n);\n\nexport const dislikeRecipe = createAction(\n RecipeActionTypes.dislikeRecipe,\n props<{ id: string; url: string }>(),\n);\nexport const dislikeRecipeSuccess = createAction(RecipeActionTypes.dislikeRecipeSuccess);\nexport const dislikeRecipeFailure = createAction(\n RecipeActionTypes.dislikeRecipeFailure,\n props<{ url: string }>(),\n);\n","import { createAction, props } from '@ngrx/store';\nimport { ReturnDetails, ReturnHistoryItem, SubmitReturn } from './return-state-models';\n\nexport enum ReturnActionTypes {\n resetReturnState = '[Return] Reset return state',\n\n fetchReturnHistory = '[Return] Fetch return history',\n fetchReturnHistorySuccess = '[Return] Fetch return history success',\n fetchReturnHistoryFailure = '[Return] Fetch return history failure',\n\n fetchReturnDetails = '[Return] Fetch return details',\n fetchReturnDetailsSuccess = '[Return] Fetch return details success',\n fetchReturnDetailsFailure = '[Return] Fetch return details failure',\n\n submitReturn = '[Return] Submit return',\n submitReturnSuccess = '[Return] Submit return success',\n submitReturnFailure = '[Return] Submit return failure',\n}\n\nexport const resetReturnState = createAction(ReturnActionTypes.resetReturnState);\n\nexport const fetchReturnHistory = createAction(ReturnActionTypes.fetchReturnHistory);\nexport const fetchReturnHistorySuccess = createAction(\n ReturnActionTypes.fetchReturnHistorySuccess,\n props<{ returnHistory: ReturnHistoryItem[] }>(),\n);\nexport const fetchReturnHistoryFailure = createAction(ReturnActionTypes.fetchReturnHistoryFailure);\n\nexport const fetchReturnDetails = createAction(\n ReturnActionTypes.fetchReturnDetails,\n props<{ returnId: string }>(),\n);\nexport const fetchReturnDetailsSuccess = createAction(\n ReturnActionTypes.fetchReturnDetailsSuccess,\n props<{ returnDetails: ReturnDetails }>(),\n);\nexport const fetchReturnDetailsFailure = createAction(ReturnActionTypes.fetchReturnDetailsFailure);\n\nexport const submitReturn = createAction(\n ReturnActionTypes.submitReturn,\n props<{ payload: SubmitReturn }>(),\n);\nexport const submitReturnSuccess = createAction(ReturnActionTypes.submitReturnSuccess);\nexport const submitReturnFailure = createAction(ReturnActionTypes.submitReturnFailure);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { SearchState } from './search-state-models';\n\nexport const searchFeatureKey = 'searchState';\n\nexport const selectSearchStateFeature = createFeatureSelector(searchFeatureKey);\n\nexport const selectSearchState = createSelector(selectSearchStateFeature, (state: SearchState) =>\n state ? state : null,\n);\n\nexport const selectSearchLoading = createSelector(selectSearchStateFeature, (state: SearchState) =>\n state ? state.loading : false,\n);\n\nexport const selectSearchFacets = createSelector(selectSearchStateFeature, (state: SearchState) =>\n state ? state.facets : [],\n);\n\nexport const selectSearchDocumentsCount = createSelector(\n selectSearchStateFeature,\n (state: SearchState) => (state ? state.documents.length : 0),\n);\n","import { SearchFilterType } from '@core/models/search';\nimport { createAction, props } from '@ngrx/store';\nimport { SearchResultFacet, SearchResultDocument } from './search-state-models';\n\nexport enum SearchActionTypes {\n resetSearchState = '[Search] Reset search state',\n fetchSearchResult = '[Search] Fetch search result',\n fetchSearchResultSuccess = '[Search] Fetch search result success',\n fetchSearchResultFailure = '[Search] Fetch search result failure',\n}\n\nexport const resetSearchState = createAction(SearchActionTypes.resetSearchState);\n\nexport const fetchSearchResult = createAction(\n SearchActionTypes.fetchSearchResult,\n props<{\n searchTerm: string;\n pageNumber?: number;\n pageSize?: number;\n isFirstPage: boolean;\n keepFacets: boolean;\n filter?: SearchFilterType;\n withDiscontinuedProducts?: boolean;\n }>(),\n);\n\nexport const fetchSearchResultSuccess = createAction(\n SearchActionTypes.fetchSearchResultSuccess,\n props<{\n count: number;\n documents: SearchResultDocument[];\n facets: SearchResultFacet[];\n keepFacets: boolean;\n }>(),\n);\n\nexport const fetchSearchResultFailure = createAction(SearchActionTypes.fetchSearchResultFailure);\n","import { ShareInEmailRequest } from '@core/dto/share-in-email.dto';\nimport { createAction, props } from '@ngrx/store';\n\nexport enum ShareActionTypes {\n shareInEmail = '[Share] Share in email',\n shareInEmailSuccess = '[Share] Share in email success',\n shareInEmailFailure = '[Share] Share in email failure',\n}\n\nexport const shareInEmail = createAction(\n ShareActionTypes.shareInEmail,\n props<{ payload: ShareInEmailRequest }>(),\n);\nexport const shareInEmailSuccess = createAction(ShareActionTypes.shareInEmailSuccess);\nexport const shareInEmailFailure = createAction(ShareActionTypes.shareInEmailFailure);\n","import { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { SuccessfulStatus } from '@core/enums/successful-status.enum';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { StartNowAppState } from './start-now-app-state-models';\n\nexport const startNowAppStateFeatureKey = 'startNowAppState';\n\nexport const selectStartNowAppStateFeature = createFeatureSelector(\n startNowAppStateFeatureKey,\n);\n\nexport const selectReCaptchaIsValid = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.consultantFinderStep.isReCaptchaValidateSuccess : SuccessfulStatus.BeforeCall,\n);\n\nexport const selectCanAddressOverride = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.addressValidationModal.payload?.allowedMelissaOverride : true,\n);\n\nexport const selectStepProcessing = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.stepProcessing : false),\n);\n\nexport const selectSecurityKey = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.securityKey : null),\n);\n\nexport const selectApplicationRegistrationId = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.applicationRegistrationId : null),\n);\n\nexport const selectStartNowAppData = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData : null),\n);\n\nexport const selectUserInfo = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.userInfo : null),\n);\n\nexport const selectAboutYouIsNextEnabled = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.aboutYouStep.isNextEnabled : false),\n);\n\nexport const selectAboutYouStep = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.aboutYouStep : null),\n);\n\nexport const selectContactInfoIsNextEnabled = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.contactStep.isNextEnabled : false),\n);\n\nexport const selectAddressInfoIsNextEnabled = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.addressValidationStep.isNextEnabled : false),\n);\n\nexport const selectStarterKitStep = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.starterKitStep : null),\n);\n\nexport const selectStarterKits = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.starterKits : []),\n);\n\nexport const selectAddresses = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.addressInfo.addresses : null),\n);\n\nexport const selectAddressInfo = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.addressInfo : null),\n);\n\nexport const selectAddressValidationModalData = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.addressValidationModal : null),\n);\n\nexport const selectAreTermsConditionsAgreed = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.areTermsConditionsAgreed : false),\n);\n\nexport const selectCountryStateNames = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData.addressInfo.countryStates?.map((s) => s.name) : [],\n);\n\nexport const selectSnaCountryStates = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.addressInfo.countryStates : []),\n);\n\nexport const selectConsultantFinderStep = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.consultantFinderStep : null),\n);\n\nexport const selectSkipConsultantList = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.consultantFinderStep.consultantFinderResult.skipConsultantList : null,\n);\n\nexport const selectConsultantFinderCriteria = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.consultantFinderStep.consultantFinderCriteria : null),\n);\n\nexport const selectContactUniquenessCheck = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.contactStep.contactUniquenessCheck : null),\n);\n\nexport const selectContactStep = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.contactStep : null),\n);\n\nexport const selectAddressValidationStep = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.addressValidationStep : null),\n);\n\nexport const selectSelectedStarterKit = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.selectedStarterKit : null),\n);\n\nexport const selectSelectedStartNowPaymentType = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.selectedStartNowPaymentType : null),\n);\n\nexport const selectDepositPaymentValue = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.depositPaymentValue : null),\n);\n\nexport const selectReducedDepositPaymentValue = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.reducedDepositPaymentValue : null),\n);\n\nexport const selectOrderSummary = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.paymentStep.orderSummary : null),\n);\n\nexport const selectIsDepositPayment = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state?.startNowAppData?.selectedStarterKit\n ? state.startNowAppData.selectedStarterKit?.isDepositPayment\n : false,\n);\n\nexport const selectIsReducedDeposit = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData?.selectedStarterKit?.isReducedDepositPayment : false,\n);\n\nexport const selectIsZeroDepositAvailable = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.isZeroDepositAvailable : false),\n);\n\nexport const selectIsReducedDepositAvailable = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.isReducedDepositAvailable : false),\n);\n\nexport const selectClientToken = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData.startNowAppPaymentInfo.cardPaymentInfo?.clientToken : '',\n);\n\nexport const selectSnaPaymentInfo = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.startNowAppPaymentInfo : null),\n);\n\nexport const selectCardPaymentInfo = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData.startNowAppPaymentInfo?.cardPaymentInfo : null,\n);\n\nexport const selectPayPalOrder = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo?.order?.orderId : null,\n);\n\nexport const selectCreatedCardPaymentMethodResponse = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData.startNowAppPaymentInfo.createdCardPaymentMethod : null,\n);\n\nexport const selectSnaPaymentNonce = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData.startNowAppPaymentInfo.externalPaymentInfo?.nonce : null,\n);\n\nexport const selectSavedCard = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => {\n const paymentMethod = state?.startNowAppData?.startNowAppPaymentInfo.createdCardPaymentMethod;\n return paymentMethod &&\n paymentMethod.errorType == CreateCardPaymentErrorType.None &&\n paymentMethod.card\n ? paymentMethod.card\n : null;\n },\n);\n\nexport const selectSavedAccount = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => {\n const paymentMethod = state?.startNowAppData?.startNowAppPaymentInfo.createdCardPaymentMethod;\n return paymentMethod &&\n paymentMethod.errorType == CreateCardPaymentErrorType.None &&\n paymentMethod.account\n ? paymentMethod.account\n : null;\n },\n);\n\nexport const selectRegistrationCodeValidity = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.registrationCodeCheck : null),\n);\n\nexport const selectCreatedVoucherPaymentMethodResponse = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData.startNowAppPaymentInfo.createdVoucherPaymentMethod : null,\n);\n\nexport const selectVoucherPaymentInfo = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state.startNowAppData.startNowAppPaymentInfo.voucherPaymentInfo : null,\n);\n\nexport const selectVoucherReceived = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state\n ? state.startNowAppData?.startNowAppPaymentInfo?.voucherPaymentInfo?.vouchersReceived\n : false,\n);\n\nexport const selectCreateVoucherErrorTypes = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state\n ? state?.startNowAppData?.startNowAppPaymentInfo?.createdVoucherPaymentMethod?.errorTypes\n : [],\n);\n\nexport const selectCanSubmitConsultantInfo = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.canSubmitConsultantInfo : null),\n);\n\nexport const selectSubmittedConsultantInfo = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.submittedConsultantInfo : null),\n);\n\nexport const selectConsultantStepsSkipped = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.consultantStepsSkipped : null),\n);\n\nexport const selectPaymentStepSkipped = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.paymentStepSkipped : false),\n);\n\nexport const selectRegistrationCodeStepSkipped = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.registrationCodeStepSkipped : false),\n);\n\nexport const selectPassword = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.startNowAppData.userInfo.password : ''),\n);\n\nexport const selectCongratulationStepMode = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.congratulationStepMode : null),\n);\n\nexport const selectAgreementStep = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.agreementStep : null),\n);\n\nexport const selectVoucherBarcodeUrls = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.voucherBarCodeUrls : []),\n);\n\nexport const selectConfirmRecruiter = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.confirmRecruiter : false),\n);\n\nexport const selectConsultantDataCanNotBeModified = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state?.startNowAppData?.submittedConsultantInfo?.consultantDataCanNotBeModified : false,\n);\n\nexport const selectSubmitConsultantStatusCode = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) =>\n state ? state?.startNowAppData?.submitConsultantFailStatusCode : null,\n);\n\nexport const selectCanChangeSaveCard = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.canChangeSavedCard : true),\n);\n\nexport const selectIsFinalizeButtonEnabled = createSelector(\n selectStartNowAppStateFeature,\n (state: StartNowAppState) => (state ? state.isFinalizeEnabled : false),\n);\n","import { PhErrorResponse } from '@core/dto/ph-error';\nimport {\n ClientTokenRequest,\n CreateOrderRequest,\n CreateOrderResponse,\n CreatePaymentMethodRequest,\n CreatePaymentMethodResponse,\n CreateVoucherRequest,\n FindConsultantByAreaRequest,\n FindConsultantByCodeRequest,\n FindConsultantByZipCodeRequest,\n OrderSummaryResponse,\n PhoneNumberValidationRequest,\n PhoneNumberValidationResponse,\n ReceiveVouchersRequest,\n ReceiveVouchersResponse,\n SaveLogCardAttemptRequest,\n StarterKitDto,\n SubmitConsultantRequest,\n SubmitConsultantResponse,\n UpdateOrderRequest,\n UpdateOrderResponse,\n ValidateRegistrationCodeRequest,\n ValidateRegistrationCodeResponse,\n VerifyAddressResponse,\n} from '@core/dto/start-now-app.dto';\nimport { CongratulationType } from '@core/enums/congratulation-type.enum';\nimport { LanguagePreferenceType } from '@core/enums/language-preference-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { PhoneNumberType } from '@core/enums/phone-number-type.enum';\nimport { StartNowPaymentType } from '@core/enums/start-now-app.enum';\nimport { createAction, props } from '@ngrx/store';\nimport { Consultant } from '../consultant/consultant-state-models';\nimport {\n ClientTokenResponse,\n CreatedVoucherPaymentMethod,\n PaymentInfo,\n} from '../payment/payment-state-models';\nimport {\n AdditionalBillingInformation,\n Address,\n CardPaymentInfo,\n ContactInfo,\n CountryState,\n FoundConsultantsByZipCode,\n SaveConsultantDataResult,\n SaveUserInfoResult,\n UserInfo,\n VoucherPaymentInfo,\n} from './start-now-app-state-models';\n\nexport enum StartNowAppActionTypes {\n validateReCaptcha = '[StartNowApp] Validate ReCaptcha',\n validateReCaptchaSuccess = '[StartNowApp] Validate ReCaptcha success',\n validateReCaptchaFailure = '[StartNowApp] Validate ReCaptcha failure',\n resetReCaptchaValidation = '[StartNowApp] Reset ReCaptcha validation',\n stepProcessing = '[StartNowApp] Step is processing',\n findConsultantByArea = '[StartNowApp] Find consultant by area',\n findConsultantByAreaNextPage = '[StartNowApp] Find consultant by area next page',\n findConsultantByZipCodeNextPage = '[StartNowApp] Find consultant by zip code next page',\n findConsultantByConsultantCode = '[StartNowApp] Find consultant by code',\n findConsultantSuccess = '[StartNowApp] Find consultant success',\n findConsultantFailure = '[StartNowApp] Find consultant failure',\n findConsultantByZipCode = '[StartNowApp] Find consultant by zip code',\n findConsultantByZipCodeSuccess = '[StartNowApp] Find consultant by zip code success',\n findConsultantByZipCodeFailure = '[StartNowApp] Find consultant by zip code failure',\n resetFindConsultantByZipCodeErrorType = '[StartNowApp] Reset consultant by zip code error type',\n validateRegistrationCode = '[StartNowApp] Validate registration code',\n validateRegistrationCodeSuccess = '[StartNowApp] Validate registration code success',\n validateRegistrationCodeFailure = '[StartNowApp] Validate registration code failure',\n updateRegistrationCode = '[StartNowApp] Update registration code',\n updateRegistrationCodeStepSkipped = '[StartNowApp] Update registration code step skip',\n resetRegistrationCodeStepSkipped = '[StartNowApp] Reset registration code step skip',\n resetRegistrationCodeValidity = '[StartNowApp] Reset registration code validity',\n resetRegistrationCode = '[StartNowApp] Reset registration code',\n resetAddressValidationStep = '[StartNowApp] Reset address validation step',\n resetFindConsultant = '[StartNowApp] Reset find consultant',\n resetNoFindConsultantModal = '[StartNowApp] Reset no find consultant modal',\n resetFirstConsultants = '[StartNowApp] Reset first consultants',\n updateSelectedConsultant = '[StartNowApp] Update selected consultant',\n resetSelectedConsultant = '[StartNowApp] Reset selected consultant',\n updateStartNowAppUserInfo = '[StartNowApp] Update user info',\n updateStartNowAppUserInfoSuccess = '[StartNowApp] Update user info success',\n updateStartNowAppUserInfoFailure = '[StartNowApp] Update user info failure',\n resetAboutYouStep = '[StartNowApp] Reset about you step',\n emailUniquenessCheck = '[StartNowApp] Check email uniqueness',\n emailUniquenessCheckSuccess = '[StartNowApp] Check email uniqueness success',\n emailUniquenessCheckFailure = '[StartNowApp] Check email uniqueness failure',\n resetEmailValidity = '[StartNowApp] Reset email validity',\n phoneNumberUniquenessCheck = '[StartNowApp] Check phone number uniqueness',\n phoneNumberUniquenessCheckSuccess = '[StartNowApp] Check phone number uniqueness success',\n phoneNumberUniquenessCheckFailure = '[StartNowApp] Check phone number uniqueness failure',\n resetPhoneNumberValidity = '[StartNowApp] Reset phone numbers validity',\n updateStartNowAppContactInfo = '[StartNowApp] Update contact info',\n updateStartNowAppContactInfoSuccess = '[StartNowApp] Update contact info success',\n updateStartNowAppContactInfoFailure = '[StartNowApp] Update contact info failure',\n resetContactStep = '[StartNowApp] Reset contact step',\n updateStartNowAppAddressInfo = '[StartNowApp] Update address info',\n updateStartNowAppAddressInfoSuccess = '[StartNowApp] Update address info success',\n updateStartNowAppAddressInfoFailure = '[StartNowApp] Update address info failure',\n addAddress = '[StartNowApp] Add address to address list',\n fetchStartNowAppStarterKits = '[StartNowApp] Fetch starter kits',\n fetchStartNowAppStarterKitsSuccess = '[StartNowApp] Fetch starter kits success',\n fetchStartNowAppStarterKitsFailure = '[StartNowApp] Fetch starter kits failure',\n fetchDepositPaymentValue = '[StartNowApp] Fetch deposit payment value',\n fetchDepositPaymentValueSuccess = '[StartNowApp] Fetch deposit payment value success',\n fetchDepositPaymentValueFailure = '[StartNowApp] Fetch deposit payment value failure',\n updateIsDepositPayment = '[StartNowApp] Update isDepositPayment',\n updateStartNowAppSelectedStarterKit = '[StartNowApp] Update selected starter kit',\n updateStartNowAppSelectedStarterKitSuccess = '[StartNowApp] Update selected starter kit success',\n updateStartNowAppSelectedStarterKitFailure = '[StartNowApp] Update selected starter kit failure',\n fetchOrderSummary = '[StartNowApp] Fetch order summary',\n fetchOrderSummarySuccess = '[StartNowApp] Fetch order summary success',\n fetchOrderSummaryFailure = '[StartNowApp] Fetch order summary failure',\n resetOrderSummary = '[StartNowApp] Reset order summary',\n checkIfNewPaymentRequired = '[StartNowApp] Check if new payment required',\n checkIfNewPaymentRequiredSuccess = '[StartNowApp] Check if new payment required success',\n checkIfNewPaymentRequiredFailure = '[StartNowApp] Check if new payment required failure',\n resetStarterKitStep = '[StartNowApp] Reset starter kit step',\n validateAddress = '[StartNowApp] Validate address',\n validateAddressSuccess = '[StartNowApp] Validate address success',\n validateAddressFailure = '[StartNowApp] Validate address failure',\n updateAddressValidationModalValidity = '[StartNowApp] Update address validation modal validity',\n resetAddressValidationModal = '[StartNowApp] Reset address validation modal',\n fetchCountryStates = '[StartNowApp] Fetch country states',\n fetchCountryStatesSuccess = '[StartNowApp] Fetch country states success',\n fetchCountryStatesFailure = '[StartNowApp] Fetch country states failure',\n fetchClientToken = '[StartNowApp] Fetch Client Token',\n fetchClientTokenSuccess = '[StartNowApp] Fetch Client Token Success',\n fetchClientTokenFailure = '[StartNowApp] Fetch Client Token Failure',\n resetClientToken = '[StartNowApp] Reset Client Token',\n storePaymentType = '[StartNowApp] Store Payment Type',\n storeCardPaymentInfo = '[StartNowApp] Store Card Payment Info',\n storeVoucherPaymentInfo = '[StartNowApp] Store Voucher Payment Info',\n storeExternalPaymentInfo = '[StartNowApp] Store External Payment Info',\n storeExternalPaymentInfoSuccess = '[StartNowApp] Store External Payment Info Success',\n storeExternalPaymentInfoFailure = '[StartNowApp] Store External Payment Info Failure',\n updatePaymentProviderType = '[StartNowApp] Update Payment Provider Type',\n createOrder = '[StartNowApp] Create Order',\n createOrderSuccess = '[StartNowApp] Create Order Success',\n createOrderFailure = '[StartNowApp] Create Order Failure',\n updateOrder = '[StartNowApp] Update Order',\n updateOrderSuccess = '[StartNowApp] Update Order Success',\n updateOrderFailure = '[StartNowApp] Update Order Failure',\n createPaymentMethod = '[StartNowApp] Create Payment Method',\n createPaymentMethodSuccess = '[StartNowApp] Create Payment Method Success',\n createPaymentMethodFailure = '[StartNowApp] Create Payment Method Failure',\n resetPaymentMethod = '[StartNowApp] Reset Payment Method',\n updateAdditionalBillingInformation = '[StartNowApp] Update Additional Billing Information',\n resetAdditionalBillingInformation = '[StartNowApp] Reset Additional Billing Information',\n createVoucher = '[StartNowApp] Create Voucher',\n createVoucherSuccess = '[StartNowApp] Create Voucher Success',\n createVoucherFailure = '[StartNowApp] Create Voucher Failure',\n receiveVouchers = '[StartNowApp] Receive Vouchers',\n receiveVouchersSuccess = '[StartNowApp] Receive Vouchers Success',\n receiveVouchersFailure = '[StartNowApp] Receive Vouchers Failure',\n resetReceiveVoucher = '[StartNowApp] Reset Receive Voucher',\n resetVoucherInfo = '[StartNowApp] Reset voucher info',\n resetPaymentInfo = '[StartNowApp] Reset payment info',\n logCardAttempt = '[StartNowApp] Log card attempt',\n logCardAttemptSuccess = '[StartNowApp] Log card attempt success',\n logCardAttemptFailure = '[StartNowApp] Log card attempt failure',\n createPassword = '[StartNowApp] Store password',\n updateAreTermsConditionsAgreed = '[StartNowApp] Update terms and conditions agreement',\n fetchConsultantAgreementPdf = '[StartNowApp] Fetch consultant agreement PDF',\n fetchConsultantAgreementPdfSuccess = '[StartNowApp] Fetch consultant agreement PDF success',\n fetchConsultantAgreementPdfFailure = '[StartNowApp] Fetch consultant agreement PDF failure',\n resetAgreementStep = '[StartNowApp] Reset agreement step',\n updateSsnNumber = '[StartNowApp] Update ssnNumber',\n updateSsnNumberSuccess = '[StartNowApp] Update ssnNumber success',\n updateSsnNumberFailure = '[StartNowApp] Update ssnNumber failure',\n updateAgreementStepNavigableFlag = '[StartNowApp] Update agreement step navigable flag',\n checkIfCanSubmitConsultant = '[StartNowApp] Check if can submit consultant',\n checkIfCanSubmitConsultantSuccess = '[StartNowApp] Check if can submit consultant success',\n checkIfCanSubmitConsultantFailure = '[StartNowApp] Check if can submit consultant failure',\n resetCanSubmitConsultantInfo = '[StartNowApp] Reset can submit consultant info',\n submitConsultant = '[StartNowApp] Submit consultant',\n submitConsultantSuccess = '[StartNowApp] Submit consultant success',\n submitConsultantFailure = '[StartNowApp] Submit consultant failure',\n resetSubmitConsultantInfo = '[StartNowApp] Reset submit consultant info',\n updateConsultantStepsSkipped = '[StartNowApp] Update consultant steps skipped',\n updateCongratulationStepMode = '[StartNowApp] Update congratulation step mode',\n fetchVoucherBarCodeUrls = '[StartNowApp] Fetch voucher barcode urls',\n fetchVoucherBarCodeUrlsSuccess = '[StartNowApp] Fetch voucher barcode urls success',\n fetchVoucherBarCodeUrlsFailure = '[StartNowApp] Fetch voucher barcode urls failure',\n updateConfirmRecruiter = '[StartNowApp] Update confirm recruiter',\n fetchReducedDepositPaymentValue = '[StartNowApp] Fetch reduced deposit payment value',\n fetchReducedDepositPaymentValueSuccess = '[StartNowApp] Fetch reduced deposit pmnt value success',\n fetchReducedDepositPaymentValueFailure = '[StartNowApp] Fetch reduced deposit pmnt value failure',\n updateIsReducedDepositPayment = '[StartNowApp] Update is Reduced DepositPayment',\n fetchIsReducedDepositAvailable = '[StartNowApp] Fetch is reduced deposit available',\n fetchIsReducedDepositAvailableSuccess = '[StartNowApp] Fetch is reduced deposit avalble success',\n fetchIsReducedDepositAvailableFailure = '[StartNowApp] Fetch is reduced deposit avalble failure',\n updateIsReducedDepositAvailablePayment = '[StartNowApp] Update is reduced deposit available',\n fetchIsZeroDepositAvailable = '[StartNowApp] Fetch is reduced zero available',\n fetchIsZeroDepositAvailableSuccess = '[StartNowApp] Fetch is zero deposit available success',\n fetchIsZeroDepositAvailableFailure = '[StartNowApp] Fetch is zero deposit available failure',\n updateIsZeroDepositPayment = '[StartNowApp] Update is zero DepositPayment',\n updatePaymentStepSkipped = '[StartNowApp] Update payment step skipped',\n setIsFinalizeButtonEnable = '[StartNowApp] Set isFinalizeButtonEnable',\n resetIsFinalizeButtonEnable = '[StartNowApp] Reset isFinalizeButtonEnable',\n resetExternalPaymentInfo = '[StartNowApp] Reset externalPaymentInfo',\n}\n\n/**\n * ReCaptcha validation\n */\nexport const validateReCaptcha = createAction(\n StartNowAppActionTypes.validateReCaptcha,\n props<{ token: string }>(),\n);\nexport const validateReCaptchaSuccess = createAction(\n StartNowAppActionTypes.validateReCaptchaSuccess,\n props<{ isValid: boolean }>(),\n);\nexport const validateReCaptchaFailure = createAction(\n StartNowAppActionTypes.validateReCaptchaFailure,\n);\nexport const resetReCaptchaValidation = createAction(\n StartNowAppActionTypes.resetReCaptchaValidation,\n);\n\n/**\n * Step processing\n */\nexport const stepProcessing = createAction(\n StartNowAppActionTypes.stepProcessing,\n props<{ stepProcessing: boolean }>(),\n);\n\n/**\n * Initial steps skipped\n */\nexport const updateConsultantStepsSkipped = createAction(\n StartNowAppActionTypes.updateConsultantStepsSkipped,\n props<{ consultantStepsSkipped: boolean }>(),\n);\n\n/**\n * Payment step skiped when there is no payment\n */\nexport const updatePaymentStepSkipped = createAction(\n StartNowAppActionTypes.updatePaymentStepSkipped,\n props<{ paymentStepSkipped: boolean }>(),\n);\n\n/**\n * Find consultant by area\n */\nexport const findConsultantByArea = createAction(\n StartNowAppActionTypes.findConsultantByArea,\n props<{ consultantFinder: FindConsultantByAreaRequest }>(),\n);\n\n/**\n * Find consultant by area next page\n */\nexport const findConsultantByAreaNextPage = createAction(\n StartNowAppActionTypes.findConsultantByAreaNextPage,\n props<{ pageNumber: number; pageSize: number }>(),\n);\n\nexport const findConsultantByZipCodeNextPage = createAction(\n StartNowAppActionTypes.findConsultantByZipCodeNextPage,\n props<{ pageNumber: number; pageSize: number }>(),\n);\n\n/**\n * Find consultant by code\n */\nexport const findConsultantByConsultantCode = createAction(\n StartNowAppActionTypes.findConsultantByConsultantCode,\n props<{ request: FindConsultantByCodeRequest }>(),\n);\n\n/**\n * Result of finders\n */\nexport const findConsultantSuccess = createAction(\n StartNowAppActionTypes.findConsultantSuccess,\n props<{ hasMore: boolean; items: Consultant[] }>(),\n);\nexport const findConsultantFailure = createAction(StartNowAppActionTypes.findConsultantFailure);\n\n/**\n * Find consultant by zip code\n */\nexport const findConsultantByZipCode = createAction(\n StartNowAppActionTypes.findConsultantByZipCode,\n props<{ request: FindConsultantByZipCodeRequest }>(),\n);\nexport const findConsultantByZipCodeSuccess = createAction(\n StartNowAppActionTypes.findConsultantByZipCodeSuccess,\n props<{ res: FoundConsultantsByZipCode }>(),\n);\nexport const findConsultantByZipCodeFailure = createAction(\n StartNowAppActionTypes.findConsultantByZipCodeFailure,\n props<{ error: any }>(),\n);\nexport const resetFindConsultantByZipCodeErrorType = createAction(\n StartNowAppActionTypes.resetFindConsultantByZipCodeErrorType,\n);\n\n/**\n * Validate registration code\n */\nexport const validateRegistrationCode = createAction(\n StartNowAppActionTypes.validateRegistrationCode,\n props<{ validateRegistrationCode: ValidateRegistrationCodeRequest }>(),\n);\nexport const validateRegistrationCodeSuccess = createAction(\n StartNowAppActionTypes.validateRegistrationCodeSuccess,\n props<{ res: ValidateRegistrationCodeResponse }>(),\n);\nexport const validateRegistrationCodeFailure = createAction(\n StartNowAppActionTypes.validateRegistrationCodeFailure,\n);\n\n/**\n * Update registration code\n */\nexport const updateRegistrationCode = createAction(\n StartNowAppActionTypes.updateRegistrationCode,\n props<{ registrationCode: string }>(),\n);\n\n/**\n * Update registration code step skip\n */\nexport const updateRegistrationCodeStepSkipped = createAction(\n StartNowAppActionTypes.updateRegistrationCodeStepSkipped,\n props<{ skipRegistrationCodeStep: boolean; registrationCode: string }>(),\n);\n\n/**\n * Reset registration code step skip\n */\nexport const resetRegistrationCodeStepSkipped = createAction(\n StartNowAppActionTypes.resetRegistrationCodeStepSkipped,\n);\n\n/**\n * Reset registration code validity\n */\nexport const resetRegistrationCodeValidity = createAction(\n StartNowAppActionTypes.resetRegistrationCodeValidity,\n);\n/**\n * Reset registration code\n */\nexport const resetRegistrationCode = createAction(StartNowAppActionTypes.resetRegistrationCode);\n\n/**\n * Reset address validation step\n */\nexport const resetAddressValidationStep = createAction(\n StartNowAppActionTypes.resetAddressValidationStep,\n);\n\n/**\n * Reset find consultant\n */\nexport const resetFindConsultant = createAction(StartNowAppActionTypes.resetFindConsultant);\n\n/**\n * Reset no find consultant modal\n */\nexport const resetNoFindConsultantModal = createAction(\n StartNowAppActionTypes.resetNoFindConsultantModal,\n);\n\n/**\n * Reset first consultants\n */\nexport const resetFirstConsultants = createAction(StartNowAppActionTypes.resetFirstConsultants);\n\n/**\n * Update selected consultant\n */\nexport const updateSelectedConsultant = createAction(\n StartNowAppActionTypes.updateSelectedConsultant,\n props<{ selectedConsultant: Consultant }>(),\n);\nexport const resetSelectedConsultant = createAction(StartNowAppActionTypes.resetSelectedConsultant);\n\n/**\n * Update StartNowAppData\n */\nexport const updateStartNowAppUserInfo = createAction(\n StartNowAppActionTypes.updateStartNowAppUserInfo,\n props<{ userInfo: UserInfo }>(),\n);\n\nexport const updateStartNowAppUserInfoSuccess = createAction(\n StartNowAppActionTypes.updateStartNowAppUserInfoSuccess,\n props<{ saveUserInfoResult: SaveUserInfoResult }>(),\n);\n\nexport const updateStartNowAppUserInfoFailure = createAction(\n StartNowAppActionTypes.updateStartNowAppUserInfoFailure,\n props<{ error: any }>(),\n);\n\nexport const updateStartNowAppContactInfo = createAction(\n StartNowAppActionTypes.updateStartNowAppContactInfo,\n props<{ contactInfo: ContactInfo }>(),\n);\n\nexport const updateStartNowAppContactInfoSuccess = createAction(\n StartNowAppActionTypes.updateStartNowAppContactInfoSuccess,\n props<{ saveConsultantDataResult: SaveConsultantDataResult }>(),\n);\n\nexport const updateStartNowAppContactInfoFailure = createAction(\n StartNowAppActionTypes.updateStartNowAppContactInfoFailure,\n props<{ error: any }>(),\n);\n\nexport const updateStartNowAppAddressInfo = createAction(\n StartNowAppActionTypes.updateStartNowAppAddressInfo,\n props<{ addresses: Address[]; languagePreferred: string }>(),\n);\n\nexport const updateStartNowAppAddressInfoSuccess = createAction(\n StartNowAppActionTypes.updateStartNowAppAddressInfoSuccess,\n props<{ saveConsultantDataResult: SaveConsultantDataResult }>(),\n);\n\nexport const updateStartNowAppAddressInfoFailure = createAction(\n StartNowAppActionTypes.updateStartNowAppAddressInfoFailure,\n props<{ error: any }>(),\n);\n\nexport const updateAddressValidationModalValidity = createAction(\n StartNowAppActionTypes.updateAddressValidationModalValidity,\n props<{ isSuccess: boolean }>(),\n);\n\nexport const addAddress = createAction(\n StartNowAppActionTypes.addAddress,\n props<{ address: Address }>(),\n);\n\nexport const updateAreTermsConditionsAgreed = createAction(\n StartNowAppActionTypes.updateAreTermsConditionsAgreed,\n props<{ areTermsConditionsAgreed: boolean }>(),\n);\n\n/** Reset steps */\nexport const resetAboutYouStep = createAction(StartNowAppActionTypes.resetAboutYouStep);\n\nexport const resetContactStep = createAction(StartNowAppActionTypes.resetContactStep);\n\n/**\n * Reset agreement step\n */\nexport const resetAgreementStep = createAction(StartNowAppActionTypes.resetAgreementStep);\n\n/**\n * Update ssnNumber\n */\nexport const updateSsnNumber = createAction(\n StartNowAppActionTypes.updateSsnNumber,\n props<{ ssnNumber: string }>(),\n);\nexport const updateSsnNumberSuccess = createAction(\n StartNowAppActionTypes.updateSsnNumberSuccess,\n props<{ saveConsultantDataResult: SaveConsultantDataResult }>(),\n);\nexport const updateSsnNumberFailure = createAction(\n StartNowAppActionTypes.updateSsnNumberFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Update agreement step navigable flag\n */\nexport const updateAgreementStepNavigableFlag = createAction(\n StartNowAppActionTypes.updateAgreementStepNavigableFlag,\n props<{ isNextEnabled: boolean }>(),\n);\n\n/**\n * Create StartNowAppData\n */\nexport const createPassword = createAction(\n StartNowAppActionTypes.createPassword,\n props<{ password: string }>(),\n);\n\n/**\n * Validate Address\n */\nexport const validateAddress = createAction(\n StartNowAppActionTypes.validateAddress,\n props<{ address: Address }>(),\n);\n\nexport const validateAddressSuccess = createAction(\n StartNowAppActionTypes.validateAddressSuccess,\n props<{ addressValidation: VerifyAddressResponse }>(),\n);\n\nexport const validateAddressFailure = createAction(\n StartNowAppActionTypes.validateAddressFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const resetAddressValidationModal = createAction(\n StartNowAppActionTypes.resetAddressValidationModal,\n);\n\n/**\n * Starter Kit\n */\nexport const fetchStartNowAppStarterKits = createAction(\n StartNowAppActionTypes.fetchStartNowAppStarterKits,\n props<{ starterKitLanguageCode: LanguagePreferenceType; isNonPfas: boolean }>(),\n);\n\nexport const fetchStartNowAppStarterKitsSuccess = createAction(\n StartNowAppActionTypes.fetchStartNowAppStarterKitsSuccess,\n props<{ starterKits: StarterKitDto[] }>(),\n);\nexport const fetchStartNowAppStarterKitsFailure = createAction(\n StartNowAppActionTypes.fetchStartNowAppStarterKitsFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Update selected starter kit\n */\n\nexport const updateStartNowAppSelectedStarterKit = createAction(\n StartNowAppActionTypes.updateStartNowAppSelectedStarterKit,\n props<{\n selectedStarterKit: StarterKitDto;\n selectedStartNowPaymentType: StartNowPaymentType;\n isDepositPayment: boolean;\n isReducedDepositPayment: boolean;\n isZeroDepositPayment: boolean;\n }>(),\n);\nexport const updateStartNowAppSelectedStarterKitSuccess = createAction(\n StartNowAppActionTypes.updateStartNowAppSelectedStarterKitSuccess,\n props<{ saveConsultantDataResult: SaveConsultantDataResult }>(),\n);\nexport const updateStartNowAppSelectedStarterKitFailure = createAction(\n StartNowAppActionTypes.updateStartNowAppSelectedStarterKitFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Fetch order summary\n */\nexport const fetchOrderSummary = createAction(StartNowAppActionTypes.fetchOrderSummary);\nexport const fetchOrderSummarySuccess = createAction(\n StartNowAppActionTypes.fetchOrderSummarySuccess,\n props<{ res: OrderSummaryResponse }>(),\n);\nexport const fetchOrderSummaryFailure = createAction(\n StartNowAppActionTypes.fetchOrderSummaryFailure,\n);\n\n/**\n * Reset order summary\n */\nexport const resetOrderSummary = createAction(StartNowAppActionTypes.resetOrderSummary);\n\n/**\n * Fetch deposit payment value\n */\nexport const fetchDepositPaymentValue = createAction(\n StartNowAppActionTypes.fetchDepositPaymentValue,\n);\nexport const fetchDepositPaymentValueSuccess = createAction(\n StartNowAppActionTypes.fetchDepositPaymentValueSuccess,\n props<{ res: number }>(),\n);\nexport const fetchDepositPaymentValueFailure = createAction(\n StartNowAppActionTypes.fetchDepositPaymentValueFailure,\n);\n\n/**\n * Update isDepositPayment\n */\nexport const updateIsDepositPayment = createAction(\n StartNowAppActionTypes.updateIsDepositPayment,\n props<{ isDepositPayment: boolean }>(),\n);\n\n/**\n * Fetch reduced deposit payment value\n */\nexport const fetchReducedDepositPaymentValue = createAction(\n StartNowAppActionTypes.fetchReducedDepositPaymentValue,\n);\nexport const fetchReducedDepositPaymentValueSuccess = createAction(\n StartNowAppActionTypes.fetchReducedDepositPaymentValueSuccess,\n props<{ res: number }>(),\n);\nexport const fetchReducedDepositPaymentValueFailure = createAction(\n StartNowAppActionTypes.fetchReducedDepositPaymentValueFailure,\n);\n\n/**\n * Update isReducedDepositPayment\n */\nexport const updateIsReducedDepositPayment = createAction(\n StartNowAppActionTypes.updateIsReducedDepositPayment,\n props<{ isReducedDepositPayment: boolean }>(),\n);\n\n/**\n * Update updateIsZeroDepositPayment\n */\nexport const updateIsZeroDepositPayment = createAction(\n StartNowAppActionTypes.updateIsZeroDepositPayment,\n props<{ isZeroDepositPayment: boolean }>(),\n);\n\n/**\n * Fetch reduced deposit payment value\n */\nexport const fetchIsReducedDepositAvailable = createAction(\n StartNowAppActionTypes.fetchIsReducedDepositAvailable,\n);\nexport const fetchIsReducedDepositAvailableSuccess = createAction(\n StartNowAppActionTypes.fetchIsReducedDepositAvailableSuccess,\n props<{ res: boolean }>(),\n);\nexport const fetchIsReducedDepositAvailableFailure = createAction(\n StartNowAppActionTypes.fetchIsReducedDepositAvailableFailure,\n);\n\n/**\n * Fetch is zero deposit value\n */\nexport const fetchIsZeroDepositAvailable = createAction(\n StartNowAppActionTypes.fetchIsZeroDepositAvailable,\n);\nexport const fetchIsZeroDepositAvailableSuccess = createAction(\n StartNowAppActionTypes.fetchIsZeroDepositAvailableSuccess,\n props<{ res: boolean }>(),\n);\nexport const fetchIsZeroDepositAvailableFailure = createAction(\n StartNowAppActionTypes.fetchIsZeroDepositAvailableFailure,\n);\n\n/**\n * Check if new payment required based on starter kit changes based on back/forth UI navigation\n */\nexport const checkIfNewPaymentRequired = createAction(\n StartNowAppActionTypes.checkIfNewPaymentRequired,\n props<{\n applicationRegistrationId: number;\n starterKitId: number;\n isDepositPayment: boolean;\n isReducedDepositPayment: boolean;\n isZeroDepositPayment: boolean;\n }>(),\n);\nexport const checkIfNewPaymentRequiredSuccess = createAction(\n StartNowAppActionTypes.checkIfNewPaymentRequiredSuccess,\n props<{ res: boolean }>(),\n);\nexport const checkIfNewPaymentRequiredFailure = createAction(\n StartNowAppActionTypes.checkIfNewPaymentRequiredFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Log card attempt\n */\nexport const logCardAttempt = createAction(\n StartNowAppActionTypes.logCardAttempt,\n props<{ request: SaveLogCardAttemptRequest }>(),\n);\n\nexport const logCardAttemptSuccess = createAction(StartNowAppActionTypes.logCardAttemptSuccess);\n\nexport const logCardAttemptFailure = createAction(\n StartNowAppActionTypes.logCardAttemptFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Reset starter kit step\n */\nexport const resetStarterKitStep = createAction(StartNowAppActionTypes.resetStarterKitStep);\n\n/**\n * Fetch Country States\n */\nexport const fetchCountryStates = createAction(StartNowAppActionTypes.fetchCountryStates);\nexport const fetchCountryStatesSuccess = createAction(\n StartNowAppActionTypes.fetchCountryStatesSuccess,\n props<{ countryStates: CountryState[] }>(),\n);\n\nexport const fetchCountryStatesFailure = createAction(\n StartNowAppActionTypes.fetchCountryStatesFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Check email uniqueness\n */\nexport const emailUniquenessCheck = createAction(\n StartNowAppActionTypes.emailUniquenessCheck,\n props<{ email: string }>(),\n);\nexport const emailUniquenessCheckSuccess = createAction(\n StartNowAppActionTypes.emailUniquenessCheckSuccess,\n props<{ emailIsValid: boolean }>(),\n);\nexport const emailUniquenessCheckFailure = createAction(\n StartNowAppActionTypes.emailUniquenessCheckFailure,\n props<{ error: any }>(),\n);\nexport const resetEmailValidity = createAction(StartNowAppActionTypes.resetEmailValidity);\n\n/**\n * Check phone number uniqueness\n */\nexport const phoneNumberUniquenessCheck = createAction(\n StartNowAppActionTypes.phoneNumberUniquenessCheck,\n props<{ request: PhoneNumberValidationRequest }>(),\n);\nexport const phoneNumberUniquenessCheckSuccess = createAction(\n StartNowAppActionTypes.phoneNumberUniquenessCheckSuccess,\n props<{ response: PhoneNumberValidationResponse }>(),\n);\nexport const phoneNumberUniquenessCheckFailure = createAction(\n StartNowAppActionTypes.phoneNumberUniquenessCheckFailure,\n props<{ error: any }>(),\n);\nexport const resetPhoneNumberValidity = createAction(\n StartNowAppActionTypes.resetPhoneNumberValidity,\n props<{ phoneNumberType: PhoneNumberType }>(),\n);\n\n/**\n * Fetch client token\n **/\nexport const fetchClientToken = createAction(\n StartNowAppActionTypes.fetchClientToken,\n props<{ payload: ClientTokenRequest }>(),\n);\nexport const fetchClientTokenSuccess = createAction(\n StartNowAppActionTypes.fetchClientTokenSuccess,\n props<{ payload: ClientTokenResponse }>(),\n);\nexport const fetchClientTokenFailure = createAction(\n StartNowAppActionTypes.fetchClientTokenFailure,\n props<{ error: PhErrorResponse }>(),\n);\nexport const resetClientToken = createAction(StartNowAppActionTypes.resetClientToken);\n\n/**\n * Store payment info\n **/\nexport const storePaymentType = createAction(\n StartNowAppActionTypes.storePaymentType,\n props<{ paymentType: PaymentType }>(),\n);\nexport const storeCardPaymentInfo = createAction(\n StartNowAppActionTypes.storeCardPaymentInfo,\n props<{ payload: CardPaymentInfo }>(),\n);\nexport const storeVoucherPaymentInfo = createAction(\n StartNowAppActionTypes.storeVoucherPaymentInfo,\n props<{ payload: VoucherPaymentInfo }>(),\n);\nexport const storeExternalPaymentInfo = createAction(\n StartNowAppActionTypes.storeExternalPaymentInfo,\n props<{ paymentInfo: PaymentInfo }>(),\n);\nexport const storeExternalPaymentInfoSuccess = createAction(\n StartNowAppActionTypes.storeExternalPaymentInfoSuccess,\n props<{ payload: PaymentInfo }>(),\n);\nexport const storeExternalPaymentInfoFailure = createAction(\n StartNowAppActionTypes.storeExternalPaymentInfoFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Update payment provider type\n */\nexport const updatePaymentProviderType = createAction(\n StartNowAppActionTypes.updatePaymentProviderType,\n props<{ provider: PaymentProviderType }>(),\n);\n\n/**\n * Create Order\n **/\nexport const createOrder = createAction(\n StartNowAppActionTypes.createOrder,\n props<{ payload: CreateOrderRequest }>(),\n);\nexport const createOrderSuccess = createAction(\n StartNowAppActionTypes.createOrderSuccess,\n props<{ payload: CreateOrderResponse }>(),\n);\nexport const createOrderFailure = createAction(\n StartNowAppActionTypes.createOrderFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Update Order\n */\nexport const updateOrder = createAction(\n StartNowAppActionTypes.updateOrder,\n props<{ payload: UpdateOrderRequest }>(),\n);\nexport const updateOrderSuccess = createAction(\n StartNowAppActionTypes.updateOrderSuccess,\n props<{ response: UpdateOrderResponse }>(),\n);\nexport const updateOrderFailure = createAction(\n StartNowAppActionTypes.updateOrderFailure,\n props<{ error: any }>(),\n);\n\n/**\n * Create Payment Method\n **/\nexport const createPaymentMethod = createAction(\n StartNowAppActionTypes.createPaymentMethod,\n props<{ payload: CreatePaymentMethodRequest }>(),\n);\nexport const createPaymentMethodSuccess = createAction(\n StartNowAppActionTypes.createPaymentMethodSuccess,\n props<{ payload: CreatePaymentMethodResponse }>(),\n);\nexport const createPaymentMethodFailure = createAction(\n StartNowAppActionTypes.createPaymentMethodFailure,\n props<{ error: any }>(),\n);\n\nexport const resetPaymentMethod = createAction(StartNowAppActionTypes.resetPaymentMethod);\n\n/**\n * Update Additional Billing Information\n */\nexport const updateAdditionalBillingInformation = createAction(\n StartNowAppActionTypes.updateAdditionalBillingInformation,\n props<{ additionalBillingInformation: AdditionalBillingInformation }>(),\n);\n\n/**\n * Reset Additional Billing Information\n */\nexport const resetAdditionalBillingInformation = createAction(\n StartNowAppActionTypes.resetAdditionalBillingInformation,\n);\n\n/**\n * Create, Receive Voucher\n **/\nexport const createVoucher = createAction(\n StartNowAppActionTypes.createVoucher,\n props<{ payload: CreateVoucherRequest }>(),\n);\nexport const createVoucherSuccess = createAction(\n StartNowAppActionTypes.createVoucherSuccess,\n props<{ payload: CreatedVoucherPaymentMethod }>(),\n);\nexport const createVoucherFailure = createAction(\n StartNowAppActionTypes.createVoucherFailure,\n props<{ error: any }>(),\n);\nexport const receiveVouchers = createAction(\n StartNowAppActionTypes.receiveVouchers,\n props<{ vouchers: ReceiveVouchersRequest }>(),\n);\nexport const receiveVouchersSuccess = createAction(\n StartNowAppActionTypes.receiveVouchersSuccess,\n props<{ payload: ReceiveVouchersResponse }>(),\n);\nexport const receiveVouchersFailure = createAction(\n StartNowAppActionTypes.receiveVouchersFailure,\n props<{ error: any }>(),\n);\nexport const resetReceiveVoucher = createAction(StartNowAppActionTypes.resetReceiveVoucher);\n\n/**\n * Reset voucher info\n */\nexport const resetVoucherInfo = createAction(StartNowAppActionTypes.resetVoucherInfo);\n\n/**\n * Reset payment info\n */\nexport const resetPaymentInfo = createAction(StartNowAppActionTypes.resetPaymentInfo);\n\n/**\n * Check can submit consultant\n **/\nexport const checkIfCanSubmitConsultant = createAction(\n StartNowAppActionTypes.checkIfCanSubmitConsultant,\n props<{ payload: SubmitConsultantRequest }>(),\n);\n\nexport const checkIfCanSubmitConsultantSuccess = createAction(\n StartNowAppActionTypes.checkIfCanSubmitConsultantSuccess,\n props<{ payload: SubmitConsultantResponse }>(),\n);\n\nexport const checkIfCanSubmitConsultantFailure = createAction(\n StartNowAppActionTypes.checkIfCanSubmitConsultantFailure,\n props<{ error: any }>(),\n);\n\nexport const resetCanSubmitConsultantInfo = createAction(\n StartNowAppActionTypes.resetCanSubmitConsultantInfo,\n);\n\n/**\n * Submit consultant\n **/\nexport const submitConsultant = createAction(\n StartNowAppActionTypes.submitConsultant,\n props<{ payload: SubmitConsultantRequest }>(),\n);\n\nexport const submitConsultantSuccess = createAction(\n StartNowAppActionTypes.submitConsultantSuccess,\n props<{ payload: SubmitConsultantResponse }>(),\n);\n\nexport const submitConsultantFailure = createAction(\n StartNowAppActionTypes.submitConsultantFailure,\n props<{ error: any }>(),\n);\n\nexport const resetSubmitConsultantInfo = createAction(\n StartNowAppActionTypes.resetSubmitConsultantInfo,\n);\n\n/**\n * Update congratulation step mode\n */\nexport const updateCongratulationStepMode = createAction(\n StartNowAppActionTypes.updateCongratulationStepMode,\n props<{ mode: CongratulationType }>(),\n);\n\n/**\n * Fetch voucher barcode urls\n */\nexport const fetchVoucherBarCodeUrls = createAction(\n StartNowAppActionTypes.fetchVoucherBarCodeUrls,\n props<{ applicationRegistrationId: number }>(),\n);\nexport const fetchVoucherBarCodeUrlsSuccess = createAction(\n StartNowAppActionTypes.fetchVoucherBarCodeUrlsSuccess,\n props<{ urls: string[] }>(),\n);\nexport const fetchVoucherBarCodeUrlsFailure = createAction(\n StartNowAppActionTypes.fetchVoucherBarCodeUrlsFailure,\n);\n\n/**\n * Update confirm recruiter\n */\nexport const updateConfirmRecruiter = createAction(\n StartNowAppActionTypes.updateConfirmRecruiter,\n props<{ confirmRecruiter: boolean }>(),\n);\n\n/**\n * Set isFinalizeButtonEnable\n */\nexport const setIsFinalizeButtonEnable = createAction(\n StartNowAppActionTypes.setIsFinalizeButtonEnable,\n props<{ isFinalizeButtonEnable: boolean }>(),\n);\n\n/**\n * reset isFinalizeButtonEnable\n */\nexport const resetIsFinalizeButtonEnable = createAction(\n StartNowAppActionTypes.resetIsFinalizeButtonEnable,\n);\n\n/**\n * We need to reset externalPaymentInfo case of kushki because\n * we need to listen the nonce for check kushki payment is saved\n */\nexport const resetExternalPaymentInfo = createAction(\n StartNowAppActionTypes.resetExternalPaymentInfo,\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { UserState } from './user-state-models';\n\nexport const userStateFeatureKey = 'userState';\n\nexport const selectUserStateFeature = createFeatureSelector(userStateFeatureKey);\n\nexport const selectUser = createSelector(selectUserStateFeature, (state: UserState) =>\n state ? state.user : null,\n);\n\nexport const selectUserLoading = createSelector(selectUserStateFeature, (state: UserState) =>\n state ? state.loading : false,\n);\n\nexport const selectRegistrationFailedErrorType = createSelector(\n selectUserStateFeature,\n (state: UserState) => (state ? state.registrationFailedErrorType : null),\n);\n\nexport const selectUserIsFetched = createSelector(selectUserStateFeature, (state: UserState) =>\n state ? state.userIsFetched : false,\n);\n","import { ConsultantResponse } from '@core/dto/consultant.dto';\nimport { PhErrorResponse } from '@core/dto/ph-error';\nimport { UpdateUserRequest } from '@core/dto/user.dto';\nimport { UserRegistrationForm } from '@core/models/user-registration.model';\nimport { createAction, props } from '@ngrx/store';\nimport { UserModel } from './user-state-models';\n\nexport enum UserActionTypes {\n resetUserStore = '[User] Reset user store',\n registerUser = '[User] Register User',\n registerUserSuccess = '[User] Register User Success',\n registerUserFailure = '[User] Register User Failure',\n fetchUser = '[User] Fetch user',\n fetchUserSuccess = '[User] Fetch user success',\n fetchUserFailure = '[User] Fetch user failure',\n updateUser = '[User] Update user',\n updateUserSuccess = '[User] Update user success',\n updateUserFailure = '[User] Update user failure',\n fetchUserWithConsultant = '[User] Fetch user with consultant data',\n fetchUserWithConsultantSuccess = '[User] Fetch user with consultant data success',\n fetchUserWithConsultantFailure = '[User] Fetch user with consultant data failure',\n updateAssignedConsultant = '[User] Update Assigned consultant',\n updateAssignedConsultantSuccess = '[User] Update Assigned consultant success',\n updateAssignedConsultantFailure = '[User] Update Assigned consultant failure',\n\n resetRegistrationFailedErrorType = '[User] Reset registration failed error type',\n}\n\nexport const resetUserStore = createAction(UserActionTypes.resetUserStore);\n\n/**\n * Register user\n */\nexport const registerUser = createAction(\n UserActionTypes.registerUser,\n props<{ payload: UserRegistrationForm; token: string }>(),\n);\n\nexport const registerUserSuccess = createAction(\n UserActionTypes.registerUserSuccess,\n props<{ payload: { email: string } }>(),\n);\n\nexport const registerUserFailure = createAction(\n UserActionTypes.registerUserFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Fetch user\n */\nexport const fetchUser = createAction(UserActionTypes.fetchUser);\nexport const fetchUserSuccess = createAction(\n UserActionTypes.fetchUserSuccess,\n props<{ user: UserModel }>(),\n);\nexport const fetchUserFailure = createAction(\n UserActionTypes.fetchUserFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n- * Fetch user with consultant data\n- */\nexport const fetchUserWithConsultant = createAction(UserActionTypes.fetchUserWithConsultant);\nexport const fetchUserWithConsultantSuccess = createAction(\n UserActionTypes.fetchUserWithConsultantSuccess,\n props<{ user: UserModel; consultant: ConsultantResponse }>(),\n);\nexport const fetchUserWithConsultantFailure = createAction(\n UserActionTypes.fetchUserWithConsultantFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\n/**\n * Update user\n */\nexport const updateUser = createAction(\n UserActionTypes.updateUser,\n props<{ user: UpdateUserRequest }>(),\n);\nexport const updateUserSuccess = createAction(\n UserActionTypes.updateUserSuccess,\n props<{ user: UserModel }>(),\n);\nexport const updateUserFailure = createAction(\n UserActionTypes.updateUserFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const updateAssignedConsultant = createAction(\n UserActionTypes.updateAssignedConsultant,\n props<{ consultantProwessId: number }>(),\n);\n\nexport const updateAssignedConsultantSuccess = createAction(\n UserActionTypes.updateAssignedConsultantSuccess,\n);\n\nexport const updateAssignedConsultantFailure = createAction(\n UserActionTypes.updateAssignedConsultantFailure,\n);\n\nexport const resetRegistrationFailedErrorType = createAction(\n UserActionTypes.resetRegistrationFailedErrorType,\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { VoucherState } from './voucher-state-models';\n\nexport const voucherStateFeatureKey = 'voucherState';\nexport const selectVoucherStateFeature =\n createFeatureSelector(voucherStateFeatureKey);\n\nexport const selectVoucherStateLoading = createSelector(\n selectVoucherStateFeature,\n (state: VoucherState) => (state ? state.loading : false),\n);\n\nexport const selectVouchers = createSelector(selectVoucherStateFeature, (state: VoucherState) =>\n state ? state.vouchers : [],\n);\n\nexport const selectVoucherEmail = createSelector(\n selectVoucherStateFeature,\n (state: VoucherState) => (state ? state.email : null),\n);\n\nexport const selectVoucherRetryCounter = createSelector(\n selectVoucherStateFeature,\n (state: VoucherState) => (state ? state.retryCounter : 0),\n);\n\nexport const selectCreateVoucherError = createSelector(\n selectVoucherStateFeature,\n (state: VoucherState) => (state ? state.error : null),\n);\n\nexport const selectVoucherPrevalidation = createSelector(\n selectVoucherStateFeature,\n (state: VoucherState) =>\n state\n ? { prevalidated: state.prevalidated, error: state.error }\n : { prevalidated: false, error: null },\n);\n","import { createAction, props } from '@ngrx/store';\nimport { CreatedVoucher, ReceivedVoucher } from './voucher-state-models';\n\nexport enum VoucherActionTypes {\n resetVoucherStore = '[Voucher] Reset voucher store',\n createVoucher = '[Voucher] Create voucher',\n createVoucherSuccess = '[Voucher] Create voucher success',\n createVoucherFailure = '[Voucher] Create voucher failure',\n setVoucherEmail = '[Voucher] Set email',\n\n receiveVoucher = '[Voucher] Receive voucher',\n receiveVoucherSuccess = '[Voucher] Receive voucher success',\n receiveVoucherFailure = '[Voucher] Receive voucher failure',\n retryReceiveVoucher = '[Voucher] Retry receive voucher',\n\n generateVoucher = '[Voucher] Generate voucher',\n generateVoucherSuccess = '[Voucher] Generate voucher success',\n generateVoucherFailure = '[Voucher] Generate voucher failure',\n\n prevalidateVoucher = '[Voucher] Prevalidate voucher',\n prevalidateVoucherSuccess = '[Voucher] Prevalidate voucher success',\n prevalidateVoucherFailure = '[Voucher] Prevalidate voucher failure',\n\n resetVoucherErrors = '[Voucher] Reset voucher errors',\n}\n\nexport const resetVoucherStore = createAction(VoucherActionTypes.resetVoucherStore);\n\nexport const createVoucher = createAction(\n VoucherActionTypes.createVoucher,\n props<{ email: string }>(),\n);\n\nexport const createVoucherSuccess = createAction(\n VoucherActionTypes.createVoucherSuccess,\n props<{ vouchers: CreatedVoucher[] }>(),\n);\n\nexport const createVoucherFailure = createAction(\n VoucherActionTypes.createVoucherFailure,\n props<{ error: any }>(),\n);\n\nexport const setVoucherEmail = createAction(\n VoucherActionTypes.setVoucherEmail,\n props<{ email: string }>(),\n);\n\nexport const receiveVoucher = createAction(\n VoucherActionTypes.receiveVoucher,\n props<{ voucherTokens: string[] }>(),\n);\n\nexport const receiveVoucherSuccess = createAction(\n VoucherActionTypes.receiveVoucherSuccess,\n props<{ vouchers: ReceivedVoucher[] }>(),\n);\n\nexport const retryReceiveVoucher = createAction(\n VoucherActionTypes.retryReceiveVoucher,\n props<{ voucherTokens: string[] }>(),\n);\n\nexport const receiveVoucherFailure = createAction(VoucherActionTypes.receiveVoucherFailure);\n\nexport const generateVoucher = createAction(\n VoucherActionTypes.generateVoucher,\n props<{ vouchers: CreatedVoucher[] }>(),\n);\n\nexport const generateVoucherSuccess = createAction(\n VoucherActionTypes.generateVoucherSuccess,\n props<{ voucherTokens: string[] }>(),\n);\n\nexport const generateVoucherFailure = createAction(VoucherActionTypes.generateVoucherFailure);\n\nexport const resetVoucherErrors = createAction(VoucherActionTypes.resetVoucherErrors);\n\nexport const prevalidateVoucher = createAction(\n VoucherActionTypes.prevalidateVoucher,\n props<{ email: string }>(),\n);\n\nexport const prevalidateVoucherSuccess = createAction(VoucherActionTypes.prevalidateVoucherSuccess);\nexport const prevalidateVoucherFailure = createAction(\n VoucherActionTypes.prevalidateVoucherFailure,\n props<{ error: any }>(),\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { WebsiteModeState } from './website-mode-state-models';\n\nexport const websiteModeStateFeatureKey = 'websiteModeState';\n\nexport const selectWebsiteModeStateFeature = createFeatureSelector(\n websiteModeStateFeatureKey,\n);\n\nexport const selectWebsiteMode = createSelector(\n selectWebsiteModeStateFeature,\n (state: WebsiteModeState) => (state ? state.websiteMode : null),\n);\n","import { WebsiteMode } from '@core/enums/website-mode.enum';\nimport { createAction, props } from '@ngrx/store';\n\nexport enum WebsiteModeActionTypes {\n setWebsiteMode = '[WebsiteMode] Set Website Mode',\n}\n\n/**\n * Set Website Mode\n */\nexport const setWebsiteMode = createAction(\n WebsiteModeActionTypes.setWebsiteMode,\n props<{ websiteMode: WebsiteMode }>(),\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { WishlistState } from './wishlist-state-models';\n\nexport const wishlistStateFeatureKey = 'wishlistState';\n\nexport const selectWishlistFeature = createFeatureSelector(wishlistStateFeatureKey);\n\nexport const selectWishlist = createSelector(selectWishlistFeature, (state: WishlistState) =>\n state ? state.wishListItems : [],\n);\n\nexport const selectLoading = createSelector(selectWishlistFeature, (state: WishlistState) =>\n state ? state.loading : false,\n);\n","import { createAction, props } from '@ngrx/store';\nimport { PhErrorResponse } from '@core/dto/ph-error';\nimport { WishlistItem } from '@core/store/wishlist/wishlist-state-models';\nimport { WishlistResponse } from '@core/dto/wishlist.dto';\nimport { HttpErrorResponse } from '@angular/common/http';\nexport enum WishlistActionTypes {\n resetWishlistState = '[Wishlist] Reset wishlist state',\n\n fetchWishlist = '[Wishlist] Fetch wishlist',\n fetchWishlistSuccess = '[Wishlist] Fetch wishlist success',\n fetchWishlistFailure = '[Wishlist] Fetch wishlist failure',\n\n addToWishlist = '[Wishlist] Add to wishlist',\n addToWishlistSuccess = '[Wishlist] Add to wishlist success',\n addToWishlistFailure = '[Wishlist] Add to wishlist failure',\n\n mergeWishlist = '[Wishlist] Merge Wishlist',\n mergeWishlistSuccess = '[Wishlist] Merge Wishlist Success',\n mergeWishlistFailure = '[Wishlist] Merge Wishlist Failure',\n\n deleteFromWishlist = '[Wishlist] Delete from wishlist',\n deleteFromWishlistSuccess = '[Wishlist] Delete from wishlist success',\n deleteFromWishlistFailure = '[Wishlist] Delete from wishlist failure',\n\n newWishlist = '[Wishlist] New wishlist',\n newWishlistSuccess = '[Wishlist] New wishlist success',\n newWishlistFailure = '[Wishlist] New wishlist failure',\n}\n\nexport const resetWishlistState = createAction(WishlistActionTypes.resetWishlistState);\nexport const fetchWishlist = createAction(WishlistActionTypes.fetchWishlist);\nexport const fetchWishlistSuccess = createAction(\n WishlistActionTypes.fetchWishlistSuccess,\n props<{ wishListItems: WishlistItem[] }>(),\n);\nexport const fetchWishlistFailure = createAction(\n WishlistActionTypes.fetchWishlistFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const addToWishList = createAction(\n WishlistActionTypes.addToWishlist,\n props<{ sku: string }>(),\n);\n\nexport const addToWishlistSuccess = createAction(\n WishlistActionTypes.addToWishlistSuccess,\n props<{ wishListResponse: WishlistResponse }>(),\n);\n\nexport const addToWishlistFailure = createAction(\n WishlistActionTypes.addToWishlistFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const mergeWishlist = createAction(WishlistActionTypes.mergeWishlist);\nexport const mergeWishlistSuccess = createAction(WishlistActionTypes.mergeWishlistSuccess);\nexport const mergeWishlistFailure = createAction(\n WishlistActionTypes.mergeWishlistFailure,\n props<{ error: HttpErrorResponse }>(),\n);\n\nexport const deleteFromWishlist = createAction(\n WishlistActionTypes.deleteFromWishlist,\n props<{ sku: string }>(),\n);\n\nexport const deleteFromWishlistSuccess = createAction(\n WishlistActionTypes.deleteFromWishlistSuccess,\n props<{ wishListResponse: WishlistResponse }>(),\n);\n\nexport const deleteFromWishlistFailure = createAction(\n WishlistActionTypes.deleteFromWishlistFailure,\n props<{ error: PhErrorResponse }>(),\n);\n\nexport const newWishlist = createAction(WishlistActionTypes.newWishlist);\nexport const newWishlistSuccess = createAction(WishlistActionTypes.newWishlistSuccess);\nexport const newWishlistFailure = createAction(WishlistActionTypes.newWishlistFailure);\n","import {\n Component,\n ChangeDetectionStrategy,\n Input,\n OnInit,\n EventEmitter,\n Output,\n OnDestroy,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'app-plus-minus-counter',\n templateUrl: './plus-minus-counter.component.html',\n styleUrls: ['./plus-minus-counter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: PlusMinusCounterComponent,\n multi: true,\n },\n ],\n})\nexport class PlusMinusCounterComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Output()\n quantityChange: EventEmitter = new EventEmitter();\n\n @Input()\n identifier: string;\n\n @Input()\n min: number;\n\n @Input()\n max: number;\n\n @Input()\n size: 'sm' | 'lg';\n\n @Input()\n value: number;\n\n disabled = false;\n\n private onChange$: Subject;\n private onChangeSubscription: Subscription;\n\n constructor() {\n this.onChange$ = new Subject();\n this.onChangeSubscription = this.onChange$\n .pipe(debounceTime(300))\n .subscribe((value) => this.quantityChange.emit({ value }));\n }\n\n ngOnInit(): void {\n this.value = this.value ? this.value : this.min ? this.min : this.max ? this.max : 0;\n }\n\n onChange: (value: string) => void = () => {};\n onTouched = () => {};\n\n writeValue(obj: any): void {\n this.value = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n getSizeClass(): string {\n return [\n this.size === 'sm' ? 'input-group-sm' : '',\n this.size === 'lg' ? 'input-group-lg' : '',\n ].join(' ');\n }\n\n increment(): void {\n if (this.max) this.max > this.value && this.value++;\n else this.value++;\n this.onChange$.next(this.value);\n }\n\n decrement(): void {\n if (this.min) this.min < this.value && this.value--;\n else this.value--;\n this.onChange$.next(this.value);\n }\n\n ngOnDestroy(): void {\n this.onChangeSubscription.unsubscribe();\n }\n}\n","\n
    \n
    \n \n
    \n \n
    \n \n
    \n
    \n
    \n","\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    {{ orderLine.collectionName }}
    \n \n {{ orderLine.productName }}\n \n
    #{{ orderLine.sku }}
    \n
    \n
    \n
    \n
    \n \n {{ orderLine.originalPrice | phCurrency }}\n

    \n {{ orderLine.discountedPrice | phCurrency }}\n
    \n
    \n
    \n {{ orderLine.quantity }}\n
    \n \n \n \n {{ i + 1 }}\n \n \n \n
    \n
    \n

    {{ orderLine.quantity * orderLine.discountedPrice | phCurrency }}

    \n
    \n \n \n \n \n
    \n \n
    \n
    \n \n \n \n
    \n
    {{ orderLine.collectionName }}
    \n {{ orderLine.productName }}\n
    {{ orderLine.sku }}
    \n
    \n Qty\n {{ orderLine.quantity }}\n
    \n
    \n ${{ orderLine.discountedPrice }}\n \n ${{ orderLine.originalPrice }}\n \n
    \n \n
    \n \n \n \n \n
    ${{ orderLine.total }}
    \n
    \n
    \n \n
    \n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ProductRoutes } from '@core/constants/routes.const';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { OrderLine } from '@core/store/cart/cart-state-models';\n\n@Component({\n selector: 'app-order-line',\n templateUrl: './order-line.component.html',\n styleUrls: ['./order-line.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderLineComponent {\n readonly productRoute = ProductRoutes.Product;\n readonly pRoute = ProductRoutes.P;\n\n @Input() readOnly: boolean;\n @Input() orderLine: OrderLine;\n @Input() updateQty: (orderLine: OrderLine, option: any) => void;\n @Input() remove: (orderLineId: number) => void;\n @Input() productClickable: boolean = false;\n\n thumbnail = Thumbnail;\n\n constructor() {}\n\n counter(number: number): any[] {\n return new Array(number);\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\n\n@Component({\n selector: 'app-delete-from-cart-confirm-dialog',\n templateUrl: './delete-from-cart-confirm-dialog.component.html',\n styleUrls: ['./delete-from-cart-confirm-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DeleteFromCartConfirmDialogComponent {\n @Input() removeItem: () => void;\n\n modalConfig: ModalConfig = {\n title: $localize`Remove product`,\n dismissButtonLabel: $localize`Cancel`,\n closeButtonLabel: $localize`Remove it`,\n onClose: this.onClose.bind(this),\n ngbModalOptions: { size: 'sm' },\n };\n\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n constructor() {}\n\n onClose() {\n this.removeItem && this.removeItem();\n }\n\n async open() {\n return await this.modalComponent.open();\n }\n}\n","\n
    \n \n
    Are you sure that you want to remove this item from cart?\n
    \n\n","\n
    \n
    \n

    Product(s)

    \n
    \n
    \n

    Price

    \n
    \n
    \n

    Qty

    \n
    \n
    \n

    Total

    \n
    \n
    \n
    \n
    \n\n \n\n\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { Cart, OrderLine } from '@core/store/cart/cart-state-models';\nimport { deleteFromCart, updateOrderLineQty } from '@core/store/cart/cart.actions';\nimport { Store } from '@ngrx/store';\nimport { DeleteFromCartConfirmDialogComponent } from '../delete-from-cart-confirm-dialog/delete-from-cart-confirm-dialog.component';\n\n@Component({\n selector: 'app-order-lines',\n templateUrl: './order-lines.component.html',\n styleUrls: ['./order-lines.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderLinesComponent {\n @Input() readOnly: boolean;\n @Input() disableHeader: boolean = false;\n @Input() cart: Cart;\n @Input() productClickable: boolean = false;\n\n selectedOrderLineId: number;\n\n @ViewChild('deleteConfirmModal') private deleteConfirmModal: DeleteFromCartConfirmDialogComponent;\n\n constructor(private store$: Store) {}\n\n openDeleteConfirmationModal = (orderLineId: number): void => {\n this.selectedOrderLineId = orderLineId;\n this.deleteConfirmModal.open();\n };\n\n deleteCartItem = () => {\n this.store$.dispatch(deleteFromCart({ orderLineId: this.selectedOrderLineId }));\n };\n\n updateOrderLineQty = (orderLine: OrderLine, option: any): void => {\n this.store$.dispatch(\n updateOrderLineQty({\n orderLineId: orderLine.orderLineId,\n quantity: +option.value,\n }),\n );\n };\n}\n","export enum PromotionMessage {\n RegularCustomerSpecialWithoutFullPrice = 1,\n FullPriceWithoutRegularCustomerSpecial,\n NonQualifyingPurchaseCustomerSpecial,\n BuyOneGetOne50,\n NonQualifyingPurchaseCollectAndSave = 5,\n SurpriseBuyProgram = 6,\n}\n","/* eslint-disable max-len */\nimport { PromotionMessage } from '@core/enums/promotion-message.enum';\n\nexport const PromotionMessageLocale = {\n [PromotionMessage.RegularCustomerSpecialWithoutFullPrice]: $localize`There are one or more Customer Special item(s) in your shopping cart. To take advantage of the special price, add a regular-price item to your cart. Note: you may purchase up to TWO Customer Specials with each regular-price purchase.`,\n [PromotionMessage.FullPriceWithoutRegularCustomerSpecial]: $localize`Don’t miss your chance to save! You’re eligible to purchase up to TWO Customer Specials with each regular-price purchase. Click the button below to view and take advantage of our current Specials.`,\n [PromotionMessage.NonQualifyingPurchaseCustomerSpecial]: $localize`Be sure to check out our current Specials to purchase select items on sale with NO REGULAR price PURCHASE REQUIRED.`,\n [PromotionMessage.BuyOneGetOne50]: $localize`For a limited time only, YOU get to decide what’s on sale – buy any regular-priced catalog item and get another item of equal or lesser value half-off! Add another regular-priced item to your cart to take advantage of the savings.`,\n [PromotionMessage.SurpriseBuyProgram]: $localize`For a limited time only, with every $40 purchase (excluding tax and delivery), you can purchase a Surprise Buy for $11*! Surprise Buy items are retired or soon-to-be retired products with a retail value of $24.95 or more, and randomly selected to ship with the Party order. *Tax and delivery fee is calculated as part of the tax and delivery fee of the entire order.`,\n [PromotionMessage.NonQualifyingPurchaseCollectAndSave]: $localize`Be sure to check out our current Specials to purchase select items on sale with NO REGULAR price PURCHASE REQUIRED.`,\n};\n","
    \n
    \n \n {{ PromotionMessageLocale[message] }}\n
    \n\n
    \n \n View Current Specials\n \n \n Add Surprise Buy\n \n
    \n
    \n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { PromotionMessageLocale } from '@core/constants/promotion-message-locale';\nimport { BaseRoutes } from '@core/constants/routes.const';\nimport { PromotionMessage } from '@core/enums/promotion-message.enum';\nimport { AppState } from '@core/store';\nimport { selectAddSurpriseBuyLoading } from '@core/store/cart';\nimport { addSurpriseBuy } from '@core/store/cart/cart.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-cart-promotion-message',\n templateUrl: './cart-promotion-message.component.html',\n styleUrls: ['./cart-promotion-message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CartPromotionMessageComponent {\n @Input() message: PromotionMessage;\n\n readonly PromotionMessage = PromotionMessage;\n readonly PromotionMessageLocale = PromotionMessageLocale;\n readonly CustomerSpecialOffersRoute = BaseRoutes.CustomerSpecialOffers;\n\n addSurpriseBuyLoading$: Observable;\n\n constructor(private store$: Store) {\n this.addSurpriseBuyLoading$ = this.store$.select(selectAddSurpriseBuyLoading);\n }\n\n addSurpriseBuy() {\n this.store$.dispatch(addSurpriseBuy());\n }\n}\n","
    \n
    \n
    \n Promotional discount\n -{{ cart.promotionalDiscount | phCurrency }}\n
    \n
    \n Merchandise total\n {{ cart.merchandiseTotal | phCurrency }}\n
    \n
    \n Delivery fee total\n {{ cart.deliveryFeeTotal | phCurrency }}\n
    \n
    \n Sales tax total\n {{ cart.salesTaxTotal | phCurrency }}\n
    \n
    \n Total price\n {{ cart.totalPrice | phCurrency }}\n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Cart } from '@core/store/cart/cart-state-models';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-cart-totals',\n templateUrl: './cart-totals.component.html',\n styleUrls: ['./cart-totals.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CartTotalsComponent {\n @Input() cart: Observable;\n\n readonly isUsaEnv = isUsaEnv;\n\n constructor() {}\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { BaseRoutes, CartRoutes } from '@core/constants/routes.const';\nimport { LocalStorageKey } from '@core/enums/local-storage-key.enum';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { LocalStorageService } from '@core/services/local-storage.service';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\n\n@Component({\n selector: 'app-cart-item-updated-warning-modal',\n templateUrl: './cart-item-updated-warning-modal.component.html',\n styleUrls: ['./cart-item-updated-warning-modal.component.scss'],\n})\nexport class CartItemUpdatedWarningModalComponent {\n readonly Routes = {\n CustomerSpecialOffers: BaseRoutes.CustomerSpecialOffers,\n ShoppingCart: CartRoutes.ShoppingCart,\n };\n\n modalConfig: ModalConfig = {\n ngbModalOptions: { size: 'md' },\n title: $localize`Expired Special(s) Removed`,\n hideCloseButton: true,\n hideDismissButton: true,\n onDismiss: this.close.bind(this),\n onClose: this.close.bind(this),\n onDismissHeader: this.close.bind(this),\n };\n\n @ViewChild('modal') private modal: ModalComponent;\n\n constructor(private localStorageService: LocalStorageService) {}\n\n open(): void {\n this.modal.open();\n }\n\n close(): void {\n this.localStorageService.removeItem(LocalStorageKey.isCartUpdated);\n this.modal.close();\n }\n}\n","\n \n We’re sorry, the Customer Special item(s) in your cart were removed because the offer timeframe\n has ended. Please see our\n Customer Offers for the latest\n Customer Specials available to purchase\n \n
    \n
    \n
    \n","
    \n \n

    Your cart

    \n \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    Have a coupon code?
    \n \n +Add here\n \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n Back to shopping\n \n
    \n
    \n \n Checkout\n \n
    \n
    \n
    \n
    0\">\n
    \n
    \n \n
    \n
    \n
    \n
    \n\n
    \n \"loading\"\n
    \n
    \n\n\n","import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CartRoutes, ProductRoutes } from '@core/constants/routes.const';\nimport { LocalStorageKey } from '@core/enums/local-storage-key.enum';\nimport { EcAppSettings } from '@core/models/app-settings.model';\nimport { RelatedCarouselSlide } from '@core/models/related-carousel-slide.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { LocalStorageService } from '@core/services/local-storage.service';\nimport { AppState } from '@core/store';\nimport { selectCart, selectLoading } from '@core/store/cart';\nimport { Cart } from '@core/store/cart/cart-state-models';\nimport { fetchCart, fetchProductsRecommendations } from '@core/store/cart/cart.actions';\nimport { ProductRecommendation } from '@core/store/product/product-state-models';\nimport { select, Store } from '@ngrx/store';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { CartItemUpdatedWarningModalComponent } from '../cart-item-updated-warning-modal/cart-item-updated-warning-modal.component';\n\n@Component({\n selector: 'app-cart-page',\n templateUrl: './cart-page.component.html',\n styleUrls: ['./cart-page.component.scss'],\n})\nexport class CartPageComponent implements OnInit, OnDestroy, AfterViewInit {\n productsRoute = ProductRoutes.Products;\n showCouponTextField: boolean = false;\n cart$: Observable;\n recommendations$: Observable;\n slides$: Observable;\n loading$: Observable;\n appSettings: EcAppSettings;\n\n private subscriptions: Subscription = new Subscription();\n\n @ViewChild('itemUpdatedModal') private itemUpdatedModal: CartItemUpdatedWarningModalComponent;\n\n constructor(\n private store$: Store,\n private productUtil: ProductUtilService,\n private router: Router,\n private localStorageService: LocalStorageService,\n appInitService: AppInitService,\n ) {\n this.appSettings = appInitService.Settings.ec;\n }\n\n showCouponField(): void {\n this.showCouponTextField = true;\n }\n\n checkout(): void {\n this.router.navigate([`/${CartRoutes.Checkout}`]);\n }\n\n ngOnInit(): void {\n this.store$.dispatch(fetchCart());\n this.cart$ = this.store$.select(selectCart).pipe(filter((x) => !!x));\n this.recommendations$ = this.cart$.pipe(select((x) => x.recommendations || []));\n this.loading$ = this.store$.select(selectLoading);\n\n this.slides$ = this.recommendations$.pipe(\n filter((r) => !!r && !!r.length),\n map((r) => this.productUtil.getRelatedSlidesFromRecommendations(r)),\n );\n\n this.subscriptions.add(\n this.cart$\n .pipe(\n distinctUntilChanged(\n (a, b) => JSON.stringify(a.orderLines) === JSON.stringify(b.orderLines),\n ),\n )\n .subscribe((cart) => {\n const skus = cart.orderLines.map((orderLine) => orderLine.sku);\n skus?.length && this.store$.dispatch(fetchProductsRecommendations({ skus }));\n this.checkIsCartUpdated();\n }),\n );\n }\n\n ngAfterViewInit(): void {\n this.checkIsCartUpdated();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private checkIsCartUpdated(): void {\n if (this.localStorageService.getItem(LocalStorageKey.isCartUpdated)) {\n this.itemUpdatedModal.open();\n }\n }\n}\n","export enum CheckoutPages {\n PersonaInfo = 1,\n OrderSummary = 2,\n Payment = 3,\n OrderConfirmation = 4,\n}\n","
    \n
    \n
    \n

    {{ isCreditOrDebitCard ? billingAddressTexts.cardTitle : billingAddressTexts.title }}

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ZipCodeMinimumLength } from '@core/constants/zip-code-minimum-length';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { CardholderName } from '@core/models/cardholder-name.model';\nimport { AppState } from '@core/store';\nimport { selectCountryStates } from '@core/store/address';\nimport { selectPersonalInfo } from '@core/store/checkout';\nimport { PersonalInfo } from '@core/store/checkout/checkout-state-models';\nimport { Store } from '@ngrx/store';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { TextFieldInputComponent } from '@shared/components/text-field-input/text-field-input.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable, Subscription, combineLatest, fromEvent } from 'rxjs';\nimport { filter, startWith, take } from 'rxjs/operators';\n\nexport const BillingAddressFormKeys = {\n sameAsShippingAddress: 'SameAsShippingAddress',\n firstName: 'firstName',\n lastName: 'lastName',\n address: 'address',\n addressLine1: 'addressLine1',\n addressLine2: 'addressLine2',\n addressLine3: 'addressLine3',\n city: 'city',\n state: 'state',\n zipCode: 'zipCode',\n};\n\n@Component({\n selector: 'app-billing-address-form',\n templateUrl: './billing-address-form.component.html',\n styleUrls: ['../../checkout-slide.shared.scss', './billing-address-form.component.scss'],\n})\nexport class BillingAddressFormComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() isCreditOrDebitCard: boolean = true;\n @Input() paymentProviderType: PaymentProviderType;\n @Output() reInitializeToken: EventEmitter = new EventEmitter();\n\n readonly BillingAddressFormKeys = BillingAddressFormKeys;\n\n isMexEnv = isMexEnv;\n billingAddressTexts = {\n title: $localize`Billing Address`,\n firstNameLabel: $localize`First Name`,\n lastNameLabel: $localize`Last Name`,\n cardTitle: $localize`Card Billing Address`,\n cardFirstNameLabel: $localize`Cardholder First Name`,\n cardLastNameLabel: $localize`Cardholder Last Name`,\n };\n form: FormGroup;\n countryStates$: Observable;\n usePersonalInfoAsBillingInfo: boolean = false;\n\n private personalInfo: PersonalInfo;\n private subscriptions: Subscription = new Subscription();\n @ViewChild('firstNameInput') private firstNameInput: TextFieldInputComponent;\n @ViewChild('lastNameInput') private lastNameInput: TextFieldInputComponent;\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n ) {}\n\n ngOnInit(): void {\n this.createFormGroup();\n this.initPersonalInfo();\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectCountryStates));\n }\n\n ngAfterViewInit(): void {\n this.listenFormValidity();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n toggleSameAsShippingFlag(same: boolean): void {\n this.usePersonalInfoAsBillingInfo = same;\n this.form.patchValue({\n [BillingAddressFormKeys.firstName]: same ? this.personalInfo.shippingAddress.firstName : '',\n [BillingAddressFormKeys.lastName]: same ? this.personalInfo.shippingAddress.lastName : '',\n [BillingAddressFormKeys.address]: {\n [BillingAddressFormKeys.addressLine1]: same\n ? this.personalInfo.shippingAddress.address.addressLine1\n : '',\n [BillingAddressFormKeys.addressLine2]: same\n ? this.personalInfo.shippingAddress.address.addressLine2\n : '',\n [BillingAddressFormKeys.city]: same ? this.personalInfo.shippingAddress.address.city : '',\n [BillingAddressFormKeys.state]: same ? this.personalInfo.shippingAddress.address.state : '',\n [BillingAddressFormKeys.zipCode]: same\n ? this.personalInfo.shippingAddress.address.zipCode\n : '',\n },\n });\n }\n\n private createFormGroup() {\n this.form = this.fb.group({\n [BillingAddressFormKeys.sameAsShippingAddress]: [false],\n [BillingAddressFormKeys.firstName]: ['', [Validators.required]],\n [BillingAddressFormKeys.lastName]: ['', [Validators.required]],\n [BillingAddressFormKeys.address]: this.fb.group({\n [BillingAddressFormKeys.addressLine1]: ['', [Validators.required]],\n [BillingAddressFormKeys.addressLine2]: [''],\n [BillingAddressFormKeys.city]: ['', [Validators.required]],\n [BillingAddressFormKeys.state]: ['', [Validators.required]],\n [BillingAddressFormKeys.zipCode]: [\n '',\n [Validators.required, Validators.minLength(ZipCodeMinimumLength)],\n ],\n }),\n });\n\n if (isMexEnv) {\n let addressLine3 = new FormControl('');\n (this.form.get(BillingAddressFormKeys.address) as FormGroup).addControl(\n BillingAddressFormKeys.addressLine3,\n addressLine3,\n );\n }\n }\n\n private initPersonalInfo(): void {\n this.subscriptions.add(\n this.store$\n .select(selectPersonalInfo)\n .pipe(take(1))\n .subscribe((personalInfo) => (this.personalInfo = personalInfo)),\n );\n }\n\n private listenFormValidity(): void {\n this.subscriptions.add(\n combineLatest([\n this.form.get(BillingAddressFormKeys.address).statusChanges,\n fromEvent(this.firstNameInput.input.nativeElement, 'blur').pipe(startWith({})),\n fromEvent(this.lastNameInput.input.nativeElement, 'blur').pipe(startWith({})),\n ])\n .pipe(\n filter(() => this.usePersonalInfoAsBillingInfo || this.form.valid),\n take(1),\n )\n .subscribe(() => {\n const firstName = this.usePersonalInfoAsBillingInfo\n ? this.personalInfo.billingCustomer.firstName\n : this.form.get(BillingAddressFormKeys.firstName).value;\n const lastName = this.usePersonalInfoAsBillingInfo\n ? this.personalInfo.billingCustomer.lastName\n : this.form.get(BillingAddressFormKeys.lastName).value;\n\n if (\n this.paymentProviderType !== PaymentProviderType.PayPal &&\n this.paymentProviderType !== PaymentProviderType.Kushki\n ) {\n this.reInitializeToken.emit({\n firstName,\n lastName,\n });\n }\n }),\n );\n }\n}\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'app-saved-paypal-payment',\n templateUrl: './saved-paypal-payment.component.html',\n styleUrls: ['./saved-paypal-payment.component.scss'],\n})\nexport class SavedPaypalPaymentComponent {\n @Output() resetPayment: EventEmitter = new EventEmitter();\n\n constructor() {}\n}\n","
    \n

    Paypal account added successfully

    \n
    \n After submitting your order you will receive a payment confirmation email shortly\n
    \n
    \n \n
    \n
    \n","
    \n
    You receive the voucher the following email address:
    \n
    \n
    \n \n \n
    \n {{ prevalidateErrorMessage }}\n
    \n \n
    \n
    \n\n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidEmailRegExp } from '@core/constants/patterns';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { selectVoucherEmail, selectVoucherPrevalidation } from '@core/store/voucher';\nimport { prevalidateVoucher, resetVoucherErrors } from '@core/store/voucher/voucher.actions';\nimport { Store } from '@ngrx/store';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { getVoucherErrorMessage } from '@shared/utils/voucher-error-utils';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-checkout-voucher',\n templateUrl: './checkout-voucher.component.html',\n styleUrls: ['./checkout-voucher.component.scss'],\n})\nexport class CheckoutVoucherComponent implements OnInit, OnDestroy {\n @Output() emailChange: EventEmitter = new EventEmitter();\n\n readonly emailKey = 'email';\n\n subscriptions: Subscription = new Subscription();\n\n email: string;\n form: FormGroup;\n prevalidateErrorMessage: string;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n private appInitService: AppInitService,\n ) {}\n\n ngOnInit(): void {\n this.form = this.fb.group({\n [this.emailKey]: ['', [Validators.required, emailValidator(ValidEmailRegExp)]],\n });\n this.initVoucherPreValidator();\n this.initCreateVoucherPayload();\n this.subscriptions.add(\n this.store$.select(selectVoucherPrevalidation).subscribe(({ prevalidated, error }) => {\n if (prevalidated && !error?.errors?.length) {\n this.emailChange.emit(this.form.get(this.emailKey).value);\n } else {\n this.emailChange.emit(null);\n }\n\n this.prevalidateErrorMessage = getVoucherErrorMessage(\n error?.errors,\n error?.email,\n this.appInitService.Settings.ec.voucherLimits,\n );\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private initCreateVoucherPayload() {\n const voucherEmail$ = this.store$.select(selectVoucherEmail);\n\n voucherEmail$.pipe(take(1)).subscribe((email) => {\n this.form.patchValue({ email });\n });\n }\n\n private initVoucherPreValidator() {\n this.subscriptions.add(\n this.form\n .get(this.emailKey)\n .valueChanges.pipe(\n debounceTime(500),\n distinctUntilChanged(),\n filter((email) => !!email),\n )\n .subscribe((email) => {\n if (this.form.get(this.emailKey).valid) {\n this.store$.dispatch(prevalidateVoucher({ email }));\n }\n }),\n );\n\n this.subscriptions.add(\n this.form.get(this.emailKey).valueChanges.subscribe(() => {\n if (!this.form.get(this.emailKey).valid) {\n this.store$.dispatch(resetVoucherErrors());\n }\n }),\n );\n }\n}\n","\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    {{ failedOrderItem.collectionName }}
    \n
    \n {{ failedOrderItem.productName }}\n
    \n
    #{{ failedOrderItem.sku }}
    \n
    \n
    \n
    \n
    \n \n {{ failedOrderItem.originalPrice | phCurrency }}\n

    \n \n

    {{ failedOrderItem.discountedPrice | phCurrency }}

    \n
    \n
    \n \n

    {{ failedOrderItem.actualPrice | phCurrency }}

    \n
    \n\n
    \n Previous price\n

    {{\n (failedOrderItem.discountedPrice === failedOrderItem.originalPrice\n ? failedOrderItem.discountedPrice\n : failedOrderItem.originalPrice\n ) | phCurrency\n }}

    \n Actual price\n

    {{ failedOrderItem.actualPrice }}

    \n
    \n
    \n\n","import { Component, Input } from '@angular/core';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { FailedOrderItem } from '@core/store/order/order-state-models';\n\n@Component({\n selector: 'app-failed-order-item',\n templateUrl: './failed-order-item.component.html',\n styleUrls: ['./failed-order-item.component.scss'],\n})\nexport class FailedOrderItemComponent {\n @Input() failedOrderItem: FailedOrderItem;\n @Input() isUpdatedItem: boolean = true;\n\n thumbnail = Thumbnail;\n\n constructor() {}\n}\n","\n
    \n

    The following items were updated.

    \n
    \n
    \n

    Product(s)

    \n
    \n
    \n

    Previous Price

    \n
    \n
    \n

    Actual Price

    \n
    \n
    \n
    \n \n
    \n
    \n\n
    \n

    The following items were deleted.

    \n
    \n
    \n

    Product(s)

    \n
    \n
    \n
    \n \n
    \n
    \n\n
    \n \n
    \n
    \n","import { Component, Input, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CartRoutes } from '@core/constants/routes.const';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport { FailedOrderItem } from '@core/store/order/order-state-models';\nimport { resetFailedOrderItems } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\n\n@Component({\n selector: 'app-failed-order-submit-modal',\n templateUrl: './failed-order-submit-modal.component.html',\n styleUrls: ['./failed-order-submit-modal.component.scss'],\n})\nexport class FailedOrderSubmitModalComponent {\n @Input() updatedOrderItems: FailedOrderItem[];\n @Input() deletedOrderItems: FailedOrderItem[];\n\n modalConfig: ModalConfig = {\n title: $localize`Item(s) updated or removed from cart`,\n hideCloseButton: true,\n hideDismissButton: true,\n hideHeaderDismissButton: true,\n ngbModalOptions: {\n size: 'lg',\n backdrop: 'static',\n },\n };\n\n @ViewChild('modal') private modal: ModalComponent;\n\n constructor(\n private router: Router,\n private store$: Store,\n ) {}\n\n open(): void {\n this.modal.open();\n }\n\n close(): void {\n this.modal.close();\n this.store$.dispatch(resetFailedOrderItems());\n this.router.navigate([`/${CartRoutes.ShoppingCart}`]);\n }\n}\n","\n\n
    \n
    \n
    \n \n
    \n
    \n
    \n Accepted Payment Methods\n
    \n
    \n \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n You may select one of the credit cards on file, or enter a new one for your payment.\n
    \n \n
    \n \n \n
    \n \n \n
    \n \n \n \n \n \n \n
    \n \n
    \n \n \n \n
    \n
    \n \n Please fill in and submit the payment related fields with valid values!\n \n
    \n\n \n
    \n \n \n \n \n\n
    \n \n
    \n\n
    \n
    \n \n
    \n
    \n Pay & Submit Order\n \n
    \n
    \n\n\n\n\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { CardPaymentTypes, PaymentImageSrc } from '@core/constants/payment.consts';\nimport { SubmitOrderRequest } from '@core/dto/order.dto';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { EcPaymentHandlerType, PaymentHandlerType } from '@core/enums/payment-handler-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentCardType, PaymentType } from '@core/enums/payment-type.enum';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { CardholderName } from '@core/models/cardholder-name.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { GtmService } from '@core/services/gtm.service';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { selectCart } from '@core/store/cart';\nimport { Cart } from '@core/store/cart/cart-state-models';\nimport { fetchCart } from '@core/store/cart/cart.actions';\nimport { selectPaymentType } from '@core/store/checkout';\nimport { setPaymentType, storeBillingAddress } from '@core/store/checkout/checkout.actions';\nimport { selectCurrentConsultant, selectParty } from '@core/store/consultant';\nimport {\n selectDeletedOrderItems,\n selectOrderHasPaymentError,\n selectSubmittedOrder,\n selectUpdatedOrderItems,\n} from '@core/store/order';\nimport { FailedOrderItem, SubmittedOrderStatus } from '@core/store/order/order-state-models';\nimport {\n resetHasPaymentError,\n resetSubmissionStatus,\n setSubmissionStatus,\n submitOrder,\n} from '@core/store/order/order.actions';\nimport {\n selectCreatePaymentMethodResponse,\n selectPaymentInfo,\n selectPaymentLoading,\n} from '@core/store/payment';\nimport { CreatedCardPaymentMethod } from '@core/store/payment/payment-state-models';\nimport { storeCardPaymentInfo } from '@core/store/payment/payment.actions';\nimport { selectVoucherStateLoading, selectVouchers } from '@core/store/voucher';\nimport { createVoucher, setVoucherEmail } from '@core/store/voucher/voucher.actions';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { CardPaymentWrapperComponent } from '@payment/components/card-payment-wrapper/card-payment-wrapper.component';\nimport { SavedCardInfo } from '@payment/components/saved-card/saved-card-info.model';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { PaymentHandlerFactory } from '@payment/payment-handler/payment-handler-factory';\nimport {\n PaymentTypeOptionsAndImages,\n getPaymentProviderType,\n initPaymentTypeOptionsAndImages,\n} from '@payment/payment-handler/payment-provider.utils';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { isMexEnv, isUsaEnv } from '@shared/utils/environment-utils';\nimport { getKushkiFormIdType } from '@shared/utils/get-kushki-fomr-id-type-util';\nimport { scrollToTop } from '@shared/utils/scroll-utils';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\nimport { filter, first, map, mergeMap, take, tap } from 'rxjs/operators';\nimport { FailedOrderSubmitModalComponent } from '../checkout-order-summary/failed-order-submit-modal/failed-order-submit-modal.component';\nimport { BillingAddressFormComponent } from './billing-address-form/billing-address-form.component';\n\n@Component({\n selector: 'app-checkout-payment',\n templateUrl: './checkout-payment.component.html',\n styleUrls: ['../checkout-slide.shared.scss', './checkout-payment.component.scss'],\n})\nexport class CheckoutPaymentComponent implements OnInit, OnDestroy {\n @Output()\n clickNext: EventEmitter = new EventEmitter();\n\n @Output()\n clickBack: EventEmitter = new EventEmitter();\n\n @Input()\n nextStepId: number;\n\n @ViewChild('billingAddress', { static: true })\n billingAddress: BillingAddressFormComponent;\n\n isMexEnv = isMexEnv;\n paymentProviderType: PaymentProviderType;\n paymentHandler: PaymentHandlerBase;\n updatedOrderItems$: Observable;\n deletedOrderItems$: Observable;\n isVouchersLoading$: Observable;\n paymentIsFailed$: Observable;\n submissionIsInProgress$: Observable;\n paymentTypeOptions: SelectOption[] = [];\n paymentTypeForm: FormGroup;\n selectedPaymentType: PaymentType;\n availablePaymentMethodsImgSrc: string[] = [];\n paymentProviderFirstLoading: boolean = true;\n cardholderName: CardholderName;\n cart$: Observable;\n voucherEmail: string;\n isAuthenticated$: Observable;\n disabled: boolean = true;\n isPaymentProviderLoading: boolean = true;\n isStepProcessing$: Observable;\n hasOrderPaymentError$: Observable;\n hasCardPaymentMethodError: boolean = false;\n cardPaymentErrorType: CreateCardPaymentErrorType = CreateCardPaymentErrorType.None;\n cardPaymentMethodInfo: SavedCardInfo;\n selectedCardPaymentType: PaymentCardType = PaymentCardType.DebitCard;\n isCardSaved: boolean = false;\n isPaymentApproved: boolean = false;\n isSubmitted: boolean = false;\n isPayPalCardPaymentEnabled: boolean;\n isNexioPaymentEnabled: boolean;\n kushkiFormIdType: KushkiFormIdTypes;\n\n readonly PaymentImgSrc = PaymentImageSrc;\n readonly PaymentType = PaymentType;\n readonly isVoucherPaymentEnabled = environment.feature.voucherPaymentEC;\n readonly CardPaymentTypes = CardPaymentTypes;\n readonly PaymentTypeSelector = 'paymentType';\n\n private subscriptions: Subscription = new Subscription();\n\n @ViewChild('cardPaymentWrapper') private paymentWrapperComponent: CardPaymentWrapperComponent;\n @ViewChild('failedModal') private failedModal: FailedOrderSubmitModalComponent;\n\n constructor(\n appInitService: AppInitService,\n private store$: Store,\n private gtmService: GtmService,\n private cdRef: ChangeDetectorRef,\n private paymentHandlerFactory: PaymentHandlerFactory,\n private fb: FormBuilder,\n ) {\n this.paymentHandler = this.paymentHandlerFactory.getPaymentHandler(\n PaymentHandlerType.ECommerce,\n EcPaymentHandlerType.CheckoutOrder,\n );\n\n this.isPayPalCardPaymentEnabled = appInitService.Settings.ec.isPayPalCardPaymentEnabled;\n this.isNexioPaymentEnabled = appInitService.Settings.ec.isNexioCardPaymentEnabled;\n }\n\n ngOnInit(): void {\n this.initPaymentTypeElements();\n this.initPaymentType();\n this.listenPaymentTypeChange();\n this.store$.dispatch(fetchCart());\n this.cart$ = this.store$.select(selectCart).pipe(filter((x) => !!x));\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n this.hasOrderPaymentError$ = this.store$.select(selectOrderHasPaymentError);\n\n this.isStepProcessing$ = this.store$.select(selectPaymentLoading);\n\n this.listenFailedOrderItems();\n this.submissionIsInProgress$ = this.store$\n .select(selectSubmittedOrder)\n .pipe(map((x) => x.status === SubmittedOrderStatus.inProgress));\n this.paymentIsFailed$ = this.store$\n .select(selectSubmittedOrder)\n .pipe(\n map(\n (x) =>\n x.status === SubmittedOrderStatus.failure &&\n x.submissionErrorType !== PhExceptionErrorType.PipelineException,\n ),\n );\n\n this.isVouchersLoading$ = this.store$.select(selectVoucherStateLoading);\n this.waitForSubmittedOrder();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n get isBillingAddressFormInvalid(): boolean {\n return this.billingAddress?.form?.invalid;\n }\n\n next(nextStepId: number = this.nextStepId): void {\n if (this.billingAddress.form.valid) {\n if (nextStepId < this.nextStepId) {\n this.back();\n scrollToTop();\n } else {\n this.store$.dispatch(setSubmissionStatus({ status: SubmittedOrderStatus.inProgress }));\n this.billingAddress.form?.markAllAsTouched();\n this.storeBillingAddress();\n this.isSubmitted = true;\n this.selectedPaymentType === PaymentType.PayByCash\n ? this.onNextVoucher()\n : this.onNextCreditCard();\n }\n }\n }\n\n back(): void {\n this.clickBack.emit();\n scrollToTop();\n }\n\n onNextVoucher() {\n this.store$.dispatch(setVoucherEmail({ email: this.voucherEmail }));\n this.gtmPayment();\n this.submitOrderWithVoucher();\n }\n\n onNextCreditCard() {\n if (isUsaEnv) {\n this.subscriptions.add(\n this.paymentWrapperComponent\n .requestPaymentMethodObject()\n .pipe(first())\n .subscribe((isSuccess) => {\n if (isSuccess) {\n this.submitOrderWithCreditCard();\n } else {\n this.store$.dispatch(resetSubmissionStatus());\n }\n }),\n );\n } else {\n if (this.isCardSaved || !(this.disabled || this.hasCardPaymentMethodError)) {\n this.storeCardPaymentInfo();\n this.requestCardPayment();\n }\n }\n }\n\n toggleDisabled(isPaymentMethodRequestable: boolean): void {\n this.disabled = !isPaymentMethodRequestable;\n // https://github.com/webcomponents/polyfills/issues/238\n this.cdRef.detectChanges();\n }\n\n onEmailChange(email) {\n this.disabled = !email;\n this.voucherEmail = email;\n }\n\n isCardFormValid(): boolean {\n return this.isSubmitted ? !this.disabled || this.isCardSaved : true;\n }\n\n resetCardPayment(previousPaymentType: PaymentType, resetComponent: boolean = false): void {\n this.setCardError(CreateCardPaymentErrorType.None);\n this.store$.dispatch(resetHasPaymentError());\n this.store$.dispatch(resetSubmissionStatus());\n this.isPaymentApproved = false;\n\n if (isMexEnv && previousPaymentType === PaymentType.PayPal) {\n // As we have already a card payment and we would like to change it we have to reset it\n this.paymentHandler.updateOrder();\n this.paymentHandler.resetToken();\n if (resetComponent) {\n this.resetPayPalComponent();\n }\n }\n\n this.paymentWrapperComponent.resetToken(\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n );\n }\n\n paymentApproved(isCreated: boolean): void {\n this.isPaymentApproved = isCreated;\n this.cdRef.detectChanges();\n }\n\n handleIsPaymentProviderLoading(isLoading: boolean): void {\n this.isPaymentProviderLoading = isLoading;\n if (this.paymentProviderFirstLoading && !isLoading) {\n this.paymentProviderFirstLoading = false;\n }\n this.cdRef.detectChanges();\n }\n\n private initPaymentType() {\n this.store$\n .select(selectPaymentType)\n .pipe(\n take(1),\n filter(\n (paymentType) =>\n !!this.paymentTypeOptions.filter((option) => option.value === paymentType).length,\n ),\n )\n .subscribe((paymentType) => {\n this.selectedPaymentType = paymentType;\n this.paymentTypeForm.patchValue({ [this.PaymentTypeSelector]: paymentType });\n this.kushkiFormIdType = getKushkiFormIdType(paymentType);\n this.paymentProviderType = getPaymentProviderType(paymentType, this.isNexioPaymentEnabled);\n });\n }\n\n private resetPayPalComponent(): void {\n // need to force change detection for paypal component reinit\n this.isCardSaved = true;\n this.cdRef.detectChanges();\n this.isCardSaved = false;\n this.cdRef.detectChanges();\n }\n\n requestCardPayment() {\n this.subscriptions.add(\n this.requestCardPaymentMethod().subscribe((response: CreatedCardPaymentMethod) => {\n this.setCardError(response.errorType as CreateCardPaymentErrorType);\n this.cardPaymentMethodInfo = { card: response.card, account: response.account };\n if (response.errorType == CreateCardPaymentErrorType.None) {\n this.submitOrderWithCreditCard();\n } else {\n this.store$.dispatch(resetSubmissionStatus());\n }\n }),\n );\n }\n\n reInitializeToken(cardholderName: CardholderName): void {\n this.isPaymentProviderLoading = true;\n if (this.selectedPaymentType === PaymentType.CreditOrDebitCard) {\n this.paymentWrapperComponent.resetToken(cardholderName.firstName, cardholderName.lastName);\n }\n this.cardholderName = cardholderName;\n }\n\n private requestCardPaymentMethod(): Observable {\n const paymentMethodObject$ = this.paymentWrapperComponent.requestPaymentMethodObject().pipe(\n tap((isSuccessful) => {\n if (this.paymentProviderType === PaymentProviderType.PayPal && !isSuccessful) {\n this.store$.dispatch(resetSubmissionStatus());\n }\n this.paymentWrapperComponent.createPaymentMethod(isSuccessful);\n }),\n take(1),\n );\n const listenCreatePaymentMethod$ = this.store$.select(selectCreatePaymentMethodResponse).pipe(\n filter((response: CreatedCardPaymentMethod) => !!response),\n take(1),\n );\n\n return paymentMethodObject$.pipe(mergeMap(() => listenCreatePaymentMethod$));\n }\n\n private storeCardPaymentInfo() {\n this.store$.dispatch(\n storeCardPaymentInfo({\n payload: this.selectedCardPaymentType,\n }),\n );\n }\n\n private setCardError(errorType: CreateCardPaymentErrorType) {\n this.cardPaymentErrorType = errorType;\n this.hasCardPaymentMethodError = errorType !== CreateCardPaymentErrorType.None;\n }\n\n private gtmPayment(): void {\n this.store$\n .select(selectCart)\n .pipe(take(1))\n .subscribe((cart) => this.gtmService.addPaymentInfo(cart));\n }\n\n private storeBillingAddress(): void {\n const billingAddressFormValue = this.billingAddress.form.value;\n this.store$.dispatch(\n storeBillingAddress({\n billingInfo: {\n sameAsShippingAddress: billingAddressFormValue.sameAsShippingAddress,\n firstName: billingAddressFormValue.firstName,\n lastName: billingAddressFormValue.lastName,\n address: {\n ...billingAddressFormValue.address,\n country: environment.country,\n },\n },\n }),\n );\n }\n\n private listenFailedOrderItems(): void {\n this.updatedOrderItems$ = this.store$.select(selectUpdatedOrderItems);\n this.deletedOrderItems$ = this.store$.select(selectDeletedOrderItems);\n\n this.subscriptions.add(\n combineLatest([this.updatedOrderItems$, this.deletedOrderItems$])\n .pipe(\n filter(([updatedItems, deletedItems]) => !!updatedItems.length || !!deletedItems.length),\n take(1),\n )\n .subscribe(() => {\n this.failedModal.open();\n }),\n );\n }\n\n private submitOrderWithCreditCard() {\n this.subscriptions.add(\n combineLatest([\n this.store$.select(selectPaymentInfo).pipe(filter((x) => !!x)),\n this.store$.select(selectCurrentConsultant).pipe(filter((x) => !!x)),\n this.store$.select(selectParty),\n ])\n .pipe(first())\n .subscribe(([paymentInfo, consultant, party]) => {\n const billingInfo = this.billingAddress.form.value;\n const request = {\n consultantBeeNumber: consultant.beeNumber,\n consultantFirstName: consultant.firstName,\n consultantLastName: consultant.lastName,\n nonce: paymentInfo.nonce,\n deviceData: paymentInfo.deviceData,\n consultantEmail: consultant.email,\n consultantPhone: consultant.phoneNumber,\n provider: this.paymentProviderType,\n partyId: party?.partyId,\n hostName: party?.hostName,\n billingFirstName: billingInfo.firstName,\n billingLastName: billingInfo.lastName,\n billingAddress: billingInfo.address,\n } as SubmitOrderRequest;\n this.store$.dispatch(submitOrder({ request }));\n }),\n );\n }\n\n private submitOrderWithVoucher() {\n this.store$.dispatch(createVoucher({ email: this.voucherEmail }));\n\n const vouchers$ = this.store$\n .select(selectVouchers)\n .pipe(filter((vouchers) => vouchers.length > 0));\n\n this.subscriptions.add(\n combineLatest([\n vouchers$,\n this.store$.select(selectCurrentConsultant).pipe(filter((consultant) => !!consultant)),\n this.store$.select(selectParty),\n ])\n .pipe(first())\n .subscribe(([, consultant, party]) => {\n const billingInfo = this.billingAddress.form.value;\n const request = {\n consultantBeeNumber: consultant.beeNumber,\n consultantFirstName: consultant.firstName,\n consultantLastName: consultant.lastName,\n consultantEmail: consultant.email,\n consultantPhone: consultant.phoneNumber,\n partyId: party?.partyId,\n hostName: party?.hostName,\n billingFirstName: billingInfo.firstName,\n billingLastName: billingInfo.lastName,\n billingAddress: billingInfo.address,\n provider: PaymentProviderType.Default,\n } as SubmitOrderRequest;\n\n this.store$.dispatch(submitOrder({ request }));\n }),\n );\n }\n\n private waitForSubmittedOrder() {\n this.subscriptions.add(\n this.store$\n .select(selectSubmittedOrder)\n .pipe(\n filter(\n (submittedOrder) =>\n submittedOrder.status === SubmittedOrderStatus.success &&\n !!submittedOrder.submittedOrderId,\n ),\n first(),\n )\n .subscribe(() => {\n this.gtmPayment();\n this.clickNext.emit(this.nextStepId);\n scrollToTop();\n }),\n );\n }\n\n private initPaymentTypeElements(): void {\n const paymentTypeData: PaymentTypeOptionsAndImages = initPaymentTypeOptionsAndImages(\n environment.feature.voucherPaymentEC,\n environment.feature.bankTransferEc,\n );\n this.paymentTypeOptions = paymentTypeData.paymentTypeOptions;\n this.availablePaymentMethodsImgSrc = paymentTypeData.availablePaymentMethodsImgSrc;\n this.selectedPaymentType = this.paymentTypeOptions[0].value;\n this.kushkiFormIdType = getKushkiFormIdType(this.selectedPaymentType);\n this.paymentProviderType = getPaymentProviderType(\n this.selectedPaymentType,\n this.isNexioPaymentEnabled,\n );\n this.store$.dispatch(setPaymentType({ paymentType: this.selectedPaymentType }));\n\n this.paymentTypeForm = this.fb.group({\n [this.PaymentTypeSelector]: [this.selectedPaymentType],\n });\n }\n\n private listenPaymentTypeChange(): void {\n this.subscriptions.add(\n this.paymentTypeForm\n .get(this.PaymentTypeSelector)\n .valueChanges.subscribe((newPaymentType) => {\n this.paymentHandler.resetToken();\n this.disabled = true;\n this.store$.dispatch(setPaymentType({ paymentType: newPaymentType }));\n this.kushkiFormIdType = getKushkiFormIdType(newPaymentType);\n this.paymentProviderType = getPaymentProviderType(\n newPaymentType,\n this.isNexioPaymentEnabled,\n );\n this.selectedPaymentType = newPaymentType;\n if (newPaymentType === PaymentType.PayByCash) {\n this.isPaymentProviderLoading = false;\n }\n }),\n );\n }\n}\n","
    \n
    \n
    \n
    \n
    \n {{ title }}\n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { AddressValues, CheckoutAddress } from '@core/models/checkout.model';\nimport { AddressVerification } from '@core/store/address/address-state-models';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-shipping-address-form',\n templateUrl: './shipping-address-form.component.html',\n styleUrls: ['../../checkout-slide.shared.scss', './shipping-address-form.component.scss'],\n})\nexport class ShippingAddressFormComponent {\n @Input() title: string;\n @Input() isAuthenticated: boolean;\n @Output() addressChange: EventEmitter = new EventEmitter();\n @Output() toggleShippingName: EventEmitter = new EventEmitter();\n @Input() countryStates$: Observable;\n @Input() id: string;\n @Input() addressVerification: AddressVerification;\n @Input() showCheckbox: boolean = true;\n addressFormGroup: FormGroup;\n\n readonly isMexEnv = isMexEnv;\n readonly FirstName = 'firstName';\n readonly LastName = 'lastName';\n readonly PhoneNumber = 'phoneNumber';\n readonly Address = 'address';\n readonly AddressLine1 = 'addressLine1';\n readonly AddressLine2 = 'addressLine2';\n readonly AddressLine3 = 'addressLine3';\n readonly City = 'city';\n readonly State = 'state';\n readonly ZipCode = 'zipCode';\n readonly Country = 'country';\n\n constructor(private fb: FormBuilder) {}\n\n createGroup(form: CheckoutAddress): FormGroup {\n this.addressFormGroup = this.fb.group({\n [this.FirstName]: form.firstName,\n [this.LastName]: form.lastName,\n [this.PhoneNumber]: form.phoneNumber,\n [this.Address]: this.fb.group(form.address),\n });\n return this.addressFormGroup;\n }\n\n patchValue(value: AddressValues): void {\n this.addressFormGroup.patchValue(value);\n }\n\n selectAddress(): void {\n this.addressChange.emit();\n }\n}\n","\n
    \n \n You don't have any saved addresses. You can add one under your account page's My Shipping\n Addresses menu.\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    Default
    \n
    \n
    \n\n
    0\" class=\"row mx-md-1\">\n
    \n \n
    \n
    \n
    \n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { Address } from '@core/store/address/address-state-models';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-my-address-popup',\n templateUrl: './my-address-popup.component.html',\n styleUrls: ['./my-address-popup.component.scss'],\n})\nexport class MyAddressPopupComponent implements OnInit, OnDestroy {\n @Input() userAddresses: Address[];\n @Input() currentAddress$: Observable
    ;\n @Input() onDismiss: () => void;\n @Output() addressSelect: EventEmitter = new EventEmitter();\n\n selectedAddressId: number;\n modalConfig: ModalConfig;\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor() {}\n\n ngOnInit(): void {\n this.modalConfig = {\n title: $localize`My saved addresses`,\n onDismiss: this.onDismiss.bind(this),\n hideCloseButton: true,\n hideDismissButton: true,\n ngbModalOptions: {\n size: 'lg',\n },\n };\n\n this.subscriptions.add(\n this.currentAddress$?.pipe(filter((address) => !!address)).subscribe((address) => {\n this.selectedAddressId = this.selectedId(address);\n this.userAddresses = this.sort();\n this.modalComponent.open();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n selectedId(address: Address): number {\n return this.userAddresses.find((userAddress) => userAddress.id === address.id)?.id;\n }\n\n continue(): void {\n this.addressSelect.emit(this.selectedAddressId);\n this.modalComponent.dismiss();\n }\n\n cancel(): void {\n this.modalComponent.close();\n }\n\n sort(): Address[] {\n return [...this.userAddresses].sort((a, b) =>\n a.type == 'Default' ? -1 : b.type == 'Default' ? 1 : 0,\n );\n }\n}\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { AuthRoutes } from '@core/constants/routes.const';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport { selectIsRegisteredUserWithoutLogin, selectLoginModal } from '@core/store/checkout';\nimport { resetLoginModal, userContinuesWithoutLogin } from '@core/store/checkout/checkout.actions';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, map, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-login-modal',\n templateUrl: './login-modal.component.html',\n styleUrls: ['./login-modal.component.scss'],\n})\nexport class LoginModalComponent implements OnInit, OnDestroy {\n @Input() isAuthenticated$: Observable;\n @Input() email: string;\n\n readonly B2CSignin: string = AuthRoutes.B2CSignin;\n\n modalConfig: ModalConfig;\n\n private canOpen: boolean = true;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(private store$: Store) {}\n\n @ViewChild('modal') private loginModalComponent: ModalComponent;\n\n ngOnInit(): void {\n this.modalConfig = {\n title: $localize`You have an active registration`,\n hideCloseButton: true,\n hideDismissButton: true,\n onDismiss: this.closeModal.bind(this),\n };\n\n this.subscriptions.add(\n this.store$\n .select(selectLoginModal)\n .pipe(\n withLatestFrom(this.isAuthenticated$),\n withLatestFrom(this.store$.select(selectIsRegisteredUserWithoutLogin)),\n map(([[login, isAuthenticated], loginCancelled]) => ({\n login,\n isAuthenticated,\n loginCancelled,\n })),\n filter(({ login }) => login?.isRegistered),\n filter(({ isAuthenticated }) => !isAuthenticated),\n filter(({ loginCancelled }) => !loginCancelled),\n )\n .subscribe(() => {\n this.openModal();\n }),\n );\n\n this.subscriptions.add(\n this.isAuthenticated$.pipe(filter((auth) => auth)).subscribe(() => this.closeModal()),\n );\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetLoginModal());\n this.subscriptions.unsubscribe();\n }\n\n openModal(): void {\n if (this.canOpen) {\n this.loginModalComponent.open();\n }\n }\n\n closeModal() {\n this.store$.dispatch(resetLoginModal());\n this.store$.dispatch(userContinuesWithoutLogin());\n this.loginModalComponent?.close();\n }\n\n continueWithoutLogin() {\n this.closeModal();\n this.canOpen = false;\n }\n}\n","\n
    \n
    \n

    \n We recognized you have an active registartion at Princess House. You can log in now for a\n better shopping experinece.\n

    \n
    \n Back to Cart\n \n
    \n
    \n Continue\n \n
    \n \n \n\n\n\n\n\n \n\n","/* eslint-disable max-len */\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ShippingAddressFormComponent } from '@cart/components/checkout-page/checkout-personal-info/shipping-address-form/shipping-address-form.component';\nimport { CountryName } from '@core/constants/country-name';\nimport { ValidEmailRegExp } from '@core/constants/patterns';\nimport { phErrorMessages } from '@core/constants/ph-error-messages';\nimport { CartRoutes } from '@core/constants/routes.const';\nimport { ZipCodeMinimumLength } from '@core/constants/zip-code-minimum-length';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { CheckoutAddress, CheckoutUserModel } from '@core/models/checkout.model';\nimport { GtmService } from '@core/services/gtm.service';\nimport { LogRocketService } from '@core/services/logrocket.service';\nimport { AppState } from '@core/store';\nimport { selectAddressIsFetched, selectAddresses, selectCountryStates } from '@core/store/address';\nimport { Address, AddressVerification } from '@core/store/address/address-state-models';\nimport { fetchAddresses, fetchCountryStates } from '@core/store/address/address.actions';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { selectCart } from '@core/store/cart';\nimport {\n selectAddressErrorType,\n selectAddressVerification,\n selectCurrentAddress,\n selectEmailCheckErrorType,\n selectEmailChecked,\n selectPersonalInfo,\n selectSaveSuccessful,\n selectUpdatePersonalInfoIsLoading,\n} from '@core/store/checkout';\nimport { PersonalInfo } from '@core/store/checkout/checkout-state-models';\nimport {\n cancelPersonalInfoUpdate,\n checkUserByEmail,\n openSavedAddressesModal,\n resetCheckoutAddressValidationModal,\n resetEmailCheck,\n resetSaveSuccessful,\n resetSavedAddressesModal,\n updatePersonalInfo,\n} from '@core/store/checkout/checkout.actions';\nimport {\n selectAssignedConsultant,\n selectCurrentConsultant,\n selectIsOutdatedData,\n} from '@core/store/consultant';\nimport {\n fetchAssignedConsultantOnCheckout,\n setIsOutdatedData,\n} from '@core/store/consultant/consultant.actions';\nimport { selectUser, selectUserIsFetched } from '@core/store/user';\nimport { UserModel } from '@core/store/user/user-state-models';\nimport { fetchUser } from '@core/store/user/user.actions';\nimport { setVoucherEmail } from '@core/store/voucher/voucher.actions';\nimport { environment } from '@env';\nimport { concatLatestFrom } from '@ngrx/effects';\nimport { Store, select } from '@ngrx/store';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { TextFieldInputComponent } from '@shared/components/text-field-input/text-field-input.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { scrollToTop } from '@shared/utils/scroll-utils';\nimport { matchValidator } from '@shared/utils/validation.utils';\nimport { Observable, Subscription, combineLatest, fromEvent } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n take,\n withLatestFrom,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'app-checkout-personal-info',\n templateUrl: './checkout-personal-info.component.html',\n styleUrls: ['../checkout-slide.shared.scss', './checkout-personal-info.component.scss'],\n})\nexport class CheckoutPersonalInfoComponent implements OnInit, OnDestroy, AfterViewInit {\n @Output()\n clickNext: EventEmitter = new EventEmitter();\n\n @Input() title: string;\n\n @ViewChild('address', { static: true })\n shippingAddressForm: ShippingAddressFormComponent;\n\n @ViewChild('emailInput') emailInput: TextFieldInputComponent;\n @ViewChild('emailConfirmInput') emailConfirmInput: TextFieldInputComponent;\n\n readonly PhErrorTypes = PhExceptionErrorType;\n readonly BillingCustomer = 'billingCustomer';\n readonly FirstName = 'firstName';\n readonly LastName = 'lastName';\n readonly Email = 'email';\n readonly EmailConfirm = 'emailConfirm';\n readonly PhoneNumber = 'phoneNumber';\n readonly Updates = 'updates';\n readonly ShippingAddress = 'shippingAddress';\n readonly Address = 'address';\n readonly FormErrorTypes = FormErrorTypes;\n readonly ErrorMessages = phErrorMessages;\n readonly ShippingCartRoute = CartRoutes.ShoppingCart;\n\n personalInfoFormGroup: FormGroup;\n shippingAddressVerification$: Observable;\n countryStates$: Observable;\n isAuthenticated$: Observable;\n isNewsLetterSubscribe$: Observable;\n userAddresses$: Observable;\n currentAddress$: Observable
    ;\n disableButton$: Observable;\n emailErrorType$: Observable;\n addressErrorType$: Observable;\n nextPageId: number;\n loginEmail: string;\n hideBillingAddressForm: boolean = true;\n showNameCheckbox: boolean = true;\n\n private addressDefault: CheckoutAddress = {\n firstName: ['', [Validators.required]],\n lastName: ['', [Validators.required]],\n phoneNumber: ['', [Validators.required]],\n address: {\n id: [''],\n addressLine1: ['', [Validators.required]],\n addressLine2: [''],\n city: ['', [Validators.required]],\n country: [CountryName[environment.country]],\n state: ['', [Validators.required]],\n zipCode: ['', [Validators.required, Validators.minLength(ZipCodeMinimumLength)]],\n },\n };\n\n private userDefault: CheckoutUserModel = {\n firstName: ['', [Validators.required]],\n lastName: ['', [Validators.required]],\n email: ['', [Validators.required, emailValidator(ValidEmailRegExp)]],\n emailConfirm: ['', [Validators.required]],\n phoneNumber: ['', [Validators.required]],\n updates: [false],\n };\n\n private subscriptions: Subscription = new Subscription();\n private verifiedShippingAddress: boolean;\n private isFormPrefilled: boolean = false;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n private gtmService: GtmService,\n private logrocketService: LogRocketService,\n ) {}\n\n ngOnInit(): void {\n this.setShippingAddressVerification();\n\n if (isMexEnv) {\n this.addressDefault.address.addressLine3 = [''];\n }\n\n this.store$.dispatch(resetSaveSuccessful());\n this.store$.dispatch(fetchCountryStates());\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectCountryStates));\n this.emailErrorType$ = this.store$.select(selectEmailCheckErrorType);\n this.addressErrorType$ = this.store$.select(selectAddressErrorType);\n this.disableButton$ = combineLatest([\n this.store$.select(selectUpdatePersonalInfoIsLoading),\n this.emailErrorType$,\n this.store$.select(selectEmailChecked),\n ]).pipe(\n map(\n ([loading, error, emailChecked]) =>\n loading || error === PhExceptionErrorType.Email || !emailChecked,\n ),\n );\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n this.isNewsLetterSubscribe$ = this.store$\n .select(selectUser)\n .pipe(select((user) => user.newsletters));\n this.personalInfoFormGroup = this.createFormGroup();\n this.currentAddress$ = this.store$.select(selectCurrentAddress);\n\n this.subscribeAddressValueChanges();\n this.subscribeUserAuthenticated();\n this.subscribePrepopulateForm();\n this.subscribeSaveSuccessful();\n this.resetEmailCheck();\n this.addressVerificationErrorHandling();\n\n this.gtmCheckout();\n }\n\n ngAfterViewInit(): void {\n if (this.emailConfirmInput) {\n const emailBlur$ = fromEvent(this.emailInput.input.nativeElement, 'blur').pipe(startWith({}));\n const emailKeyup$ = fromEvent(this.emailInput.input.nativeElement, 'keyup').pipe(\n debounceTime(500),\n startWith({}),\n distinctUntilChanged(),\n );\n\n const emailConfirmBlur$ = fromEvent(this.emailConfirmInput.input.nativeElement, 'blur').pipe(\n startWith({}),\n );\n const emailConfirmKeyup$ = fromEvent(\n this.emailConfirmInput.input.nativeElement,\n 'keyup',\n ).pipe(debounceTime(500), startWith({}), distinctUntilChanged());\n\n this.subscriptions.add(\n combineLatest([emailBlur$, emailKeyup$, emailConfirmBlur$, emailConfirmKeyup$])\n .pipe(withLatestFrom(this.isAuthenticated$.pipe(filter((isAuth) => !isAuth))))\n .subscribe(() => {\n const emailField = this.personalInfoFormGroup.get(\n `${this.BillingCustomer}.${this.Email}`,\n );\n if (!!this.emailConfirmInput.value) {\n this.updateEmailConfirmValidity();\n }\n if (\n emailField.valid &&\n this.emailInput.value === this.emailConfirmInput.value &&\n this.emailInput.value !== ''\n ) {\n this.loginEmail = this.emailInput.value;\n this.store$.dispatch(checkUserByEmail({ email: this.emailInput.value }));\n }\n }),\n );\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n next(nextPageId: number): void {\n this.personalInfoFormGroup.markAllAsTouched();\n this.updateEmailConfirmValidity();\n this.nextPageId = nextPageId - 1;\n\n if (this.personalInfoFormGroup.valid) {\n this.store$.dispatch(setIsOutdatedData({ isOutdatedData: true }));\n let personalInfo = this.personalInfoFormGroup.value;\n this.logrocketService.logRocketIdentify(personalInfo.billingCustomer.email);\n this.store$.dispatch(\n updatePersonalInfo({ personalInfo, skipAddressVerification: this.verifiedShippingAddress }),\n );\n this.resetAddressVerificationError();\n }\n }\n\n saveShippingAddressForm = (formGroup: FormGroup): void => {\n this.personalInfoFormGroup.patchValue({\n [this.ShippingAddress]: {\n ...formGroup.value,\n },\n });\n const personalInfo: PersonalInfo = this.personalInfoFormGroup.value;\n\n this.store$.dispatch(\n updatePersonalInfo({\n personalInfo,\n skipAddressVerification: true,\n }),\n );\n this.store$.dispatch(resetCheckoutAddressValidationModal());\n this.verifiedShippingAddress = true;\n };\n\n onDismissShippingAddress = (): void => {\n this.store$.dispatch(resetCheckoutAddressValidationModal());\n this.store$.dispatch(cancelPersonalInfoUpdate());\n };\n\n dismissSavedAddressesModal = (): void => {\n this.store$.dispatch(resetSavedAddressesModal());\n };\n\n selectAddress(selectedAddressId: number): void {\n this.userAddresses$\n .pipe(\n take(1),\n map((addresses) => addresses.find((address) => address.id === selectedAddressId)),\n )\n .subscribe((selectedAddress) => {\n this.showNameCheckbox = !selectedAddress.firstName || !selectedAddress.lastName;\n this.personalInfoFormGroup.controls[this.ShippingAddress].patchValue({\n firstName: selectedAddress.firstName,\n lastName: selectedAddress.lastName,\n address: {\n id: selectedAddress.id,\n addressLine1: selectedAddress.addressLine1,\n addressLine2: selectedAddress.addressLine2,\n city: selectedAddress.city,\n state: selectedAddress.state,\n zipCode: selectedAddress.zipCode,\n },\n });\n if (isMexEnv) {\n this.personalInfoFormGroup.controls[this.ShippingAddress].patchValue({\n addressLine3: selectedAddress.addressLine3,\n });\n }\n this.verifiedShippingAddress = true;\n });\n }\n\n changeAddress(): void {\n this.store$.dispatch(\n openSavedAddressesModal({\n currentAddress: {\n ...this.personalInfoFormGroup.get(`${this.ShippingAddress}.${this.Address}`).value,\n },\n }),\n );\n }\n\n toggleShippingName(usePersonalInfoName: boolean) {\n this.personalInfoFormGroup.get(`${this.ShippingAddress}`).patchValue({\n [this.FirstName]: usePersonalInfoName\n ? this.personalInfoFormGroup.get(`${this.BillingCustomer}.${this.FirstName}`).value\n : '',\n [this.LastName]: usePersonalInfoName\n ? this.personalInfoFormGroup.get(`${this.BillingCustomer}.${this.LastName}`).value\n : '',\n });\n }\n\n private prepopulateForm(\n userIsFetched: boolean,\n user: UserModel,\n addressIsFetched: boolean,\n address: Address,\n personalInfoFromCheckout: PersonalInfo,\n ): void {\n let personalInfo: PersonalInfo;\n if (!!personalInfoFromCheckout) {\n personalInfo = personalInfoFromCheckout;\n } else if (userIsFetched && addressIsFetched) {\n personalInfo = {\n billingCustomer: { ...user, emailConfirm: user.email, updates: user.newsletters },\n\n shippingAddress: {\n firstName: address?.firstName || '',\n lastName: address?.lastName || '',\n phoneNumber: '',\n address,\n },\n };\n }\n if (personalInfo && !this.isFormPrefilled) {\n this.personalInfoFormGroup.patchValue(personalInfo);\n this.showNameCheckbox =\n !personalInfo.shippingAddress.firstName || !personalInfo.shippingAddress.lastName;\n this.store$.dispatch(checkUserByEmail({ email: personalInfo.billingCustomer.email }));\n this.verifiedShippingAddress = true;\n this.isFormPrefilled = true;\n }\n }\n\n private subscribeAddressValueChanges(): void {\n this.subscriptions.add(\n this.personalInfoFormGroup\n .get(`${this.ShippingAddress}.${this.Address}`)\n .valueChanges.subscribe(() => (this.verifiedShippingAddress = false)),\n );\n }\n\n private setShippingAddressVerification(): void {\n this.shippingAddressVerification$ = this.store$\n .select(selectAddressVerification)\n .pipe(select((data) => data?.shippingAddressVerificationResult));\n }\n\n private addressVerificationErrorHandling(): void {\n this.subscriptions.add(\n this.shippingAddressVerification$.subscribe((verification) => {\n if (!!verification && !verification?.correctedAddress && verification?.isValid === false) {\n const shippingAddressForm = this.personalInfoFormGroup?.get(\n `${this.ShippingAddress}.${this.Address}`,\n ) as FormGroup;\n Object.keys(shippingAddressForm.controls).forEach((key) => {\n shippingAddressForm.get(key).setErrors({ uniqueness: true });\n });\n }\n }),\n );\n }\n\n private createFormGroup(): FormGroup {\n return this.fb.group({\n [this.BillingCustomer]: this.fb.group(this.userDefault, {\n validators: matchValidator(this.EmailConfirm, this.Email, this.FormErrorTypes.emailConfirm),\n }),\n [this.ShippingAddress]: this.shippingAddressForm.createGroup(this.addressDefault),\n });\n }\n\n private subscribeUserAuthenticated(): void {\n this.isAuthenticated$\n .pipe(\n filter((isAuthenticated) => isAuthenticated),\n take(1),\n )\n .subscribe(() => {\n this.store$.dispatch(fetchAddresses());\n this.store$.dispatch(fetchUser());\n this.userAddresses$ = this.store$.select(selectAddresses);\n });\n }\n\n private subscribePrepopulateForm(): void {\n this.subscriptions.add(\n combineLatest([\n this.store$.select(selectUser),\n this.store$\n .select(selectAddresses)\n .pipe(map((addresses) => addresses.find((address) => address.default))),\n this.store$.select(selectPersonalInfo),\n ])\n .pipe(\n concatLatestFrom(() => [\n this.isAuthenticated$,\n this.store$.select(selectUserIsFetched),\n this.store$.select(selectAddressIsFetched),\n ]),\n filter(([[, , personalInfo], isAuth]) => isAuth || !!personalInfo),\n )\n .subscribe(([[user, address, personalInfo], , userIsFetched, addressIsFetched]) => {\n this.prepopulateForm(userIsFetched, user, addressIsFetched, address, personalInfo);\n }),\n );\n }\n\n private subscribeSaveSuccessful(): void {\n this.subscriptions.add(\n combineLatest([\n this.store$.select(selectSaveSuccessful),\n this.store$.select(selectIsOutdatedData),\n ])\n .pipe(\n filter(([saveSuccessful, isOutdatedData]) => saveSuccessful && !isOutdatedData),\n concatLatestFrom(() => [\n this.store$.select(selectCurrentConsultant),\n this.store$.select(selectAssignedConsultant),\n this.store$.select(selectIsAuthenticated),\n ]),\n )\n .subscribe(([, currentConsultant, assignedConsultant, isAuthenticated]) => {\n if (isAuthenticated && !currentConsultant && assignedConsultant) {\n this.store$.dispatch(fetchAssignedConsultantOnCheckout());\n } else {\n if (isMexEnv) {\n const email = this.personalInfoFormGroup\n .get(this.BillingCustomer)\n .get(this.Email).value;\n this.store$.dispatch(setVoucherEmail({ email }));\n }\n this.clickNext.emit(this.nextPageId);\n scrollToTop();\n }\n }),\n );\n }\n\n private gtmCheckout() {\n this.store$\n .select(selectCart)\n .pipe(take(1))\n .subscribe((cart) => this.gtmService.beginCheckout(cart));\n }\n\n private updateEmailConfirmValidity(): void {\n this.personalInfoFormGroup\n .get(`${this.BillingCustomer}.${this.EmailConfirm}`)\n .updateValueAndValidity({ emitEvent: false });\n }\n\n private resetEmailCheck(): void {\n const emailField = this.personalInfoFormGroup.get(`${this.BillingCustomer}.${this.Email}`);\n const emailConfirmField = this.personalInfoFormGroup.get(\n `${this.BillingCustomer}.${this.EmailConfirm}`,\n );\n this.subscriptions.add(\n combineLatest([emailField.valueChanges, emailConfirmField.valueChanges]).subscribe(() =>\n this.store$.dispatch(resetEmailCheck()),\n ),\n );\n }\n\n private resetAddressVerificationError(): void {\n this.subscriptions.add(\n this.personalInfoFormGroup\n .get(`${this.ShippingAddress}.${this.Address}`)\n .valueChanges.pipe(take(1))\n .subscribe(() => {\n const addressForm = this.personalInfoFormGroup.get(\n `${this.ShippingAddress}.${this.Address}`,\n ) as FormGroup;\n Object.keys(addressForm.controls).forEach((key) =>\n addressForm.get(key).updateValueAndValidity(),\n );\n }),\n );\n }\n}\n","/* eslint-disable max-len */\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\n\nexport const OrderSubmissionErrorMessages = {\n [PhExceptionErrorType.OrderSubmitTransactionFailedException]: $localize`Please check your credit card details and resubmit your order`,\n [PhExceptionErrorType.OrderSubmitCvvDoesNotMatchException]: $localize`Please check your credit card details and resubmit your order`,\n [PhExceptionErrorType.OrderSubmitZipDoesNotMatchException]: $localize`Please check your credit card details and resubmit your order`,\n [PhExceptionErrorType.PipelineException]: $localize`Sorry but an error happened during the order placement. Please try again later or contact Princess House customer service!`,\n};\n","\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n Would you like this order to be credit to a host of a specific party?\n \n
    \n \n \n
    \n
    \n
    \n \n \n
    \n \n {{ party.partyName }}\n \n
    \n
    \n \n \n
    \n
    \n \n {{\n getValidationError(partyFormGroup, PartyFormKeys.isOrderCreditToHostParty)\n }}\n
    \n \n {{ getValidationError(partyFormGroup, PartyFormKeys.specificParty) }}\n
    \n \n \n
    \n
    \n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { MobileMedia } from '@core/constants/screen-sizes';\nimport { AppState } from '@core/store';\nimport { selectIsOrderCreditToHostParty, selectParty } from '@core/store/consultant';\nimport { Party } from '@core/store/consultant/consultant-state-models';\nimport {\n resetParty,\n selectIsOrderCreditToHostParty as selectIsOrderCreditToHostPartyAction,\n selectParty as selectPartyAction,\n} from '@core/store/consultant/consultant.actions';\nimport { Store, select } from '@ngrx/store';\nimport { getFormValidationErrorMessage, validInput } from '@shared/utils/validation.utils';\nimport { dropdownRequiredValidator } from '@shared/validators/dropdown-required.validator';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\n\n@Component({\n selector: 'app-party-box',\n templateUrl: './party-box.component.html',\n styleUrls: ['./party-box.component.scss'],\n})\nexport class PartyBoxComponent implements OnInit, OnDestroy {\n @Input() consultantParties: Party[];\n\n readonly DefaultDropdownText = $localize`Select party`;\n readonly PartyFormKeys = {\n isOrderCreditToHostParty: 'isOrderCreditToHostParty',\n specificParty: 'specificParty',\n };\n readonly validInput = validInput;\n readonly DropdownErrorMessage = FormErrorMessages.dropdownRequired;\n\n isMobile$: Observable;\n selectedParty$: Observable;\n isOrderCreditToHostParty$: Observable;\n showSpecificPartyDropdown: boolean = false;\n partyFormGroup: FormGroup;\n getValidationError = getFormValidationErrorMessage;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n private breakpointObserver: BreakpointObserver,\n private fb: FormBuilder,\n ) {}\n\n ngOnInit(): void {\n this.partyFormGroup = this.createFormGroup();\n\n this.isMobile$ = this.breakpointObserver.observe(MobileMedia).pipe(select((o) => o.matches));\n this.selectedParty$ = this.store$.select(selectParty);\n this.isOrderCreditToHostParty$ = this.store$.select(selectIsOrderCreditToHostParty);\n\n this.subscribePrepopulateForm();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n partyClickHandler(party: Party) {\n this.store$.dispatch(selectPartyAction({ party }));\n this.setSpecificPartyDropdownValue(party.partyName);\n }\n\n yesClick() {\n this.store$.dispatch(\n selectIsOrderCreditToHostPartyAction({\n isOrderCreditToHostParty: true,\n }),\n );\n this.store$.dispatch(resetParty());\n\n this.setSpecificPartyDropdownValue(null);\n this.setSpecificPartyDropdownValidator(true);\n this.partyFormGroup.markAllAsTouched();\n }\n\n noClick() {\n this.store$.dispatch(\n selectIsOrderCreditToHostPartyAction({\n isOrderCreditToHostParty: false,\n }),\n );\n this.store$.dispatch(resetParty());\n\n // previously could be stored by changing the radio buttons\n this.setSpecificPartyDropdownValue(null);\n this.setSpecificPartyDropdownValidator(false);\n this.partyFormGroup.markAllAsTouched();\n }\n\n private createFormGroup(): FormGroup {\n const form = this.fb.group({\n [this.PartyFormKeys.isOrderCreditToHostParty]: [''],\n [this.PartyFormKeys.specificParty]: [''],\n });\n\n if (this.consultantParties.length) {\n form.get(this.PartyFormKeys.isOrderCreditToHostParty).setValidators(Validators.required);\n }\n\n return form;\n }\n\n private subscribePrepopulateForm(): void {\n this.subscriptions.add(\n combineLatest([this.isOrderCreditToHostParty$, this.selectedParty$]).subscribe(\n ([isOrderCreditToHostParty, selectedParty]) => {\n isOrderCreditToHostParty = selectedParty ? !!selectedParty : isOrderCreditToHostParty;\n this.showSpecificPartyDropdown = !!isOrderCreditToHostParty;\n this.populateForm(isOrderCreditToHostParty, selectedParty);\n },\n ),\n );\n }\n\n private populateForm(isOrderCreditToHostParty: boolean, selectedParty: Party): void {\n this.partyFormGroup.patchValue({\n [this.PartyFormKeys.isOrderCreditToHostParty]: isOrderCreditToHostParty,\n });\n\n if (isOrderCreditToHostParty) {\n this.partyFormGroup.markAllAsTouched();\n this.setSpecificPartyDropdownValue(selectedParty?.partyName);\n }\n }\n\n private setSpecificPartyDropdownValidator(isOrderCreditToHostParty: boolean) {\n const specificPartyFormControl = this.partyFormGroup.get(this.PartyFormKeys.specificParty);\n if (isOrderCreditToHostParty) {\n specificPartyFormControl?.setValidators(dropdownRequiredValidator());\n } else {\n specificPartyFormControl?.clearValidators();\n }\n\n specificPartyFormControl?.updateValueAndValidity();\n }\n\n private setSpecificPartyDropdownValue(partyName: string) {\n this.partyFormGroup.get([this.PartyFormKeys.specificParty]).setValue(partyName);\n }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\n\nexport function dropdownRequiredValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n const selectedValue = control.value;\n if (!selectedValue) {\n return { [FormErrorTypes.dropdownRequired]: true };\n }\n return null;\n };\n}\n","\n
    \n
    \n
    \n Unable to ship select product(s) in your cart to a Minnesota address\n
    \n
    \n Due to the Minnesota\n  2025 PFAS prohibition ,the following product(s) need to be\n removed from your cart before the order can be submitted.\n
    \n
    \n
    \n
    {{ cartItem.sku | titlecase }}
    \n
    {{ cartItem.productName }}
    \n
    \n
    \n
    \n
    \n
    ","import { Component, Input, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport { OrderLine } from '@core/store/cart/cart-state-models';\nimport { setAddToCartConfirmModal } from '@core/store/cart/cart.actions';\nimport { Party } from '@core/store/consultant/consultant-state-models';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-cart-pfas-popup',\n templateUrl: './app-cart-pfas-popup.component.html',\n styleUrls: ['./app-cart-pfas-popup.component.scss'],\n})\nexport class AppCartPfasPopupComponent {\n party$: Observable;\n\n @Input() mandatory: boolean = false;\n @Input() showExtraHint: boolean = false;\n public pfasCartItems: OrderLine[] = [];\n\n modalConfig: ModalConfig = {\n hideDismissButton: true,\n hideCloseButton: false,\n onDismiss: this.onDismiss.bind(this),\n onClose: this.onClose.bind(this),\n onDismissHeader: this.onClose.bind(this),\n closeButtonLabel: $localize`RETURN TO CART`,\n\n ngbModalOptions: {\n size: 'md',\n beforeDismiss: this.onClose.bind(this),\n centered: false,\n },\n };\n\n @ViewChild('pfasModal') private pfasModal: ModalComponent;\n\n constructor(\n private store$: Store,\n private router: Router,\n ) {}\n\n openModal(orderLines: OrderLine[]) {\n this.pfasCartItems = orderLines;\n\n this.pfasModal.open();\n }\n\n onClose() {\n this.store$.dispatch(setAddToCartConfirmModal({ payload: null }));\n this.router.navigate(['/shopping-cart']);\n }\n\n onDismiss() {\n this.store$.dispatch(setAddToCartConfirmModal({ payload: null }));\n this.router.navigate(['/shopping-cart']);\n }\n\n close(): void {\n this.pfasModal.close();\n }\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport { selectOpenPartyVerificationFailedModal } from '@core/store/consultant';\nimport { resetOpenPartyVerificationFailedModal } from '@core/store/consultant/consultant.actions';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-party-verification-failed-modal',\n templateUrl: './party-verification-failed-modal.component.html',\n styleUrls: ['./party-verification-failed-modal.component.scss'],\n})\nexport class PartyVerificationFailedModalComponent implements AfterViewInit, OnDestroy {\n @Output() navigateBack: EventEmitter = new EventEmitter();\n\n readonly ModalConfig: ModalConfig = {\n title: $localize`Technical Error`,\n hideCloseButton: true,\n hideDismissButton: true,\n hideHeaderDismissButton: true,\n ngbModalOptions: {\n size: 'md',\n backdrop: 'static',\n modalDialogClass: 'modal-width',\n },\n };\n\n @ViewChild('modal') private modal: ModalComponent;\n private subscriptions: Subscription = new Subscription();\n\n constructor(private store$: Store) {}\n\n close(): void {\n this.modal.close();\n this.store$.dispatch(resetOpenPartyVerificationFailedModal());\n this.navigateBack.emit();\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n this.store$\n .select(selectOpenPartyVerificationFailedModal)\n .pipe(filter((open) => open))\n .subscribe(() => {\n this.modal.open();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n
    \n There was an error while connecting your order to the selected party!\n
    \n
    \n The application will navigate you back to the first step of the checkout.\n
    \n\n
    \n \n
    \n
    \n","
    \n
    \n \n
    \n\n
    \n
    \n

    {{ title | titlecase }}

    \n
    \n \n
    \n

    Product(s)

    \n
    \n
    \n

    Price

    \n
    \n
    \n

    Qty

    \n
    \n
    \n

    Total

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n\n
    \n \n {{ submissionErrorMessage }}\n
    \n \n {{ createVoucherErrorMessage }}\n
    \n\n
    \n \n
    \n
    \n \n Continue\n \n
    \n \n \n\n\n\n\n\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ConsultantFinderModalComponent } from '@consultant/consultant-finder-modal/consultant-finder-modal.component';\nimport { OrderSubmissionErrorMessages } from '@core/constants/order-submission-error-messages';\nimport { PFASSTATE } from '@core/constants/pfas-state';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { SuccessfulStatus } from '@core/enums/successful-status.enum';\nimport { WebsiteMode } from '@core/enums/website-mode.enum';\nimport { CheckoutInfoCards } from '@core/models/checkout.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { selectCart } from '@core/store/cart';\nimport { Cart, OrderLine } from '@core/store/cart/cart-state-models';\nimport { selectPersonalInfo } from '@core/store/checkout';\nimport {\n selectCurrentConsultant,\n selectCurrentConsultantParties,\n selectFetchCurrentConsultantSuccessfulStatus,\n} from '@core/store/consultant';\nimport { Consultant, Party } from '@core/store/consultant/consultant-state-models';\nimport { resetFetchCurrentConsultantSuccessfulStatus } from '@core/store/consultant/consultant.actions';\nimport { selectIsSubmitDisabled, selectSubmissionErrorType } from '@core/store/order';\nimport { resetIsSubmitDisabled } from '@core/store/order/order.actions';\nimport { selectCreateVoucherError } from '@core/store/voucher';\nimport { resetVoucherErrors } from '@core/store/voucher/voucher.actions';\nimport { selectWebsiteMode } from '@core/store/website-mode';\nimport { select, Store } from '@ngrx/store';\nimport {\n createPersonalInfoCard,\n createShippingInfoCard,\n} from '@shared/utils/create-shipping-info-card-attributes';\nimport { scrollToTop } from '@shared/utils/scroll-utils';\nimport { getVoucherErrorMessage } from '@shared/utils/voucher-error-utils';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\nimport { AppCartPfasPopupComponent } from '../app-cart-pfas-popup/app-cart-pfas-popup.component';\nimport { PartyBoxComponent } from './party-box/party-box.component';\n\n@Component({\n selector: 'app-checkout-order-summary',\n templateUrl: './checkout-order-summary.component.html',\n styleUrls: ['../checkout-slide.shared.scss', './checkout-order-summary.component.scss'],\n})\nexport class CheckoutOrderSummaryComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() title: string;\n @Output() clickNext: EventEmitter = new EventEmitter();\n @Output() clickBack: EventEmitter = new EventEmitter();\n @ViewChild('partyBox', { static: true }) partyBoxComponent: PartyBoxComponent;\n\n readonly ErrorTypes = PhExceptionErrorType;\n readonly ConsultantFinderText: string = $localize`To process your order we first\n need to connect you with a Consultant. If you know of or have a Consultant already,\n we can help you look them up. If you don't know a Consultant, we can help you find\n one in your area.`;\n\n cart$: Observable;\n createVoucherErrorMessage$: Observable;\n currentConsultant$: Observable;\n zipCode$: Observable;\n isSubmitDisabled$: Observable;\n submissionErrorMessage$: Observable;\n paymentType: PaymentType;\n checkoutInfoCards$: Observable;\n fetchConsultantSuccessStatus$: Observable;\n consultantParties$: Observable;\n isPfasProduct$: Observable;\n pfasOrderLines$: Observable;\n isPfaState$: Observable;\n\n @ViewChild('pfasModal') private cartPfasModel: AppCartPfasPopupComponent;\n @ViewChild('consultantFinder') private consultantFinderModal: ConsultantFinderModalComponent;\n private subscriptions: Subscription = new Subscription();\n private isConsultantSelectedOnModal: boolean = false;\n private isPfasOpened: boolean = false;\n private subscription: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n private appInitService: AppInitService,\n ) {}\n\n ngOnInit(): void {\n this.initCheckoutInfoCards();\n this.currentConsultant$ = this.store$.select(selectCurrentConsultant);\n this.isSubmitDisabled$ = this.store$.select(selectIsSubmitDisabled);\n this.fetchConsultantSuccessStatus$ = this.store$.select(\n selectFetchCurrentConsultantSuccessfulStatus,\n );\n this.cart$ = this.store$.select(selectCart).pipe(filter((x) => !!x));\n this.zipCode$ = this.store$\n .select(selectPersonalInfo)\n .pipe(select((personalInfo) => personalInfo.shippingAddress.address.zipCode));\n this.isPfaState$ = this.store$\n .select(selectPersonalInfo)\n .pipe(select((personalInfo) => personalInfo.shippingAddress.address.state === PFASSTATE));\n this.pfasOrderLines$ = this.store$.select(selectCart).pipe(\n filter((cart) => !!cart),\n map(\n (x) => x?.orderLines.filter((orderLine) => orderLine).filter((d) => d.isPFASItem === true),\n ),\n );\n this.consultantParties$ = this.store$.select(selectCurrentConsultantParties);\n this.reopenConsultantFinder();\n this.getCreateVoucherError();\n this.getSubmissionErrorMessage();\n this.initIsPfaProduct();\n }\n\n ngAfterViewInit(): void {\n this.initConsultantFinder();\n this.initPfasModal();\n this.initPfasModal();\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetIsSubmitDisabled());\n this.store$.dispatch(resetVoucherErrors());\n this.subscriptions.unsubscribe();\n }\n\n next(): void {\n this.partyBoxComponent.partyFormGroup.markAllAsTouched();\n if (this.partyBoxComponent.partyFormGroup.valid) {\n this.clickNext.emit();\n scrollToTop();\n }\n }\n\n initIsPfaProduct(): void {\n this.isPfasProduct$ = this.store$.select(selectCart).pipe(\n filter((cart) => !!cart),\n map(\n (x) =>\n !!x?.orderLines.filter((orderLine) => orderLine).filter((d) => d.isPFASItem === true)\n .length,\n ),\n );\n }\n\n back(): void {\n this.clickBack.emit();\n }\n\n consultantSelected(): void {\n this.isConsultantSelectedOnModal = true;\n }\n\n private initPfasModal() {\n this.subscription.add(\n combineLatest([this.pfasOrderLines$, this.isPfaState$]).subscribe(([data, isPfaState]) => {\n if (data.length > 0 && !this.isPfasOpened && isPfaState) {\n this.isPfasOpened = true;\n this.cartPfasModel.openModal(data);\n }\n }),\n );\n }\n\n private initConsultantFinder() {\n this.subscriptions.add(\n this.store$\n .select(selectWebsiteMode)\n .pipe(\n take(1),\n filter((websiteMode) => websiteMode === WebsiteMode.corporate),\n )\n .subscribe(() => this.consultantFinderModal.open()),\n );\n }\n\n private getCreateVoucherError(): void {\n this.createVoucherErrorMessage$ = this.store$\n .select(selectCreateVoucherError)\n .pipe(\n map((error) =>\n getVoucherErrorMessage(\n error?.errors,\n error?.email,\n this.appInitService.Settings.ec.voucherLimits,\n ),\n ),\n );\n }\n\n private getSubmissionErrorMessage(): void {\n this.submissionErrorMessage$ = this.store$\n .select(selectSubmissionErrorType)\n .pipe(map((errorType) => OrderSubmissionErrorMessages[errorType]));\n }\n\n private initCheckoutInfoCards(): void {\n this.checkoutInfoCards$ = this.store$.select(selectPersonalInfo).pipe(\n map((personalInfo) => ({\n customerInfo: createPersonalInfoCard(personalInfo.billingCustomer, false),\n shippingInfo: createShippingInfoCard(personalInfo, false),\n })),\n );\n }\n\n private reopenConsultantFinder(): void {\n this.subscriptions.add(\n this.fetchConsultantSuccessStatus$\n .pipe(\n filter(\n (status) => status === SuccessfulStatus.Failed && this.isConsultantSelectedOnModal,\n ),\n )\n .subscribe(() => {\n this.isConsultantSelectedOnModal = false;\n this.consultantFinderModal.open();\n this.store$.dispatch(resetFetchCurrentConsultantSuccessfulStatus());\n }),\n );\n }\n}\n","
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { PasswordPattern } from '@core/constants/patterns';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { selectPersonalInfo } from '@core/store/checkout';\nimport { PersonalInfo } from '@core/store/checkout/checkout-state-models';\nimport { selectCurrentConsultant } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport { registerUser } from '@core/store/user/user.actions';\nimport { Store } from '@ngrx/store';\nimport { hideRecaptchaBadge, showRecaptchaBadge } from '@shared/utils/recaptcha-utils';\nimport { ReCaptchaV3Service } from 'ng-recaptcha';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, take, withLatestFrom } from 'rxjs/operators';\n\nenum RegisterFormKey {\n password = 'password',\n passwordConfirm = 'passwordConfirm',\n newsletters = 'newsletters',\n shareWithConsultant = 'shareWithConsultant',\n}\n\n@Component({\n selector: 'app-checkout-register-user',\n templateUrl: './checkout-register-user.component.html',\n styleUrls: ['./checkout-register-user.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckoutRegisterUserComponent implements OnInit, AfterViewInit, OnDestroy {\n readonly PasswordMatchErrorMessages = FormErrorMessages.passwordConfirm;\n readonly PasswordMatchErrorType = 'passwordMatch';\n readonly RegisterFormKey = RegisterFormKey;\n readonly ErrorMessages = {\n [FormErrorTypes.required]: FormErrorMessages.required,\n // eslint-disable-next-line max-len\n [FormErrorTypes.pattern]: $localize`The password must contains 8 or more characters, upper and lower case letters, at least one number (0-9) and one symbol (!@#^&()+_,.{}?-)`,\n };\n\n personalInfo$: Observable;\n\n form: FormGroup;\n passwordMatch: boolean = true;\n disabled: boolean = false;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n private reCaptchaService: ReCaptchaV3Service,\n private appInitService: AppInitService,\n ) {}\n\n ngOnInit(): void {\n this.form = this.fb.group(\n {\n [RegisterFormKey.password]: [\n '',\n [Validators.required, Validators.pattern(PasswordPattern)],\n ],\n [RegisterFormKey.passwordConfirm]: ['', [Validators.required]],\n [RegisterFormKey.newsletters]: true,\n [RegisterFormKey.shareWithConsultant]: true,\n },\n { validators: [this.passwordMatchValidator] },\n );\n\n this.personalInfo$ = this.store$.select(selectPersonalInfo);\n }\n\n ngAfterViewInit(): void {\n showRecaptchaBadge();\n }\n\n ngOnDestroy(): void {\n hideRecaptchaBadge();\n }\n\n onSubmit() {\n this.checkIfPasswordMatch();\n this.form.markAllAsTouched();\n\n const currentConsultant$: Observable = this.store$.select(selectCurrentConsultant);\n if (this.form.valid) {\n this.disabled = true;\n this.subscriptions.add(\n this.reCaptchaService\n .execute('importantAction')\n .pipe(\n withLatestFrom(this.personalInfo$, currentConsultant$),\n filter(([token]) => !!token || !this.appInitService.Settings.ec.isRecaptchaEnabled),\n filter(([, personalInfo]) => !!personalInfo),\n take(1),\n )\n .subscribe(([token, personalInfo, currentConsultant]) => {\n const { firstName, lastName, email, emailConfirm, phoneNumber } =\n personalInfo.billingCustomer;\n const userToRegister = {\n name: { firstName, lastName },\n email: { email, confirmEmail: emailConfirm },\n password: {\n password: this.form.value[RegisterFormKey.password],\n confirmPassword: this.form.value[RegisterFormKey.passwordConfirm],\n },\n subscriptions: {\n newsletters: this.form.value[RegisterFormKey.newsletters],\n },\n activeConsultantId: currentConsultant.id,\n phoneNumber,\n shareWithConsultant: this.form.value[RegisterFormKey.shareWithConsultant],\n };\n\n this.store$.dispatch(\n registerUser({\n payload: userToRegister,\n token: token,\n }),\n );\n }),\n );\n }\n }\n\n private passwordMatchValidator(g: FormGroup) {\n const passwordField = g.get(RegisterFormKey.password);\n const passwordConfirmField = g.get(RegisterFormKey.passwordConfirm);\n if (!passwordField.touched || !passwordConfirmField.touched) {\n return null;\n }\n return passwordField.value === passwordConfirmField.value ? null : { passwordMatch: false };\n }\n\n private checkIfPasswordMatch() {\n switch (this.form?.errors?.passwordMatch) {\n case undefined:\n this.passwordMatch = true;\n break;\n\n case false:\n this.passwordMatch = false;\n break;\n }\n }\n}\n","
    \n
    \n
    \n \n

    Thank you for your order!

    \n

    Your order has been confirmed and you will receive an order confirmation email shortly.\n

    \n
    0\">\n \n
    \n Download vouchers\n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n\n \n
    \n
    \n
    \n
    \n
    \n Order Number\n {{ orderNumber }}\n \n \n Print\n \n
    \n
    \n
    \n
    \n
    \n
    \n Consultant\n {{ infoCards.partyInfo.consultant }}\n
    \n
    \n Host\n {{ infoCards.partyInfo.host }}\n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n Order summary\n \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n Order Number\n {{ orderNumber }}\n
    \n
    \n
    \n\n \n\n \n
    \n
    \n\n
    \n
    \n
    \n \n\n \n
    \n
    \n
    \n \n\n \n \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n

    Product(s)

    \n
    \n
    \n

    Price

    \n
    \n
    \n

    Qty

    \n
    \n
    \n

    Total

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n\n\n\n
    \n \"loading\"\n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { PaymentImageSrc } from '@core/constants/payment.consts';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { CheckoutInfoCards } from '@core/models/checkout.model';\nimport { InfoCardAttributes } from '@core/models/info-card-attributes.model';\nimport { OrderService } from '@core/services/order.service';\nimport { VoucherService } from '@core/services/voucher.service';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { Cart } from '@core/store/cart/cart-state-models';\nimport {\n selectBillingInfo,\n selectIsRegisteredUserWithoutLogin,\n selectPaymentType,\n selectPersonalInfo,\n} from '@core/store/checkout';\nimport { selectCurrentConsultant, selectParty } from '@core/store/consultant';\nimport { selectSubmittedOrder } from '@core/store/order';\nimport { selectCreatePaymentMethodResponse, selectPaymentInfo } from '@core/store/payment';\nimport { selectVouchers } from '@core/store/voucher';\nimport { ReceivedVoucher } from '@core/store/voucher/voucher-state-models';\nimport { concatLatestFrom } from '@ngrx/effects';\nimport { Store, select } from '@ngrx/store';\nimport {\n createBillingInfoCard,\n createPartyInfoCard,\n createPersonalInfoCard,\n createShippingInfoCard,\n} from '@shared/utils/create-shipping-info-card-attributes';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\nimport { getMaskedCardNumber } from '@shared/utils/get-masked-card-number-utils';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-checkout-order-confirmation',\n templateUrl: './checkout-order-confirmation.component.html',\n styleUrls: ['./checkout-order-confirmation.component.scss'],\n})\nexport class CheckoutOrderConfirmationComponent implements OnInit, OnDestroy {\n submittedCart$: Observable;\n paymentInfo$: Observable;\n isAuthenticated$: Observable;\n isRegisteredUserWithoutLogin$: Observable;\n paymentType$: Observable;\n vouchers$: Observable;\n orderNumber$: Observable;\n isRegistrationSectionVisible: boolean;\n checkoutInfoCards$: Observable;\n\n readonly PaymentType = PaymentType;\n public readonly PaymentImageSrc = PaymentImageSrc;\n\n private subscription: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n private voucherService: VoucherService,\n private orderService: OrderService,\n ) {}\n\n ngOnInit(): void {\n this.vouchers$ = this.store$.select(selectVouchers);\n this.paymentType$ = this.store$.select(selectPaymentType);\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n this.isRegisteredUserWithoutLogin$ = this.store$.select(selectIsRegisteredUserWithoutLogin);\n this.submittedCart$ = this.store$.select(selectSubmittedOrder).pipe(\n select((x) => x.cart),\n distinctUntilChanged(),\n filter((x) => !!x),\n );\n if (isUsaEnv) {\n this.paymentInfo$ = this.store$.select(selectPaymentInfo).pipe(\n distinctUntilChanged(),\n filter((p) => !!p),\n map((p) => ({\n title: $localize`Payment information`,\n cardNumber: getMaskedCardNumber(p.firstFour, p.lastFour),\n readOnly: true,\n })),\n );\n } else {\n this.paymentInfo$ = this.store$.select(selectCreatePaymentMethodResponse).pipe(\n distinctUntilChanged(),\n filter((createdPaymentMethod) => !!createdPaymentMethod),\n concatLatestFrom(() => [this.paymentType$]),\n map(([createdPaymentMethod, paymentType]) => {\n const title = $localize`Payment information`;\n if (paymentType === PaymentType.BankTransfer) {\n return {\n title,\n clabe: createdPaymentMethod.clabe,\n email: createdPaymentMethod.email,\n readOnly: true,\n };\n }\n return {\n title,\n cardNumber: getMaskedCardNumber(\n createdPaymentMethod.card?.firstFour || '',\n createdPaymentMethod.card?.lastFour || '',\n ),\n readOnly: true,\n };\n }),\n );\n }\n\n this.initOrderNumber();\n this.checkRegistrationSectionVisibility();\n this.initCheckoutInfoCards();\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n initOrderNumber(): void {\n this.orderNumber$ = this.store$\n .select(selectSubmittedOrder)\n .pipe(map((submittedOrder) => submittedOrder.submittedOrderId));\n }\n\n download(voucherId: string) {\n this.voucherService.downloadVoucher(voucherId);\n }\n\n printOrderSummary(orderNumber: string): void {\n this.orderService.printSummary(orderNumber);\n }\n\n checkRegistrationSectionVisibility(): void {\n this.subscription.add(\n combineLatest([this.isAuthenticated$, this.isRegisteredUserWithoutLogin$]).subscribe(\n ([isAuthenticated, isRegisteredUserWithoutLogin]) => {\n if (isAuthenticated || isRegisteredUserWithoutLogin) {\n this.isRegistrationSectionVisible = false;\n } else {\n this.isRegistrationSectionVisible = true;\n }\n },\n ),\n );\n }\n\n private initCheckoutInfoCards(): void {\n this.checkoutInfoCards$ = this.store$.select(selectPersonalInfo).pipe(\n concatLatestFrom(() => [\n this.store$.select(selectBillingInfo),\n this.store$.select(selectParty),\n this.store$.select(selectCurrentConsultant),\n this.paymentInfo$,\n ]),\n map(([personalInfo, billingInfo, party, currentConsultant, paymentInfo]) => ({\n customerInfo: createPersonalInfoCard(personalInfo.billingCustomer, true),\n shippingInfo: createShippingInfoCard(personalInfo, true),\n billingInfo: createBillingInfoCard(billingInfo, true),\n partyInfo: createPartyInfoCard(currentConsultant.fullName, party),\n paymentInfo: { ...paymentInfo, readOnly: true },\n })),\n );\n }\n}\n","\n\n
    \n
    \n
    \n \n
      \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    \n
    \n
    \n
    \n
    \n
    \n {{ activeStepTitle }}\n
    \n
    \n Next: {{ nextStepTitle | titlecase }}\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n When you order online with Princess House, rest assure that you're using secret site. Also\n we are respect your privacy and do NOT share any customer information. For details please\n review our privacy policy.\n \n
    \n
    \n
    \n\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { CheckoutPages } from '@core/enums/checkout-page-id.enum';\nimport { AppState } from '@core/store';\nimport { resetCheckoutState } from '@core/store/checkout/checkout.actions';\nimport { resetSubmittedOrderState } from '@core/store/order/order.actions';\nimport { resetCardPaymentInfo, resetPaymentInfo } from '@core/store/payment/payment.actions';\nimport { resetVoucherStore } from '@core/store/voucher/voucher.actions';\nimport { Store } from '@ngrx/store';\nimport { NavigationStep } from '@shared/components/stepper-base/navigation-step.model';\nimport { scrollToTop } from '@shared/utils/scroll-utils';\nimport { CheckoutPaymentComponent } from './checkout-payment/checkout-payment.component';\nimport { CheckoutPersonalInfoComponent } from './checkout-personal-info/checkout-personal-info.component';\n\n// TODO: could use StepperBaseComponent\n\n@Component({\n selector: 'app-checkout-page',\n templateUrl: './checkout-page.component.html',\n styleUrls: ['./checkout-page.component.scss'],\n})\nexport class CheckoutPageComponent implements OnInit, OnDestroy {\n readonly titlePrefix = $localize`Checkout`;\n readonly CheckoutPages = CheckoutPages;\n\n activeNavId: number;\n navigationStep: NavigationStep[];\n activeStepTitle: string;\n nextStepTitle: string;\n\n @ViewChild(CheckoutPersonalInfoComponent) private personalInfo: CheckoutPersonalInfoComponent;\n @ViewChild(CheckoutPaymentComponent) private payment: CheckoutPaymentComponent;\n\n constructor(private store$: Store) {}\n\n navigateTo(stepId: number): void {\n scrollToTop();\n this.activeNavId = stepId;\n this.changeStepTitles(stepId);\n }\n\n ngOnInit(): void {\n scrollToTop();\n this.navigationStep = CheckoutPageComponent.initNavigationStep();\n this.activeNavId = CheckoutPages.PersonaInfo;\n this.changeStepTitles(CheckoutPages.PersonaInfo);\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetPaymentInfo());\n this.store$.dispatch(resetSubmittedOrderState());\n this.store$.dispatch(resetCardPaymentInfo());\n this.store$.dispatch(resetVoucherStore());\n this.store$.dispatch(resetCheckoutState());\n }\n\n activeIdChange(activeId: number) {\n switch (this.activeNavId) {\n case CheckoutPages.PersonaInfo:\n this.personalInfo.next(activeId);\n break;\n case CheckoutPages.Payment:\n this.payment.next(activeId);\n break;\n default:\n this.activeNavId = activeId;\n break;\n }\n }\n\n private static initNavigationStep(): NavigationStep[] {\n // TODO: the titles are duplicated, because the components are also defining them\n return [\n { id: CheckoutPages.PersonaInfo, title: $localize`Personal info` },\n { id: CheckoutPages.OrderSummary, title: $localize`Order Summary` },\n { id: CheckoutPages.Payment, title: $localize`Payment` },\n { id: CheckoutPages.OrderConfirmation, title: $localize`Order Confirmation` },\n ].sort((a, b) => a.id - b.id);\n }\n\n private changeStepTitles(stepId: number): void {\n this.activeStepTitle = this.navigationStep.find((navStep) => navStep.id === stepId).title;\n this.nextStepTitle = this.navigationStep.find((navStep) => navStep.id === stepId + 1)?.title;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AppInitService } from './app-init.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CartFeatureGuardService implements CanActivate {\n constructor(\n private router: Router,\n private appInitService: AppInitService,\n ) {}\n\n canActivate(): boolean {\n if (this.appInitService.Settings.ec.isCartEnabled) {\n return true;\n } else {\n this.router.navigateByUrl('/');\n return false;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { selectCart } from '@core/store/cart';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EmptyCartGuardService implements CanActivate {\n constructor(private store$: Store, private router: Router) {}\n\n canActivate(): Observable {\n return this.store$.select(selectCart).pipe(\n filter((cart) => !!cart),\n map(({ orderLines }) => {\n if (!orderLines.length) {\n this.router.navigateByUrl('/');\n }\n return !!orderLines.length;\n }),\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { DefaultLayoutComponent } from '@base/components/layout/default-layout/default-layout.component';\nimport { CartPageComponent } from '@cart/components/cart-page/cart-page.component';\nimport { CheckoutPageComponent } from '@cart/components/checkout-page/checkout-page.component';\nimport { CartRoutes } from '@core/constants/routes.const';\nimport { CartFeatureGuardService } from '@core/services/cart-feature-guard.service';\nimport { EmptyCartGuardService } from '@core/services/empty-cart-guard.service';\n\nconst routes: Routes = [\n {\n path: '',\n component: DefaultLayoutComponent,\n canActivate: [CartFeatureGuardService],\n children: [\n {\n path: CartRoutes.ShoppingCart,\n component: CartPageComponent,\n canActivate: [EmptyCartGuardService],\n data: { title: $localize`Shopping Cart` },\n },\n {\n path: CartRoutes.Checkout,\n component: CheckoutPageComponent,\n canActivate: [EmptyCartGuardService],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class CartRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { CartRoutingModule } from '@cart/cart-routing.module';\nimport { PaymentModule } from '@payment/payment.module';\nimport { SharedModule } from '@shared/shared.module';\nimport { ConsultantModule } from '../consultant/consultant.module';\nimport { AddToCartConfirmationComponent } from './components/add-to-cart-confirm-dialog/add-to-cart-confirm-dialog.component';\nimport { CartItemUpdatedWarningModalComponent } from './components/cart-item-updated-warning-modal/cart-item-updated-warning-modal.component';\nimport { CartPageComponent } from './components/cart-page/cart-page.component';\nimport { CartPromotionMessageComponent } from './components/cart-promotion-message/cart-promotion-message.component';\nimport { CartTotalsComponent } from './components/cart-totals/cart-totals.component';\nimport { AppCartPfasPopupComponent } from './components/checkout-page/app-cart-pfas-popup/app-cart-pfas-popup.component';\nimport { CheckoutOrderConfirmationComponent } from './components/checkout-page/checkout-order-confirmation/checkout-order-confirmation.component';\nimport { CheckoutRegisterUserComponent } from './components/checkout-page/checkout-order-confirmation/checkout-register-user/checkout-register-user.component';\nimport { CheckoutOrderSummaryComponent } from './components/checkout-page/checkout-order-summary/checkout-order-summary.component';\nimport { FailedOrderItemComponent } from './components/checkout-page/checkout-order-summary/failed-order-submit-modal/failed-order-item/failed-order-item.component';\nimport { FailedOrderSubmitModalComponent } from './components/checkout-page/checkout-order-summary/failed-order-submit-modal/failed-order-submit-modal.component';\nimport { PartyBoxComponent } from './components/checkout-page/checkout-order-summary/party-box/party-box.component';\nimport { PartyVerificationFailedModalComponent } from './components/checkout-page/checkout-order-summary/party-verification-failed-modal/party-verification-failed-modal.component';\nimport { CheckoutPageComponent } from './components/checkout-page/checkout-page.component';\nimport { BillingAddressFormComponent } from './components/checkout-page/checkout-payment/billing-address-form/billing-address-form.component';\nimport { CheckoutPaymentComponent } from './components/checkout-page/checkout-payment/checkout-payment.component';\nimport { CheckoutVoucherComponent } from './components/checkout-page/checkout-payment/checkout-voucher/checkout-voucher.component';\nimport { SavedPaypalPaymentComponent } from './components/checkout-page/checkout-payment/saved-paypal-payment/saved-paypal-payment.component';\nimport { CheckoutPersonalInfoComponent } from './components/checkout-page/checkout-personal-info/checkout-personal-info.component';\nimport { LoginModalComponent } from './components/checkout-page/checkout-personal-info/login-modal/login-modal.component';\nimport { MyAddressPopupComponent } from './components/checkout-page/checkout-personal-info/my-address-popup/my-address-popup.component';\nimport { ShippingAddressFormComponent } from './components/checkout-page/checkout-personal-info/shipping-address-form/shipping-address-form.component';\nimport { DeleteFromCartConfirmDialogComponent } from './components/delete-from-cart-confirm-dialog/delete-from-cart-confirm-dialog.component';\nimport { OrderLineComponent } from './components/order-line/order-line.component';\nimport { OrderLinesComponent } from './components/order-lines/order-lines.component';\n\n@NgModule({\n declarations: [\n CartPageComponent,\n AddToCartConfirmationComponent,\n DeleteFromCartConfirmDialogComponent,\n CheckoutPageComponent,\n CheckoutPersonalInfoComponent,\n CheckoutPaymentComponent,\n CheckoutOrderSummaryComponent,\n CheckoutOrderConfirmationComponent,\n OrderLineComponent,\n OrderLinesComponent,\n CartTotalsComponent,\n ShippingAddressFormComponent,\n BillingAddressFormComponent,\n MyAddressPopupComponent,\n LoginModalComponent,\n PartyBoxComponent,\n CheckoutRegisterUserComponent,\n CartPromotionMessageComponent,\n CheckoutVoucherComponent,\n FailedOrderSubmitModalComponent,\n FailedOrderItemComponent,\n CartItemUpdatedWarningModalComponent,\n SavedPaypalPaymentComponent,\n PartyVerificationFailedModalComponent,\n AppCartPfasPopupComponent,\n ],\n imports: [\n CommonModule,\n SharedModule,\n RouterModule,\n CartRoutingModule,\n ReactiveFormsModule,\n FormsModule,\n PaymentModule,\n ConsultantModule,\n ],\n exports: [CartPageComponent, AddToCartConfirmationComponent, CheckoutPageComponent],\n})\nexport class CartModule {}\n","\n
    \n \n
    \n
    {{ product.collection | titlecase }}
    \n
    {{ product.productName }}
    \n
    {{ product.sku }}
    \n
    \n \n \n
    \n
    Qty {{ product.quantity }}
    \n
    {{ totalPrice | phCurrency }}
    \n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CartRoutes } from '@core/constants/routes.const';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport { selectAddToCartConfirmModal } from '@core/store/cart';\nimport { AddToCartConfirmModel } from '@core/store/cart/cart-state-models';\nimport { setAddToCartConfirmModal } from '@core/store/cart/cart.actions';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-add-to-cart-confirmation',\n templateUrl: './add-to-cart-confirm-dialog.component.html',\n styleUrls: ['./add-to-cart-confirm-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AddToCartConfirmationComponent implements OnInit, OnDestroy {\n modalSubscription: Subscription;\n addToCartConfirmModal$: Observable;\n thumbnail = Thumbnail;\n\n modalConfig: ModalConfig = {\n title: $localize`The product is successfully added to cart`,\n dismissButtonLabel: $localize`View cart`,\n closeButtonLabel: $localize`Continue shopping`,\n onDismiss: this.onDismiss.bind(this),\n onClose: this.onClose.bind(this),\n onDismissHeader: this.onClose.bind(this),\n ngbModalOptions: {\n size: 'md',\n beforeDismiss: this.onClose.bind(this),\n },\n };\n\n totalPrice: number;\n\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n constructor(\n private router: Router,\n private store$: Store,\n private productUtil: ProductUtilService,\n ) {}\n\n ngOnInit(): void {\n this.addToCartConfirmModal$ = this.store$.select(selectAddToCartConfirmModal);\n this.modalSubscription = this.addToCartConfirmModal$.subscribe((state) => {\n if (state?.data) {\n this.totalPrice = this.productUtil.getProductPrice(state.data) * state.data.quantity;\n this.modalComponent.open();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.modalSubscription.unsubscribe();\n }\n\n onClose() {\n this.store$.dispatch(setAddToCartConfirmModal({ payload: null }));\n }\n\n onDismiss() {\n this.store$.dispatch(setAddToCartConfirmModal({ payload: null }));\n this.router.navigate([`/${CartRoutes.ShoppingCart}`]);\n }\n}\n","\n
    \n
    \n
    {{ consultantFinderText }}
    \n
    \n
    \n \n \n I know / have a consultant. Help me find them.\n \n
    \n \n \n I don’t know / don’t have a consultant. Help me find one.\n \n
    \n\n \n
    \n
    \n
    \n\n \n
    \n \n Consultant autoassign error, please use the Locate consultant option\n \n
    \n\n
    \n \n
    \n
    \n \n \n
    \n\n\n
    \n
    \n
    {{ extraHint[finderType] }}
    \n
    \n \n\n
    \n
    \n \n \n Search\n \n
    \n
    \n
    \n
    \n\n\n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n","/* eslint-disable max-len */\nimport {\n Component,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ConsultantFinderComponent } from '@consultant/consultant-finder/consultant-finder.component';\nimport { FindConsultantRequest, LocateConsultantRequest } from '@core/dto/consultant.dto';\nimport { ConsultantFinderType } from '@core/enums/consultant-finder-type.enum';\nimport { ConsultantLocatorErrorType } from '@core/enums/consultant-locator-error-type.enum';\nimport { Locale } from '@core/enums/locale';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport {\n selectConsultantFinder,\n selectConsultantFinderLoading,\n selectConsultantLocatorErrorType,\n} from '@core/store/consultant';\nimport {\n locateConsultant,\n resetConsultantLocatorErrorType,\n} from '@core/store/consultant/consultant.actions';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-consultant-finder-modal',\n templateUrl: './consultant-finder-modal.component.html',\n styleUrls: ['./consultant-finder-modal.component.scss'],\n})\nexport class ConsultantFinderModalComponent implements OnInit, OnDestroy {\n @Input() zipCode: string;\n @Input() hasAutomaticAssignOption: boolean = false;\n @Input() mandatory: boolean = false;\n @Input() showExtraHint: boolean = false;\n @Input()\n consultantFinderText: string = $localize`Please find a consultant using the below options.`;\n @Output() consultantSelected: EventEmitter = new EventEmitter();\n\n readonly LocatorErrorTypes = ConsultantLocatorErrorType;\n consultantLocatorError$: Observable;\n loading$: Observable;\n finderType: ConsultantFinderType;\n loadMoreButtonIsVisible: boolean;\n consultantFinderType = ConsultantFinderType;\n finderIsValid: boolean = false;\n filter: FindConsultantRequest | LocateConsultantRequest;\n skipFinderModal: boolean = false;\n nextStepListener: Subscription;\n\n optionsConfig: ModalConfig;\n finderConfig: ModalConfig;\n resultConfig: ModalConfig;\n\n readonly extraHint = {\n [ConsultantFinderType.find]: $localize`If you know a Consultant we can help connect you to their website for future shopping.`,\n [ConsultantFinderType.locate]: $localize`If you don't know a Consultant, we can help connect you with one for future shopping.`,\n };\n\n @ViewChild('optionsModal') private optionsModal: ModalComponent;\n @ViewChild('finderModal') private finderModal: ModalComponent;\n @ViewChild('resultModal') private resultModal: ModalComponent;\n @ViewChild('consultantFinder') private consultantFinder: ConsultantFinderComponent;\n\n constructor(\n private store$: Store,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {}\n\n ngOnInit(): void {\n this.initModalConfigs();\n\n this.consultantLocatorError$ = this.store$.select(selectConsultantLocatorErrorType);\n this.loading$ = this.store$.select(selectConsultantFinderLoading);\n }\n\n ngOnDestroy(): void {\n this.nextStepListener?.unsubscribe();\n }\n\n open() {\n this.optionsModal.open();\n }\n\n openFinder(type: ConsultantFinderType, loadMoreButtonIsVisible: boolean) {\n this.skipFinderModal = false;\n this.finderType = type;\n this.loadMoreButtonIsVisible = loadMoreButtonIsVisible;\n this.optionsModalClose();\n this.finderModal.open();\n }\n\n closeFinder() {\n this.finderModal.close();\n this.optionsModal.open();\n }\n\n search() {\n this.consultantFinder.submit();\n\n this.finderModal.close();\n this.resultModal.open();\n }\n\n resultBack() {\n this.resultModal.close();\n if (this.skipFinderModal) {\n this.optionsModal.open();\n } else {\n this.finderModal.open();\n }\n }\n\n onFinderValidChange(valid: boolean) {\n this.finderIsValid = valid;\n }\n\n onFinderSubmitted(value: FindConsultantRequest | LocateConsultantRequest) {\n this.filter = value;\n }\n\n notNow() {\n this.optionsModalClose();\n }\n\n autoAssign() {\n this.loadMoreButtonIsVisible = false;\n this.skipFinderModal = true;\n this.store$.dispatch(\n locateConsultant({\n payload: { zipCode: this.zipCode, cultureCode: this.localeId, pageNumber: 1, pageSize: 1 },\n }),\n );\n\n this.listenNextStep();\n }\n\n closeResult() {\n this.resultModal.close();\n this.consultantSelected.emit();\n }\n\n private initModalConfigs() {\n this.optionsConfig = {\n title: $localize`Assign consultant`,\n hideCloseButton: true,\n hideDismissButton: true,\n hideHeaderDismissButton: this.mandatory,\n ngbModalOptions: {\n size: 'lg',\n modalDialogClass: 'modal',\n backdrop: 'static',\n keyboard: !this.mandatory,\n },\n };\n\n this.finderConfig = {\n title: $localize`Find consultant`,\n hideCloseButton: true,\n hideDismissButton: true,\n hideHeaderDismissButton: this.mandatory,\n ngbModalOptions: {\n size: 'lg',\n modalDialogClass: 'modal',\n backdrop: 'static',\n keyboard: !this.mandatory,\n },\n };\n\n this.resultConfig = {\n title: $localize`Consultant(s)`,\n hideCloseButton: true,\n hideDismissButton: true,\n hideHeaderDismissButton: this.mandatory,\n ngbModalOptions: {\n size: 'lg',\n modalDialogClass: 'modal',\n backdrop: 'static',\n keyboard: !this.mandatory,\n },\n };\n }\n\n private listenNextStep(): void {\n this.nextStepListener = this.store$\n .select(selectConsultantFinder)\n .pipe(\n filter((finder) => !!finder.results.length),\n take(1),\n )\n .subscribe(() => {\n this.optionsModalClose();\n this.resultModal.open();\n });\n }\n\n private optionsModalClose(): void {\n this.nextStepListener?.unsubscribe();\n this.store$.dispatch(resetConsultantLocatorErrorType());\n this.optionsModal.close();\n }\n}\n","
    \n \n
    Sorry, we couldn't find the Consultant you're looking for.
    \n
    \n\n
    \n \n
    \n\n\n\n \n \n
    \n Select a consultant to continue the process\n
    \n
    Search result(s)
    \n\n
    \n \n \n \n \n
    \n \n \n \n \n \n
    \n
    \n
    \n\n\n
    \n \n
    {{ consultant.fullName }}
    \n Select and continue\n
    \n
    \n","import {\n AfterViewChecked,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { DefaultConsultantImagePlaceholderSrc } from '@core/constants/image-placeholders';\nimport { FindConsultantRequest, LocateConsultantRequest } from '@core/dto/consultant.dto';\nimport { ConsultantFinderType } from '@core/enums/consultant-finder-type.enum';\nimport { AppState } from '@core/store';\nimport { selectConsultantFinder } from '@core/store/consultant';\nimport { Consultant, ConsultantFinder } from '@core/store/consultant/consultant-state-models';\nimport {\n fetchCurrentConsultantByVanityName,\n findConsultant,\n locateConsultant,\n} from '@core/store/consultant/consultant.actions';\nimport { Store, select } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-consultant-finder-result',\n templateUrl: './consultant-finder-result.component.html',\n styleUrls: ['./consultant-finder-result.component.scss'],\n})\nexport class ConsultantFinderResultComponent implements OnInit, AfterViewChecked {\n @Input() filter: FindConsultantRequest | LocateConsultantRequest;\n @Input() finderType: ConsultantFinderType;\n @Input() loadMoreButtonIsVisible: boolean = true;\n @Output() consultantSelected: EventEmitter = new EventEmitter();\n\n readonly consultantFinderType = ConsultantFinderType;\n readonly imagePlaceholder = DefaultConsultantImagePlaceholderSrc;\n readonly ButtonText = {\n [ConsultantFinderType.find]: $localize`Load more`,\n [ConsultantFinderType.locate]: $localize`Search again`,\n };\n\n consultantFinder$: Observable;\n loading$: Observable;\n consultants$: Observable;\n\n @ViewChild('listWrapper') private listWrapper: ElementRef;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.consultantFinder$ = this.store$.select(selectConsultantFinder);\n this.loading$ = this.consultantFinder$.pipe(select((s) => s.loading));\n this.consultants$ = this.consultantFinder$.pipe(select((s) => s.results));\n }\n\n ngAfterViewChecked(): void {\n this.scrollToBottom();\n }\n\n selectConsultant(consultant: Consultant) {\n this.store$.dispatch(\n fetchCurrentConsultantByVanityName({\n vanityName: consultant.vanityName,\n filterCountry: true,\n }),\n );\n this.consultantSelected.emit();\n }\n\n loadMore() {\n if (this.finderType === ConsultantFinderType.find) {\n this.store$.dispatch(findConsultant({ payload: this.filter as FindConsultantRequest }));\n } else if (this.finderType === ConsultantFinderType.locate) {\n this.store$.dispatch(\n locateConsultant({\n payload: {\n ...this.filter,\n } as LocateConsultantRequest,\n }),\n );\n }\n }\n\n private scrollToBottom(): void {\n if (this.listWrapper?.nativeElement) {\n this.listWrapper.nativeElement.scroll({\n top: this.listWrapper.nativeElement.scrollHeight,\n left: 0,\n behavior: 'smooth',\n });\n }\n }\n}\n","
    \n
    \n Search for your consultant by name or location using the form below\n
    \n
    \n Please enter your ZIP Code and Preferred language so we can find you a consultant.\n
    \n
    \n\n
    \n
    \n \n \n \n \n
    \n
    \n\n\n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    * Required
    \n\n
    \n \n {{ ConsultantLocatorErrorMessage[errorType] }}\n \n
    \n
    \n
    \n\n\n
    \n
    \n \n \n\n \n \n\n \n\n \n \n\n \n
    \n
    \n
    \n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ConsultantLocatorErrorMessage } from '@core/constants/consultant-locator-error-message';\nimport { LanguagesLocale } from '@core/constants/locale';\nimport { FindConsultantRequest, LocateConsultantRequest } from '@core/dto/consultant.dto';\nimport { ConsultantFinderType } from '@core/enums/consultant-finder-type.enum';\nimport { ConsultantLocatorErrorType } from '@core/enums/consultant-locator-error-type.enum';\nimport { AppState } from '@core/store';\nimport { selectCountryStates } from '@core/store/address';\nimport { fetchCountryStates } from '@core/store/address/address.actions';\nimport { selectConsultantLocatorErrorType } from '@core/store/consultant';\nimport {\n findConsultant,\n locateConsultant,\n resetConsultantLocatorErrorType,\n} from '@core/store/consultant/consultant.actions';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { getFormValidationErrorMessage } from '@shared/utils/validation.utils';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nenum FinderFormKey {\n firstName = 'firstName',\n lastName = 'lastName',\n city = 'city',\n stateCode = 'stateCode',\n mobilePhoneNumber = 'mobilePhoneNumber',\n}\n\nenum LocatorFormKey {\n language = 'language',\n zipCode = 'zipCode',\n}\n\n@Component({\n selector: 'app-consultant-finder',\n templateUrl: './consultant-finder.component.html',\n styleUrls: ['./consultant-finder.component.scss'],\n})\nexport class ConsultantFinderComponent implements OnInit, OnDestroy, OnChanges {\n @Input() type: ConsultantFinderType;\n @Input() zipCode: string = '';\n @Output() valid: EventEmitter = new EventEmitter();\n @Output() submitted: EventEmitter =\n new EventEmitter();\n\n readonly FinderFormKey = FinderFormKey;\n readonly LocatorFormKey = LocatorFormKey;\n readonly ConsultantFinderType = ConsultantFinderType;\n readonly ConsultantLocatorErrorMessage = ConsultantLocatorErrorMessage;\n languages: SelectOption[] = [...new Set(environment.languages.map((l) => l.code))].map(\n (language) => ({ name: LanguagesLocale[language], value: language }),\n );\n\n countryStates$: Observable;\n consultantLocatorErrorType$: Observable;\n form: FormGroup;\n\n getValidationError = getFormValidationErrorMessage;\n\n private formSubscription: Subscription;\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n ) {}\n\n ngOnInit(): void {\n this.consultantLocatorErrorType$ = this.store$.select(selectConsultantLocatorErrorType);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.valid.emit(false);\n switch (changes.type.currentValue) {\n case ConsultantFinderType.find:\n this.initFindConsultant();\n break;\n\n case ConsultantFinderType.locate:\n this.initLocateConsultant();\n break;\n\n default:\n break;\n }\n }\n\n ngOnDestroy(): void {\n this.formSubscription?.unsubscribe();\n this.store$.dispatch(resetConsultantLocatorErrorType());\n }\n\n submit = () => {\n if (this.type === ConsultantFinderType.find) {\n this.submitted.emit(this.form.value);\n this.store$.dispatch(findConsultant({ payload: { ...this.form.value, pageNumber: 1 } }));\n } else {\n const request = {\n zipCode: this.form.value.zipCode,\n cultureCode: this.form.value.language,\n pageNumber: 1,\n } as LocateConsultantRequest;\n this.submitted.emit(request);\n this.store$.dispatch(locateConsultant({ payload: request }));\n }\n };\n\n private initFindConsultant() {\n this.store$.dispatch(fetchCountryStates());\n this.form = this.fb.group(\n {\n [FinderFormKey.firstName]: '',\n [FinderFormKey.lastName]: '',\n [FinderFormKey.city]: '',\n [FinderFormKey.stateCode]: '',\n [FinderFormKey.mobilePhoneNumber]: '',\n },\n { validators: this.customFindValidation },\n );\n\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectCountryStates));\n\n this.subscribeToStatusChanges();\n }\n\n private customFindValidation(formGroup: FormGroup) {\n return !!formGroup.get(FinderFormKey.firstName).value ||\n !!formGroup.get(FinderFormKey.lastName).value ||\n !!formGroup.get(FinderFormKey.city).value ||\n !!formGroup.get(FinderFormKey.stateCode).value ||\n !!formGroup.get(FinderFormKey.mobilePhoneNumber).value\n ? null\n : { required: true };\n }\n\n private initLocateConsultant() {\n this.form = this.fb.group({\n [LocatorFormKey.language]: this.languages[0].value,\n [LocatorFormKey.zipCode]: [this.zipCode, Validators.required],\n });\n this.valid.emit(this.form.valid);\n this.subscribeToStatusChanges();\n }\n\n private subscribeToStatusChanges() {\n this.formSubscription?.unsubscribe();\n this.formSubscription = this.form.statusChanges.pipe(distinctUntilChanged()).subscribe((s) => {\n if (s === 'VALID') {\n this.valid.emit(true);\n } else {\n this.valid.emit(false);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { selectConsultantState } from '@core/store/consultant';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConsultantGuardService implements CanActivate {\n constructor(private store$: Store, private router: Router) {}\n\n canActivate(): Observable {\n return this.store$.select(selectConsultantState).pipe(\n filter(({ isCurrentConsultantFetched }) => isCurrentConsultantFetched),\n map(({ currentConsultant }) => {\n if (!currentConsultant) {\n this.router.navigateByUrl('/');\n }\n return !!currentConsultant;\n }),\n );\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ConsultantFinderComponent } from '@consultant/consultant-finder/consultant-finder.component';\nimport { FindConsultantRequest, LocateConsultantRequest } from '@core/dto/consultant.dto';\nimport { ConsultantFinderType } from '@core/enums/consultant-finder-type.enum';\nimport { AppState } from '@core/store';\nimport { resetFindConsultantState } from '@core/store/consultant/consultant.actions';\nimport { Store } from '@ngrx/store';\n\n@Component({\n templateUrl: './consultant-finder-page.component.html',\n styleUrls: ['./consultant-finder-page.component.scss'],\n})\nexport class ConsultantFinderPageComponent implements OnInit {\n readonly ConsultantFinderType = ConsultantFinderType;\n finderIsValid: boolean = false;\n filter: FindConsultantRequest | LocateConsultantRequest;\n\n @ViewChild('consultantFinder') private consultantFinder: ConsultantFinderComponent;\n\n constructor(private store$: Store, private router: Router) {}\n\n ngOnInit(): void {\n this.store$.dispatch(resetFindConsultantState());\n }\n\n onFinderValidChange(valid: boolean) {\n this.finderIsValid = valid;\n }\n\n onFinderSubmitted(value: FindConsultantRequest | LocateConsultantRequest) {\n this.filter = value;\n }\n\n search() {\n this.consultantFinder.submit();\n }\n\n selected() {\n this.router.navigateByUrl('/');\n }\n}\n","
    \n
    \n

    Find a consultant

    \n
    \n\n \n\n
    \n Search\n
    \n\n
    \n Don't have a Consultant?\n Search for one near me>\n \n\n \n
    \n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ConsultantFinderComponent } from '@consultant/consultant-finder/consultant-finder.component';\nimport { FindConsultantRequest, LocateConsultantRequest } from '@core/dto/consultant.dto';\nimport { ConsultantFinderType } from '@core/enums/consultant-finder-type.enum';\nimport { AppState } from '@core/store';\nimport { resetFindConsultantState } from '@core/store/consultant/consultant.actions';\nimport { Store } from '@ngrx/store';\n\n@Component({\n templateUrl: './consultant-locator-page.component.html',\n styleUrls: ['./consultant-locator-page.component.scss'],\n})\nexport class ConsultantLocatorPageComponent implements OnInit {\n readonly ConsultantFinderType = ConsultantFinderType;\n finderIsValid: boolean = false;\n filter: FindConsultantRequest | LocateConsultantRequest;\n @ViewChild('consultantFinder') private consultantFinder: ConsultantFinderComponent;\n\n constructor(\n private store$: Store,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n this.store$.dispatch(resetFindConsultantState());\n }\n\n onFinderValidChange(valid: boolean) {\n this.finderIsValid = valid;\n }\n\n onFinderSubmitted(value: FindConsultantRequest | LocateConsultantRequest) {\n this.filter = value;\n }\n\n search() {\n this.consultantFinder.submit();\n }\n\n selected() {\n this.router.navigateByUrl('/');\n }\n}\n","
    \n
    \n

    Find a consultant

    \n
    \n\n \n\n
    \n Search\n
    \n\n
    \n Already know a Consultant?\n Search by name>\n\n \n
    \n","
    \n \n \n
  • {{ consultant.displayName }}\n
  • My open parties
  • \n \n
    \n \n
    \n\n No party found!\n
    \n
    \n
    \n \n {{ party.partyName }}\n
    \n Place an order\n
    \n
    \n
    \n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ConsultantRoutes, ProductRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport {\n selectCurrentConsultant,\n selectCurrentConsultantPartiesLoading,\n} from '@core/store/consultant';\nimport { Consultant, Party } from '@core/store/consultant/consultant-state-models';\nimport { selectParty } from '@core/store/consultant/consultant.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n templateUrl: './my-open-parties-pages.component.html',\n styleUrls: ['./my-open-parties-pages.component.scss'],\n})\nexport class MyOpenPartiesPagesComponent implements OnInit {\n currentConsultant$: Observable;\n partiesLoading$: Observable;\n\n myStoryPageRoute = ConsultantRoutes.MyStoryPageRoute;\n\n constructor(\n private store$: Store,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n this.currentConsultant$ = this.store$.select(selectCurrentConsultant);\n this.partiesLoading$ = this.store$.select(selectCurrentConsultantPartiesLoading);\n }\n\n selectParty(party: Party) {\n this.store$.dispatch(selectParty({ party }));\n this.router.navigateByUrl(`/${ProductRoutes.Products}`);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { DefaultLayoutComponent } from '@base/components/layout/default-layout/default-layout.component';\nimport { ConsultantRoutes } from '@core/constants/routes.const';\nimport { ConsultantGuardService } from '@core/services/consultant-guard.service';\nimport { ConsultantFinderPageComponent } from './consultant-finder-page/consultant-finder-page.component';\nimport { ConsultantLocatorPageComponent } from './consultant-locator-page/consultant-locator-page.component';\nimport { MyOpenPartiesPagesComponent } from './my-open-parties-pages/my-open-parties-pages.component';\nimport { MyStoryPageComponent } from './my-story-page/my-story-page.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: DefaultLayoutComponent,\n children: [\n {\n path: ConsultantRoutes.MyStoryPageRoute,\n component: MyStoryPageComponent,\n canActivate: [ConsultantGuardService],\n data: { title: $localize`PH - My Story Page - Title` },\n },\n {\n path: ConsultantRoutes.MyOpenPartiesRoute,\n component: MyOpenPartiesPagesComponent,\n canActivate: [ConsultantGuardService],\n data: { title: $localize`PH - My Open Parties Page - Title` },\n },\n {\n path: 'consultant-finder',\n component: ConsultantFinderPageComponent,\n data: {\n title: $localize`Search for a Consultant`,\n description: $localize`Search for a Consultant - Description`,\n },\n },\n {\n path: 'consultant-locator',\n component: ConsultantLocatorPageComponent,\n data: {\n title: $localize`PH - Consultant Locator Page - Title`,\n description: $localize`PH - Consultant Locator Page - Description`,\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ConsultantRoutingModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { DefaultImagePlaceholderSrc } from '@core/constants/image-placeholders';\nimport { AppState } from '@core/store';\nimport { selectCurrentConsultant } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n templateUrl: './my-story-page.component.html',\n styleUrls: ['./my-story-page.component.scss'],\n})\nexport class MyStoryPageComponent implements OnInit {\n imagePlaceholder = DefaultImagePlaceholderSrc;\n consultant$: Observable;\n subscription: Subscription;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.consultant$ = this.store$.select(selectCurrentConsultant);\n }\n}\n","
    \n \n \n
    \n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ConsultantRoutingModule } from './consultant-routing.module';\nimport { MyStoryPageComponent } from './my-story-page/my-story-page.component';\nimport { SharedModule } from '@shared/shared.module';\nimport { MyStoryBannerComponent } from './my-story-banner/my-story-banner.component';\nimport { ConsultantWidgetComponent } from './consultant-widget/consultant-widget.component';\nimport { ConsultantFinderModalComponent } from './consultant-finder-modal/consultant-finder-modal.component';\nimport { ConsultantFinderComponent } from './consultant-finder/consultant-finder.component';\nimport { ConsultantFinderResultComponent } from './consultant-finder-result/consultant-finder-result.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MyOpenPartiesPagesComponent } from './my-open-parties-pages/my-open-parties-pages.component';\nimport { ConsultantFinderPageComponent } from './consultant-finder-page/consultant-finder-page.component';\nimport { ConsultantLocatorPageComponent } from './consultant-locator-page/consultant-locator-page.component';\n@NgModule({\n declarations: [\n MyStoryPageComponent,\n MyStoryBannerComponent,\n ConsultantWidgetComponent,\n ConsultantFinderModalComponent,\n ConsultantFinderComponent,\n ConsultantFinderResultComponent,\n MyOpenPartiesPagesComponent,\n ConsultantFinderPageComponent,\n ConsultantLocatorPageComponent,\n ],\n imports: [CommonModule, ConsultantRoutingModule, SharedModule, ReactiveFormsModule],\n exports: [MyStoryBannerComponent, ConsultantWidgetComponent, ConsultantFinderModalComponent],\n})\nexport class ConsultantModule {}\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'app-bank-transfer-error',\n templateUrl: './bank-transfer-error.component.html',\n styleUrls: ['./bank-transfer-error.component.scss'],\n})\nexport class BankTransferErrorComponent {\n @Output() resetPayment: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n resetPaymentClick() {\n this.resetPayment.emit();\n }\n}\n","
    \n
    \n
    \n \n Payment error\n \n \n
    \n
    \n Change\n
    \n
    \n
    Something went wrong! Please try again later.
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { Observable } from 'rxjs/internal/Observable';\n\n@Component({\n template: '',\n})\n/** Base component for card payment method handling */\nexport abstract class CardPaymentMethodHandlerComponent extends BaseComponent {\n /** For payment method creation only */\n @Input() createOnly: boolean = false;\n\n /** For payment method creation default card */\n @Input() makeDefault: boolean = false;\n\n /** The payment handler that implements payment related functions */\n @Input() paymentHandler: PaymentHandlerBase;\n\n /** Listener for payment drop-in component filled out data validity (when data is valid the payment is requestable) */\n @Output() isPaymentMethodRequestable: EventEmitter = new EventEmitter();\n\n /** Requests a Payment Method Object from third party and stores it and emits the success or fail status.\n * The PMO includes the properties needed for our side to bind and be able to make the transaction */\n abstract requestPaymentMethodObject(): Observable;\n\n /** Creates a payment method from our side with the third party given properties */\n abstract createPaymentMethod(): void;\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { CardholderName } from '@core/models/cardholder-name.model';\nimport { LoggerService } from '@core/services/logger.service';\nimport { CardPaymentMethodHandlerComponent } from '@payment/components/card-payment-method-handler.component';\nimport { Subject, Subscription } from 'rxjs';\nimport { DropinInstance } from '../../../core/models/dropin-instance.model';\n\n@Component({\n template: '',\n})\nexport abstract class CardPaymentProviderBaseComponent\n extends CardPaymentMethodHandlerComponent\n implements OnChanges, OnDestroy\n{\n @Input() isVisible: boolean = false;\n @Input() paymentToken: string;\n @Input() paymentProvider: PaymentProviderType = PaymentProviderType.Default;\n @Input() cardholderName: CardholderName;\n @Input() disableInput: boolean = false;\n\n @Output() loading: EventEmitter = new EventEmitter();\n @Output() dropInComponentInitialized: EventEmitter<\n CardPaymentProviderBaseComponent\n > = new EventEmitter();\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n protected _dropInInstance: DropinInstance | undefined;\n\n /** Third party instance payment request process was successful */\n protected requestPaymentSuccessSubject: Subject = new Subject();\n\n constructor(public loggerService: LoggerService) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.disableInput) this.checkInputFocusability();\n }\n\n /** Create payment method by card on BE side and stores the result in store*/\n public createPaymentMethod(): void {\n this.paymentHandler.createPaymentMethod();\n }\n\n public initDropinUiByToken(\n provider: PaymentProviderType,\n cardholderFirstName: string = '',\n cardholderLastName: string = '',\n formIdType?: KushkiFormIdTypes,\n ): Subscription {\n this.loading.emit(true);\n return this.paymentHandler\n .initToken(provider, cardholderFirstName, cardholderLastName, formIdType)\n .subscribe(\n (token) => {\n if (this.dropInContainer.nativeElement) {\n const cardholderName =\n cardholderFirstName && cardholderLastName\n ? `${cardholderFirstName} ${cardholderLastName}`\n : '';\n this.initDropinInstance(\n token,\n cardholderName,\n this.paymentHandler.isCvvRequired(),\n this.paymentHandler.isAvsRequired(),\n this.paymentHandler.collectRiskDataFromInput(),\n );\n } else {\n this.loading.emit(false);\n this.loggerService.error(\n 'The payment provider container is empty and can not initialize it by the token!',\n );\n }\n },\n () => {\n this.loading.emit(false);\n },\n );\n }\n\n /** The instance that is crated by the third party to be able to access their functionalities */\n public abstract get dropInInstance(): T;\n\n /** The container HTML element in which one the instance is injected */\n public abstract get dropInContainer(): ElementRef;\n\n public abstract initDropinInstance(\n token: string,\n cardholderName: string,\n isCvvRequired?: boolean,\n isAvsRequired?: boolean,\n collectRiskDataFromInput?: boolean,\n ): void;\n\n public abstract resetToken(cardholderFirstName?: string, cardholderLastName?: string): void;\n\n /** Disables/enables card payment inputs based on disableInput */\n public checkInputFocusability(): void {\n const inputs = this.getCardPaymentInputs();\n if (inputs === undefined) return;\n\n if (this.disableInput) {\n inputs.forEach((element) => {\n element.setAttribute('tabindex', '-1');\n element.setAttribute('disabled', 'disabled');\n });\n } else {\n inputs.forEach((element) => {\n element.removeAttribute('tabindex');\n element.removeAttribute('disabled');\n });\n }\n }\n\n /**\n * @returns all the input elements or iframes used in a card payment that need to be disabled\n */\n public abstract getCardPaymentInputs(): Array | undefined;\n}\n","
    \n
    \n
    \n \n \n
    \n
    \n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n LOCALE_ID,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Locale } from '@core/enums/locale';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { BraintreeExtendedOverrides } from '@core/models/braintree-override-fields.model';\nimport { BraintreeDropinUi } from '@core/models/dropin-instance.model';\nimport { LogCardAttemptData } from '@core/models/log-card-attempt-data.model';\nimport { LoggerService } from '@core/services/logger.service';\nimport { PaymentInfo } from '@core/store/payment/payment-state-models';\nimport { CardPaymentProviderBaseComponent } from '@payment/components/card-payment-provider-base-component';\nimport { getLanguage } from '@shared/utils/locale-utils';\nimport * as braintree from 'braintree-web-drop-in';\nimport { Dropin, cardPaymentMethodPayload } from 'braintree-web-drop-in';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\n\n/**\n * Braintree card payment component where the paymentHandler input is required!\n */\n@Component({\n selector: 'app-braintree',\n templateUrl: './braintree.component.html',\n styleUrls: ['./braintree.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class BraintreeComponent\n extends CardPaymentProviderBaseComponent\n implements OnInit, AfterViewInit, OnDestroy, OnChanges\n{\n @Output()\n cardAttempt: EventEmitter = new EventEmitter();\n\n @ViewChild('BraintreeDropInContainer') braintreeDivContainer: ElementRef;\n\n constructor(\n @Inject(LOCALE_ID) private localeId: Locale,\n public loggerService: LoggerService,\n private toastr: ToastrService,\n ) {\n super(loggerService);\n }\n\n ngOnInit(): void {\n this.loading.emit(true);\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n this.initDropinUiByToken(\n PaymentProviderType.Braintree,\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n ),\n );\n }\n\n public get dropInInstance(): BraintreeDropinUi {\n return this._dropInInstance as BraintreeDropinUi;\n }\n\n public get dropInContainer(): ElementRef {\n return this.braintreeDivContainer;\n }\n\n public initDropinInstance(\n token: string,\n cardholderName: string = '',\n isCvvRequired: boolean,\n isAvsRequired: boolean,\n collectRiskDataFromInput: boolean,\n ): void {\n this.loadBraintreeDropIn(\n token,\n isCvvRequired,\n isAvsRequired,\n collectRiskDataFromInput,\n cardholderName,\n );\n }\n\n public requestPaymentMethodObject(): Observable {\n this.dropInInstance.requestPaymentMethod((err, payload: cardPaymentMethodPayload) => {\n const isSuccess: boolean = err ? false : true;\n this.cardAttempt.emit({ success: isSuccess, response: JSON.stringify(err) });\n const paymentInfo = err ? undefined : this.buildPaymentInfo(payload);\n this.paymentHandler.handleRequestedPaymentMethodObject(err, paymentInfo);\n this.requestPaymentSuccessSubject.next(isSuccess);\n });\n\n return this.requestPaymentSuccessSubject.asObservable();\n }\n\n public resetToken(cardholderFirstName: string = '', cardholderLastName: string = ''): void {\n this.dropInInstance.teardown().then(() => {\n this.loading.emit(true);\n this.paymentHandler.resetToken();\n this.initDropinUiByToken(\n PaymentProviderType.Braintree,\n cardholderFirstName,\n cardholderLastName,\n );\n });\n }\n\n public getCardPaymentInputs(): Array | undefined {\n if (this.braintreeDivContainer === undefined) return;\n const iframes = Array.from(\n this.braintreeDivContainer.nativeElement.querySelectorAll('iframe'),\n ) as Array;\n const inputs = Array.from(this.braintreeDivContainer.nativeElement.querySelectorAll('input'));\n\n return iframes.concat(inputs);\n }\n\n private loadBraintreeDropIn(\n token: string,\n isCvvRequired: boolean,\n isAvsRequired: boolean,\n collectRiskDataFromInput: boolean,\n cardholderName: string = '',\n ): void {\n if (token) {\n const lang = getLanguage(this.localeId);\n const callback = (err, dropInInstance: Dropin): void => {\n if (err) {\n this.toastr.error(\n $localize`Failed to finalize Braintree payment! Please retry or contact the admin!`,\n $localize`Card payment error!`,\n );\n this.loggerService.error(err);\n return;\n }\n\n if (dropInInstance.isPaymentMethodRequestable()) {\n this.isPaymentMethodRequestable.emit(true);\n }\n\n this.handleIsPaymentMethodRequestable(dropInInstance);\n this.checkInputFocusability();\n\n this._dropInInstance = dropInInstance;\n this.loading.emit(false);\n this.dropInComponentInitialized.emit(this);\n };\n\n braintree.create(\n {\n authorization: token,\n container: this.dropInContainer.nativeElement,\n dataCollector: true,\n locale: lang,\n preselectVaultedPaymentMethod: true,\n card: {\n overrides: this.getBraintreeOverrides(\n isCvvRequired,\n isAvsRequired,\n collectRiskDataFromInput,\n cardholderName,\n ),\n cardholderName: {\n required: true,\n },\n },\n },\n callback,\n );\n } else {\n this.loggerService.error('Braintree: Not initialized token');\n }\n }\n\n private handleIsPaymentMethodRequestable(dropInInstance: Dropin) {\n dropInInstance.on('paymentMethodRequestable', () => {\n this.isPaymentMethodRequestable.emit(true);\n });\n dropInInstance.on('noPaymentMethodRequestable', () => {\n this.isPaymentMethodRequestable.emit(false);\n });\n }\n\n private buildPaymentInfo(payload: cardPaymentMethodPayload) {\n return {\n nonce: payload.nonce,\n firstFour: payload.details.bin.substr(0, 4),\n lastFour: payload.details.lastFour,\n deviceData: this.encodeDeviceData(payload.deviceData),\n cardholderName: payload.details.cardholderName,\n expirationMonth: payload.details.expirationMonth,\n expirationYear: payload.details.expirationYear,\n default: this.makeDefault,\n };\n }\n\n // TODO: PHS-4246 - Use braintree.cardCreateOptions['overrides'] model instead of custom one\n private getBraintreeOverrides(\n isCvvRequired: boolean,\n isAvsRequired: boolean,\n collectRiskDataFromInput: boolean,\n cardholderName: string = '',\n ): BraintreeExtendedOverrides {\n let result: BraintreeExtendedOverrides = {\n fields: {\n postalCode: {\n minlength: 5,\n },\n cardholderName: {\n prefill: cardholderName,\n },\n },\n };\n\n if (!isCvvRequired) {\n result.fields.cvv = null;\n }\n\n // PHS-9137 - As a hotfix, hiding the ZIP code is disabled, originally: isAvsRequired && !collectRiskDataFromInput\n const showPostalCodeField = true;\n\n if (!showPostalCodeField) {\n result.fields.postalCode = null;\n }\n\n return result;\n }\n\n /** Encode Braintree deviceData.\n * @deviceData a string that contains a json ex: \"{\\\"correlation_id\\\":\\\"d159f01c3cd272dcb03d0939964ef77d\\\"}\"\n */\n private encodeDeviceData(deviceData: string | undefined | null): string | undefined | null {\n /* Have to encode the deviceData otherwise it will be rejected by Azure Application Gateway WAF.\n On BE will be decoded */\n return deviceData ? encodeURIComponent(deviceData) : undefined;\n }\n}\n","
    \n
    \n \n
    \n
    \n \n
    \n
    \n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PayPalDropinUi } from '@core/models/dropin-instance.model';\nimport { LogCardAttemptData } from '@core/models/log-card-attempt-data.model';\nimport { LoggerService } from '@core/services/logger.service';\nimport { PaymentInfo } from '@core/store/payment/payment-state-models';\nimport { environment } from '@env';\nimport { CardPaymentProviderBaseComponent } from '@payment/components/card-payment-provider-base-component';\nimport {\n IOnApproveCallbackData,\n IOrderDetails,\n IPayPalConfig,\n NgxPaypalComponent,\n} from 'ngx-paypal';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n/**\n * PayPal dropin-ui that implements the PayPal buttons and the corresponding handlers.\n * - In case of PayPal on their dropin-ui we have to call an extra step compared to the other providers that we use.\n * This is the order creation step and it's called when we click on PayPal or Card Payment buttons. Besides that\n * we can't take the control of their submit button, so we have to click on it - no matters if we have another\n * Next or Submit button.\n * - In our general PMO request architecture we can take the control of the dropin-ui submit where we request the PMO in\n * our requestPaymentMethodObject and we store the payment info data and emit successful or fail status.\n * Here the PMO creation happens fully on PayPal side, so we store the results and late on by our flow we are able\n * to pass to our PMO request logic.\n */\n@Component({\n selector: 'app-pay-pal',\n templateUrl: './pay-pal.component.html',\n styleUrls: ['./pay-pal.component.scss'],\n})\nexport class PayPalComponent\n extends CardPaymentProviderBaseComponent\n implements OnInit, AfterViewInit, OnDestroy, OnChanges\n{\n @Input() isCardPaymentEnabled: boolean = false;\n @Output() isPaymentApproved: EventEmitter = new EventEmitter();\n\n @Output() cardAttempt: EventEmitter = new EventEmitter();\n\n @ViewChild('PayPalDropInContainer') payPalDivContainer: ElementRef;\n @ViewChild('payPalElement') paypalInstance?: NgxPaypalComponent;\n isLoading: boolean = false;\n readonly DefaultDisableFunding =\n 'paylater,bancontact,blik,eps,giropay,ideal,mercadopago,mybank,p24,sepa,sofort,venmo';\n readonly DisableCardPayment = 'card,';\n\n public payPalConfig?: IPayPalConfig;\n\n /** Stores the Payment Method Object request status. */\n public isPmoRequestSuccessful = false;\n\n private locale: string = environment.languages[0].code.replace('-', '_');\n\n ngOnInit(): void {\n this.loading.emit(true);\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(this.initDropinUiByToken(PaymentProviderType.PayPal));\n }\n\n onScriptLoaded(): void {\n this.isLoading = true;\n this.loading.emit(true);\n this.detectChanges();\n }\n\n constructor(\n public loggerService: LoggerService,\n private cdRef: ChangeDetectorRef,\n ) {\n super(loggerService);\n }\n\n public get dropInInstance(): PayPalDropinUi {\n return this._dropInInstance as PayPalDropinUi;\n }\n\n public get dropInContainer(): ElementRef {\n return this.payPalDivContainer;\n }\n\n public initDropinInstance(token: string): void {\n this._dropInInstance = this.paypalInstance;\n this.dropInComponentInitialized.emit(this);\n const disableFunding = this.isCardPaymentEnabled\n ? this.DefaultDisableFunding\n : this.DisableCardPayment + this.DefaultDisableFunding;\n\n this.loggerService.logTimerStart('pay-pal init');\n /** Note: The authorization happens on our server side by createPaymentMethod in payment handlers */\n this.payPalConfig = {\n clientId: token,\n currency: environment.currency,\n advanced: {\n commit: 'true',\n extraQueryParams: [\n {\n name: 'intent',\n value: 'authorize',\n },\n {\n name: 'locale',\n value: this.locale,\n },\n {\n name: 'disable-funding',\n value: disableFunding,\n },\n ],\n },\n createOrderOnServer: () => {\n this.isLoading = true;\n this.loading.emit(true);\n return this.paymentHandler\n .createOrder()\n .pipe(\n tap(() => {\n this.isLoading = false;\n this.loading.emit(false);\n }),\n )\n .toPromise();\n },\n onApprove: (data: IOnApproveCallbackData, actions) => {\n this.isPaymentMethodRequestable.emit(true);\n\n actions.order\n .get()\n .then((details: IOrderDetails) => {\n const objectFromResponse = {\n data: data,\n actions: actions,\n };\n this.cardAttempt.emit({ success: true, response: JSON.stringify(objectFromResponse) });\n\n const paymentInfo = {\n order: {\n orderId: data.orderID,\n },\n cardholderName: details.payer.name.given_name + ' ' + details.payer.name.surname,\n email: details.payer.email_address,\n } as PaymentInfo;\n this.paymentHandler.handleRequestedPaymentMethodObject(null, paymentInfo);\n this.isPmoRequestSuccessful = true;\n this.isPaymentApproved.emit(this.isPmoRequestSuccessful);\n this.detectChanges();\n })\n .catch((error) => {\n this.cardAttempt.emit({ success: false, response: error });\n this.paymentHandler.handleRequestedPaymentMethodObject(error, null);\n this.isPmoRequestSuccessful = false;\n this.isPaymentApproved.emit(this.isPmoRequestSuccessful);\n this.detectChanges();\n });\n },\n onError: (err) => {\n this.loggerService.logTimerEnd('pay-pal init');\n this.cardAttempt.emit({ success: false, response: err });\n this.paymentHandler.handleRequestedPaymentMethodObject(err, null);\n this.isPmoRequestSuccessful = false;\n this.isPaymentApproved.emit(this.isPmoRequestSuccessful);\n this.detectChanges();\n },\n onInit: () => {\n this.loggerService.logTimerEnd('pay-pal init');\n this.isLoading = false;\n this.loading.emit(false);\n },\n };\n this.detectChanges();\n }\n\n public resetToken(): void {\n /*\n Note: We don't have to reset the token, because the clientId will be the same, but as we create a new order by\n clicking on the buttons will create anyway a new order\n */\n }\n\n public getCardPaymentInputs(): Array | undefined {\n const iframes = this.payPalDivContainer?.nativeElement.querySelectorAll('iframe');\n if (iframes !== undefined) return Array.from(iframes);\n }\n\n requestPaymentMethodObject(): Observable {\n /* As mentioned in the component description the PMO is already created by PayPal when we get here - so we imitate\n the execution by small time out and returning back the status of PMO creation */\n setTimeout(() => {\n this.requestPaymentSuccessSubject.next(this.isPmoRequestSuccessful);\n }, 200);\n return this.requestPaymentSuccessSubject.asObservable();\n }\n\n private detectChanges() {\n // https://github.com/webcomponents/polyfills/issues/238\n this.cdRef.detectChanges();\n }\n}\n","export enum NexioEventType {\n Loaded = 'loaded',\n ErrorEvent = 'error',\n CardSavedEvent = 'cardSaved',\n FromValidationEvent = 'formValidations',\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostListener,\n OnChanges,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { NexioEventType } from '@core/enums/nexio-event-types.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { NexioDropinUi } from '@core/models/dropin-instance.model';\nimport { LoggerService } from '@core/services/logger.service';\nimport {\n CardSavedErrorEvent,\n CardSavedEvent,\n PaymentInfo,\n} from '@core/store/payment/payment-state-models';\nimport { environment } from '@env';\nimport { CardPaymentProviderBaseComponent } from '@payment/components/card-payment-provider-base-component';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-nexio',\n templateUrl: './nexio.component.html',\n styleUrls: ['./nexio.component.scss'],\n})\nexport class NexioComponent\n extends CardPaymentProviderBaseComponent\n implements OnInit, AfterViewInit, OnDestroy, OnChanges\n{\n @ViewChild('NexioCardIframe') nexioIframe: ElementRef;\n readonly NexioFrameId: string = 'nexio-frame-element-id';\n readonly NexioFrameWidth: string = '100%';\n readonly NexioFrameHeight: number = 500;\n public readonly NexioFrameBorder = 0;\n\n private readonly IframeSaveCardUrl: string = `${environment.nexioPaymentApiUri}/pay/v3/saveCard`;\n private readonly ReturnHtml: string = '&shouldReturnHtml=true';\n private readonly NexioInitTimeoutMilliseconds: number = 500;\n\n constructor(\n public loggerService: LoggerService,\n private toastr: ToastrService,\n ) {\n super(loggerService);\n }\n\n ngOnInit(): void {\n this.loading.emit(true);\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add();\n this.initDropinUiByToken(\n PaymentProviderType.Nexio,\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n );\n }\n\n get dropInInstance(): NexioDropinUi {\n return this._dropInInstance as NexioDropinUi;\n }\n\n get dropInContainer(): ElementRef {\n return this.nexioIframe;\n }\n\n @HostListener('window:message', ['$event'])\n nexioIframeChangeListener(event: any): void {\n if (event.origin === environment.nexioPaymentApiUri) {\n const eventType = event.data.event;\n const eventData = event.data.data;\n let paymentInfo: PaymentInfo | undefined;\n switch (eventType) {\n case NexioEventType.Loaded:\n this.loading.emit(false);\n break;\n case NexioEventType.ErrorEvent:\n const cardSavedError = eventData as CardSavedErrorEvent;\n this.loggerService.error(`Nexio card payment error: ${cardSavedError?.message}`);\n\n paymentInfo = {\n cardSaveRequest: {\n cardSaved: null,\n error: cardSavedError,\n },\n } as PaymentInfo;\n this.paymentHandler.handleRequestedPaymentMethodObject(null, paymentInfo);\n this.requestPaymentSuccessSubject.next(false);\n break;\n\n case NexioEventType.FromValidationEvent:\n this.isPaymentMethodRequestable.emit(eventData?.isFormValid);\n break;\n\n case NexioEventType.CardSavedEvent:\n const cardSaved = eventData as CardSavedEvent;\n paymentInfo = {\n cardSaveRequest: {\n cardSaved: cardSaved,\n error: null,\n },\n cardholderName: cardSaved.card.cardHolderName,\n firstFour: cardSaved.token.firstSix.substring(0, 4),\n lastFour: cardSaved.token.lastFour,\n expirationMonth: String(cardSaved.card.expirationMonth),\n expirationYear: String(cardSaved.card.expirationYear),\n } as PaymentInfo;\n this.paymentHandler.handleRequestedPaymentMethodObject(null, paymentInfo);\n this.requestPaymentSuccessSubject.next(true);\n break;\n }\n }\n }\n\n initDropinInstance(token: string): void {\n this.initIframeSource(token);\n }\n\n requestPaymentMethodObject(): Observable {\n this.submitNexioIframe();\n return this.requestPaymentSuccessSubject.asObservable();\n }\n\n resetToken(cardholderFirstName: string = '', cardholderLastName: string = ''): void {\n this.loading.emit(true);\n this.paymentHandler.resetToken();\n this.cleanIframeSource();\n this.initDropinUiByToken(PaymentProviderType.Nexio, cardholderFirstName, cardholderLastName);\n }\n\n public getCardPaymentInputs(): Array | undefined {\n const iframe = this.nexioIframe?.nativeElement;\n if (iframe !== undefined) return [iframe];\n }\n\n private initIframeSource(token: string): void {\n if (!!token) {\n const oneTimeUseToken = `?token=${token}`;\n const url = this.IframeSaveCardUrl + oneTimeUseToken + this.ReturnHtml;\n\n setTimeout(() => {\n if (!!this.nexioIframe) {\n const htmlIframe = this.nexioIframe.nativeElement as HTMLIFrameElement;\n htmlIframe.src = url;\n this._dropInInstance = htmlIframe;\n this.dropInComponentInitialized.emit(this);\n } else {\n this.loggerService.error('Nexio: Not initialized Iframe!');\n }\n }, this.NexioInitTimeoutMilliseconds);\n } else {\n this.loggerService.error('Nexio: Not initialized token');\n }\n }\n\n private cleanIframeSource(): void {\n const htmlIframe = this.nexioIframe.nativeElement as HTMLIFrameElement;\n htmlIframe.src = 'about:blank';\n }\n\n private submitNexioIframe(): void {\n this.dropInInstance.contentWindow?.postMessage('posted', environment.nexioPaymentApiUri);\n }\n}\n","
    \n \n
    \n","/* eslint-disable no-unused-vars */\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { KushkiDropinUi } from '@core/models/dropin-instance.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { LoggerService } from '@core/services/logger.service';\nimport { PaymentInfo } from '@core/store/payment/payment-state-models';\nimport { CardPaymentProviderBaseComponent } from '@payment/components/card-payment-provider-base-component';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Component({\n selector: 'app-kushki',\n templateUrl: './kushki.component.html',\n styleUrls: ['./kushki.component.scss'],\n})\nexport class KushkiComponent\n extends CardPaymentProviderBaseComponent\n implements AfterViewInit, OnChanges, OnDestroy\n{\n @Input() amount: number;\n @Input() kushkiFormIdType: KushkiFormIdTypes = KushkiFormIdTypes.Card;\n @Input() hasKushkiSavedPayment: boolean = false;\n @Output() isPaymentApproved: EventEmitter = new EventEmitter();\n\n readonly KushkiFormId: string = 'kushkiForm';\n\n /** Have to adjust the kushki iframe height, because it cuts the bottom of the content */\n readonly KushkiHeightIncreasement = 10;\n\n kushki: KushkiDropinUi;\n\n private publicMerchantId: string;\n private isTestEnvironment: boolean;\n private kushkiKajitaUrl: string;\n private requestPaymentSuccessSubjectKushki: BehaviorSubject =\n new BehaviorSubject(false);\n\n @ViewChild('KushkiDropinContainer') private kushkiDivContainer: ElementRef;\n @ViewChild('KushkiForm') private kushkiForm: ElementRef;\n\n @HostListener('window:message', ['$event'])\n kushkiIframeChnageListener(event: any): void {\n if (\n event.origin === this.kushkiKajitaUrl &&\n typeof event.data === 'string' &&\n event.data.includes('parameters')\n ) {\n const token = event.data.split(',')[0].split(':')[1];\n const paymentInfo: PaymentInfo = {\n nonce: token,\n };\n this.paymentHandler.handleRequestedPaymentMethodObject(null, paymentInfo);\n this.requestPaymentSuccessSubjectKushki.next(true);\n this.isPaymentMethodRequestable.emit(true);\n this.isPaymentApproved.emit(true);\n }\n\n if (typeof event.data === 'string' && event.data.includes('height')) {\n this.increaseKushkiContainerHeight();\n }\n }\n\n constructor(\n appInitService: AppInitService,\n loggerService: LoggerService,\n private renderer: Renderer2,\n ) {\n super(loggerService);\n this.publicMerchantId = appInitService.Settings.ec.kushkiPublicMerchantId;\n this.isTestEnvironment = appInitService.Settings.ec.kushkiKajitaIsTestEnvironment;\n this.kushkiKajitaUrl = appInitService.Settings.ec.kushkiKajitaUrl;\n }\n\n ngAfterViewInit(): void {\n this.initDropinUiByToken(PaymentProviderType.Kushki, '', '', this.kushkiFormIdType);\n if (this.hasKushkiSavedPayment) {\n this.requestPaymentSuccessSubjectKushki.next(true);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.kushkiFormIdType?.currentValue && changes.kushkiFormIdType?.previousValue) {\n this.resetToken();\n }\n if (changes.hasKushkiSavedPayment?.currentValue) {\n this.requestPaymentSuccessSubjectKushki.next(true);\n }\n }\n\n ngOnDestroy(): void {\n this.isPaymentApproved.emit(false);\n }\n\n get dropInInstance(): KushkiDropinUi {\n return this.kushki;\n }\n\n get dropInContainer(): ElementRef {\n return this.kushkiDivContainer;\n }\n\n initDropinInstance(\n token: string,\n cardholderName: string,\n isCvvRequired?: boolean,\n isAvsRequired?: boolean,\n collectRiskDataFromInput?: boolean,\n ): void {\n if (token && this.publicMerchantId) {\n this.requestPaymentSuccessSubjectKushki.next(false);\n this.loading.emit(false);\n this.renderer.setAttribute(this.kushkiForm.nativeElement, 'action', 'javascript:void(0)');\n this.kushki = new KushkiCheckout({\n kformId: token,\n form: this.KushkiFormId,\n publicMerchantId: this.publicMerchantId,\n inTestEnvironment: this.isTestEnvironment,\n amount: {\n subtotalIva: 0,\n subtotalIva0: this.amount,\n iva: 0,\n currency: 'MXN',\n },\n });\n this.dropInComponentInitialized.emit(this);\n this.checkInputFocusability();\n }\n }\n\n resetToken(cardholderFirstName?: string, cardholderLastName?: string): void {\n this.requestPaymentSuccessSubjectKushki.next(false);\n this.paymentHandler.resetToken();\n this.kushkiForm?.nativeElement.replaceChildren();\n this.isPaymentApproved.emit(false);\n this.initDropinUiByToken(PaymentProviderType.Kushki, '', '', this.kushkiFormIdType);\n }\n\n getCardPaymentInputs(): Array | undefined {\n return [];\n }\n\n checkInputFocusability(): void {\n const iframe = this.kushkiForm?.nativeElement.querySelector('iframe');\n if (!iframe) return;\n if (this.disableInput) {\n iframe.setAttribute('tabindex', '-1');\n } else {\n iframe.removeAttribute('tabindex');\n }\n }\n\n requestPaymentMethodObject(): Observable {\n return this.requestPaymentSuccessSubjectKushki.asObservable();\n }\n\n /** As the dropin container is ready for user interaction by the necessary input data (amount, card billing address),\n * have to increase the iframe height */\n private increaseKushkiContainerHeight(): void {\n const iframe = this.kushkiForm?.nativeElement.querySelector('iframe');\n if (!iframe) return;\n // have to wait until the height is set on the iframe\n setTimeout(() => {\n const iFrameHeight = iframe.getAttribute('height');\n if (iFrameHeight) {\n const numberHeight = Number(iFrameHeight) + this.KushkiHeightIncreasement;\n iframe.setAttribute('height', numberHeight.toString());\n }\n });\n }\n}\n","
    \n
    \n
    \n","\n \n \n
    \n \n \n \n \n \n \n
    \n \n {{ addPaymentButtonText }}\n \n
    \n \n \n \n
    \n \n\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { CardholderName } from '@core/models/cardholder-name.model';\nimport { DropinInstance } from '@core/models/dropin-instance.model';\nimport { LogCardAttemptData } from '@core/models/log-card-attempt-data.model';\nimport { CardPaymentMethodHandlerComponent } from '@payment/components/card-payment-method-handler.component';\nimport { Observable } from 'rxjs';\nimport { CardPaymentProviderBaseComponent } from '../card-payment-provider-base-component';\n\n@Component({\n selector: 'app-card-payment-wrapper',\n templateUrl: './card-payment-wrapper.component.html',\n styleUrls: ['./card-payment-wrapper.component.scss'],\n})\nexport class CardPaymentWrapperComponent\n extends CardPaymentMethodHandlerComponent\n implements OnDestroy, OnChanges\n{\n @Input() paymentProviderType: PaymentProviderType;\n @Input() payPalTopMargin: string = 'mt-5';\n @Input() disableInput: boolean = false;\n @Input() cardholderName: CardholderName;\n @Input() isPayPalCardPaymentEnabled: boolean = false;\n @Input() showAddPaymentButtonForKushki: boolean = false;\n @Input() kushkiFormIdType: KushkiFormIdTypes = KushkiFormIdTypes.Card;\n @Input() hasKushkiSavedPayment: boolean = false;\n\n @Output() isPaymentApproved: EventEmitter = new EventEmitter();\n @Output() isPaymentProviderLoading: EventEmitter = new EventEmitter();\n @Output() cardAttempt: EventEmitter = new EventEmitter();\n @Output() showAddPaymentButtonForKushkiChange: EventEmitter =\n new EventEmitter();\n\n public readonly PaymentProviderType = PaymentProviderType;\n public readonly AddCardButtonText: string = $localize`Add card`;\n public readonly AddBankTransferText: string = $localize`Add bank transfer`;\n\n public isPaymentHandlerLoading: boolean = true;\n public addPaymentButtonText: string = this.AddCardButtonText;\n\n private readonly OneSec = 1000;\n private paymentProviderComponent: CardPaymentProviderBaseComponent = undefined;\n\n constructor(private cdRef: ChangeDetectorRef) {\n super();\n this.isPaymentMethodRequestable.emit(false);\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.kushkiFormIdType?.currentValue) {\n this.addPaymentButtonText =\n changes.kushkiFormIdType?.currentValue === KushkiFormIdTypes.Card\n ? this.AddCardButtonText\n : this.AddBankTransferText;\n }\n }\n\n onDropInComponentInitialized(component: CardPaymentProviderBaseComponent): void {\n this.paymentProviderComponent = component;\n // TODO: StartNowApp - try/retry timeout would be safer here\n // have to wait a bit as the third party returns that is requestable it's still loading\n setTimeout(() => {\n this.isPaymentHandlerLoading = false;\n this.cdRef.detectChanges();\n }, this.OneSec);\n }\n\n addPaymentCardButtonClick(): void {\n this.showAddPaymentButtonForKushkiChange.emit(false);\n }\n\n handlePaymentRequestable(isPaymentMethodRequestable: boolean): void {\n this.isPaymentMethodRequestable.emit(isPaymentMethodRequestable);\n }\n\n /** Provides a way to wait the third party payment method process and stores the payment info */\n requestPaymentMethodObject(): Observable {\n if (this.paymentProviderComponent) {\n return this.paymentProviderComponent.requestPaymentMethodObject();\n } else {\n return new Observable((subscribe) =>\n subscribe.error(new Error('Payment provider component not defined')),\n );\n }\n }\n\n /** Provides a way to wait the creation of payment method from BE\n * @param isPmoRequestSuccessful is Payment Method Object request is successful\n */\n createPaymentMethod(isPmoRequestSuccessful?: boolean): void {\n if (this.paymentProviderComponent) {\n if (isPmoRequestSuccessful) {\n this.paymentProviderComponent.createPaymentMethod();\n } else {\n // In case of Nexio we have to send back the Cvv and Avs results by Nexio iframe pmo\n if (this.paymentProviderType === PaymentProviderType.Nexio) {\n this.paymentProviderComponent.createPaymentMethod();\n } else {\n throw new Error('RequestPaymentMethodObject failed!');\n }\n }\n }\n }\n\n resetToken(cardholderFirstName: string = '', cardholderLastName: string = ''): void {\n this.isPaymentHandlerLoading = true;\n if (this.paymentProviderComponent) {\n this.paymentProviderComponent.resetToken(cardholderFirstName, cardholderLastName);\n }\n }\n\n paymentApproved(isCreated: boolean): void {\n this.isPaymentApproved.emit(isCreated);\n }\n\n forwardCardAttempt(cardAttemptData: LogCardAttemptData): void {\n this.cardAttempt.emit(cardAttemptData);\n }\n\n handleLoadingChange(isLoading: boolean): void {\n this.isPaymentHandlerLoading = isLoading;\n this.isPaymentProviderLoading.emit(isLoading);\n this.cdRef.detectChanges();\n }\n}\n","
    \n
    \n
    \n \n Saved Payment\n \n \n
    \n \n Change\n
    \n
    \n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-saved-bank-transfer',\n templateUrl: './saved-bank-transfer.component.html',\n styleUrls: ['./saved-bank-transfer.component.scss'],\n})\nexport class SavedBankTransferComponent {\n @Input() canChangeSavedBankTransfer: boolean = true;\n @Output() resetPayment: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n resetPaymentClick() {\n this.resetPayment.emit();\n }\n}\n","
    \n
    \n
    \n
    \n \n Card error\n \n \n
    \n
    \n Change\n
    \n
    \n
    \n {{ getPaymentErrorMessage() }}\n
    \n\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CreatePaymentErrorTypeTranslations } from '@core/constants/create-payment-error-type-translations';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { PaymentMethodCardInfo } from '@core/store/payment/payment-state-models';\nimport { isMexEnv } from '@shared/utils/environment-utils';\n\n@Component({\n selector: 'app-create-card-payment-method-error',\n templateUrl: './create-card-payment-method-error.component.html',\n styleUrls: ['./create-card-payment-method-error.component.scss'],\n})\nexport class CreateCardPaymentMethodErrorComponent {\n @Input() cardTypeDisplayValue: string;\n @Input() cardPaymentErrorType: CreateCardPaymentErrorType;\n @Input() cardInfo: PaymentMethodCardInfo;\n @Output() resetPayment: EventEmitter = new EventEmitter();\n\n public isMexEnv = isMexEnv;\n\n constructor() {}\n\n getPaymentErrorMessage() {\n return CreatePaymentErrorTypeTranslations.get(this.cardPaymentErrorType) || '';\n }\n\n resetPaymentClick() {\n this.resetPayment.emit();\n }\n}\n","
    \n
    \n
    \n
    \n \n Saved Card\n \n \n
    \n
    \n Change\n
    \n
    \n\n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { SavedCardInfo } from './saved-card-info.model';\n\n@Component({\n selector: 'app-saved-card',\n templateUrl: './saved-card.component.html',\n styleUrls: ['./saved-card.component.scss'],\n})\nexport class SavedCardComponent implements OnChanges {\n @Input() cardTypeDisplayValue: string;\n @Input() cardInfo: SavedCardInfo;\n @Input() canChangeSavedCard: boolean = true;\n @Output() resetPayment: EventEmitter = new EventEmitter();\n\n public isMexEnv = isMexEnv;\n\n public accountCardHolderFullName = '';\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.cardInfo?.currentValue) {\n if (this.cardInfo.account) {\n this.accountCardHolderFullName =\n this.cardInfo.account.firstName + ' ' + this.cardInfo.account.lastName;\n }\n }\n }\n\n resetPaymentClick() {\n this.resetPayment.emit();\n }\n}\n","/* eslint-disable no-unused-vars */\nimport { ClientTokenRequest, LogCardAttemptRequest } from '@core/dto/order.dto';\nimport { ReceiveVouchersRequest } from '@core/dto/start-now-app.dto';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { EcPaymentHandlerType } from '@core/enums/payment-handler-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { selectCart } from '@core/store/cart';\nimport { selectPaymentType } from '@core/store/checkout';\nimport { selectPartyOrderBaseData } from '@core/store/order';\nimport { logCardAttempt } from '@core/store/order/order.actions';\nimport {\n selectClientToken,\n selectCustomerId,\n selectPayPalOrder,\n selectPaymentInfo,\n} from '@core/store/payment';\nimport { PaymentInfo } from '@core/store/payment/payment-state-models';\nimport {\n createCheckoutPayPalOrder,\n createPartyOrderPayPalOrder,\n createPaymentMethod,\n fetchClientToken,\n fetchPartyOrderClientToken,\n resetCardPaymentInfo,\n resetCreatedPaymentMethod,\n storePaymentInfo,\n storePaymentInfoFailure,\n updateCheckoutPayPalOrder,\n} from '@core/store/payment/payment.actions';\nimport { Store, select } from '@ngrx/store';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs/operators';\nimport { PaymentHandlerBase } from '../payment-handler-base.model';\nimport { getPaymentMethodType, getPaymentProviderType } from '../payment-provider.utils';\nexport class ECommercePaymentHandler implements PaymentHandlerBase {\n // TODO: PHS-9656\n amount$: Observable;\n\n constructor(\n public store$: Store,\n private appInitService: AppInitService,\n private ecPaymentHandlerType?: EcPaymentHandlerType,\n ) {\n switch (this.ecPaymentHandlerType) {\n case EcPaymentHandlerType.CheckoutOrder:\n case EcPaymentHandlerType.CreatePaymentMethod:\n this.amount$ = this.store$.select(selectCart).pipe(select((cart) => cart?.totalPrice || 0));\n break;\n case EcPaymentHandlerType.PartyOrder:\n this.amount$ = this.store$\n .select(selectPartyOrderBaseData)\n .pipe(select((partyOrderBaseData) => partyOrderBaseData?.amount || 0));\n break;\n }\n }\n\n public initToken(\n paymentProvider: PaymentProviderType,\n cardholderFirstName = '',\n cardholderLastName = '',\n formIdType?: KushkiFormIdTypes,\n ): Observable {\n const payload: ClientTokenRequest = {\n provider: paymentProvider,\n firstName: cardholderFirstName || undefined,\n lastName: cardholderLastName || undefined,\n formIdType,\n };\n switch (this.ecPaymentHandlerType) {\n case EcPaymentHandlerType.CheckoutOrder:\n case EcPaymentHandlerType.CreatePaymentMethod:\n this.store$.dispatch(fetchClientToken({ payload }));\n break;\n\n case EcPaymentHandlerType.PartyOrder:\n this.store$.dispatch(fetchPartyOrderClientToken({ payload }));\n break;\n }\n return this.store$.select(selectClientToken).pipe(\n filter((token) => !!token),\n take(1),\n );\n }\n\n /* TODO: On check-out page if needed the token reset while the component is live implement it,\n otherwise if just the component is reinitialized (show/hide) will get a new token.\n */\n resetToken(): void {\n this.store$.dispatch(resetCardPaymentInfo());\n }\n\n isCvvRequired(): boolean {\n switch (this.ecPaymentHandlerType) {\n case EcPaymentHandlerType.CheckoutOrder:\n case EcPaymentHandlerType.CreatePaymentMethod:\n return this.appInitService.Settings.ec.isCvvRequired;\n case EcPaymentHandlerType.PartyOrder:\n return this.appInitService.Settings.ec.isCvvRequiredPartyOrder;\n }\n }\n\n isAvsRequired(): boolean {\n switch (this.ecPaymentHandlerType) {\n case EcPaymentHandlerType.CheckoutOrder:\n case EcPaymentHandlerType.CreatePaymentMethod:\n return this.appInitService.Settings.ec.isAvsRequired;\n case EcPaymentHandlerType.PartyOrder:\n return this.appInitService.Settings.ec.isAvsRequiredPartyOrder;\n }\n }\n\n collectRiskDataFromInput(): boolean {\n switch (this.ecPaymentHandlerType) {\n case EcPaymentHandlerType.CheckoutOrder:\n return this.appInitService.Settings.ec.checkoutCollectRiskDataFromInput;\n case EcPaymentHandlerType.CreatePaymentMethod:\n return false;\n case EcPaymentHandlerType.PartyOrder:\n return this.appInitService.Settings.ec.partyOrderCollectRiskDataFromInput;\n }\n }\n\n createOrder(): Observable {\n if (isMexEnv) {\n switch (this.ecPaymentHandlerType) {\n case EcPaymentHandlerType.CheckoutOrder:\n return this.store$.select(selectPayPalOrder).pipe(\n take(1),\n switchMap((orderId) => {\n if (orderId) {\n this.store$.dispatch(updateCheckoutPayPalOrder({ orderId }));\n return this.store$.select(selectPayPalOrder).pipe(\n filter((updateOrderId) => !!updateOrderId && updateOrderId !== orderId),\n take(1),\n );\n } else {\n this.store$.dispatch(createCheckoutPayPalOrder());\n return this.store$.select(selectPayPalOrder).pipe(\n filter((createOrderId) => !!createOrderId),\n take(1),\n );\n }\n }),\n );\n case EcPaymentHandlerType.PartyOrder:\n return combineLatest([\n this.store$.select(selectPartyOrderBaseData),\n this.store$.select(selectPayPalOrder),\n ]).pipe(\n take(1),\n switchMap(([createPartyOrderPayPalOrderData, orderId]) => {\n this.store$.dispatch(\n createPartyOrderPayPalOrder({ payload: createPartyOrderPayPalOrderData }),\n );\n return this.store$.select(selectPayPalOrder).pipe(\n // wait the new created order id that can't null and the same as the previous\n filter((createdOrderId) => !!createdOrderId && createdOrderId !== orderId),\n take(1),\n );\n }),\n );\n }\n }\n }\n\n updateOrder(): void {\n if (isMexEnv) {\n switch (this.ecPaymentHandlerType) {\n case EcPaymentHandlerType.CheckoutOrder:\n this.store$\n .select(selectPayPalOrder)\n .pipe(\n take(1),\n filter((orderId) => !!orderId),\n )\n .subscribe((orderId) => this.store$.dispatch(updateCheckoutPayPalOrder({ orderId })));\n break;\n case EcPaymentHandlerType.PartyOrder:\n /** Here not needed update order, because the authorization and transaction happens in\n the same time at submit and the account/card data is not saved and money not held by authorization hold\n */\n this.store$\n .select(selectPartyOrderBaseData)\n .pipe(take(1))\n .subscribe((cratePartyOrderPayPalOrder) => {\n this.store$.dispatch(\n createPartyOrderPayPalOrder({ payload: cratePartyOrderPayPalOrder }),\n );\n });\n break;\n }\n }\n }\n\n public handleRequestedPaymentMethodObject(error: object, paymentInfo: PaymentInfo): void {\n if (error) {\n this.store$.dispatch(storePaymentInfoFailure({ error }));\n } else {\n this.store$.dispatch(storePaymentInfo({ paymentInfo }));\n }\n }\n\n public createPaymentMethod(): void {\n this.store$.dispatch(resetCreatedPaymentMethod());\n\n switch (this.ecPaymentHandlerType) {\n case EcPaymentHandlerType.CheckoutOrder:\n combineLatest([\n this.store$.select(selectPaymentInfo),\n this.store$.select(selectCustomerId),\n this.amount$,\n this.store$.select(selectPaymentType),\n ])\n .pipe(\n filter(([paymentInfo, ,]) => !!paymentInfo),\n take(1),\n )\n .subscribe(([paymentInfo, customerId, amount, paymentType]) => {\n const isNexioPaymentEnabled = this.appInitService.Settings.ec.isNexioCardPaymentEnabled;\n this.store$.dispatch(\n createPaymentMethod({\n payload: {\n nonce: paymentInfo?.nonce,\n deviceData: paymentInfo.deviceData,\n payPalOrderId: paymentInfo?.order?.orderId,\n customerId: customerId,\n amount: amount,\n cardSaveRequest: paymentInfo.cardSaveRequest,\n provider: getPaymentProviderType(paymentType, isNexioPaymentEnabled),\n paymentMethodType: getPaymentMethodType(paymentType),\n },\n }),\n );\n });\n }\n }\n\n // TODO: implement voucher if needed for checkout-page\n createVoucher(): void {}\n\n // TODO: implement voucher if needed for checkout-page\n receiveVouchers(vouchers: ReceiveVouchersRequest): void {}\n\n receiveVoucher(token: string): void {}\n\n // TODO: implement voucher if needed for checkout-page\n listenReceivedVouchers(): Observable {\n return of(false);\n }\n\n // TODO: implement voucher if needed for checkout-page\n resetReceiveVoucher(): void {}\n\n logCardAttempt(\n isSuccess: boolean,\n response: string,\n provider: PaymentProviderType = PaymentProviderType.Default,\n prowessMasterOrderId?: number,\n ): void {\n const request: LogCardAttemptRequest = {\n prowessMasterOrderId: prowessMasterOrderId,\n success: isSuccess,\n response: response,\n };\n this.store$.dispatch(logCardAttempt({ request }));\n }\n}\n","/* eslint-disable no-unused-vars */\n/* eslint-disable indent */\nimport {\n CreateOrderRequest,\n CreatePaymentMethodRequest,\n CreateVoucherRequest,\n ReceiveVoucherRequest,\n ReceiveVouchersRequest,\n SaveLogCardAttemptRequest,\n SubmitApplicantAddress,\n UpdateOrderRequest,\n} from '@core/dto/start-now-app.dto';\nimport { AddressType } from '@core/enums/address-type.enum';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { PaymentMethodType } from '@core/enums/payment-method-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentCardType } from '@core/enums/payment-type.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { PaymentInfo } from '@core/store/payment/payment-state-models';\nimport {\n selectClientToken,\n selectDepositPaymentValue,\n selectOrderSummary,\n selectPayPalOrder,\n selectReducedDepositPaymentValue,\n selectSecurityKey,\n selectStartNowAppData,\n selectVoucherPaymentInfo,\n} from '@core/store/start-now-app';\nimport { Address } from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n createOrder,\n createPaymentMethod,\n createVoucher,\n fetchClientToken,\n logCardAttempt,\n receiveVouchers,\n resetClientToken,\n resetPaymentMethod,\n resetReceiveVoucher,\n storeExternalPaymentInfo,\n storeExternalPaymentInfoFailure,\n updateOrder,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { Store, select } from '@ngrx/store';\nimport {\n mapContactInfoToSubmitContactInfoDto,\n mapUserInfoToSubmitUserInfoParamsDto,\n} from '@shared/utils/create-submit-consultant-info-utils';\nimport { isMexEnv, isUsaEnv } from '@shared/utils/environment-utils';\nimport { Observable } from 'rxjs';\nimport { filter, map, take, withLatestFrom } from 'rxjs/operators';\nimport { PaymentHandlerBase } from '../payment-handler-base.model';\n\nexport class StartNowAppPaymentHandler implements PaymentHandlerBase {\n amount$: Observable;\n\n constructor(\n public store$: Store,\n private appInitService: AppInitService,\n ) {\n this.amount$ = this.store$.select(selectStartNowAppData).pipe(\n filter((data) => !!data.startNowAppPaymentInfo.cardPaymentInfo),\n withLatestFrom(\n this.store$.select(selectDepositPaymentValue),\n this.store$.select(selectReducedDepositPaymentValue),\n this.store$.select(selectOrderSummary),\n ),\n map(([data, depositPaymentValue, reducedDepositPaymentValue, orderSummary]) => {\n const totalCost = isUsaEnv ? orderSummary.totalCost : data.selectedStarterKit.price;\n if (data.selectedStarterKit.isDepositPayment) {\n return depositPaymentValue;\n } else if (data.selectedStarterKit.isReducedDepositPayment) {\n return reducedDepositPaymentValue;\n }\n return totalCost;\n }),\n );\n }\n\n public initToken(\n paymentProvider: PaymentProviderType,\n cardholderFirstName = '',\n cardholderLastName = '',\n formIdType?: KushkiFormIdTypes,\n ): Observable {\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n select((data) => data.applicationRegistrationId),\n take(1),\n )\n .subscribe((applicationRegistrationId) => {\n this.store$.dispatch(\n fetchClientToken({\n payload: {\n applicationRegistrationId,\n provider: paymentProvider,\n firstName: cardholderFirstName || undefined,\n lastName: cardholderLastName || undefined,\n formIdType,\n },\n }),\n );\n });\n\n return this.store$.select(selectClientToken).pipe(\n filter((token) => !!token),\n take(1),\n );\n }\n\n resetToken(): void {\n this.store$.dispatch(resetClientToken());\n }\n\n isCvvRequired(): boolean {\n return this.appInitService.Settings.sna.isCvvRequired;\n }\n\n isAvsRequired(): boolean {\n return this.appInitService.Settings.sna.isAvsRequired;\n }\n\n collectRiskDataFromInput(): boolean {\n return this.appInitService.Settings.sna.collectRiskDataFromInput;\n }\n\n createOrder(): Observable {\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n filter((data) => !!data.startNowAppPaymentInfo.cardPaymentInfo),\n withLatestFrom(this.amount$),\n take(1),\n )\n .subscribe(([data, totalAmount]) => {\n const createOrderRequest: CreateOrderRequest = {\n address: this.selectHomeAddress(data.addressInfo.addresses),\n amount: totalAmount,\n phoneNumber: data.contactInfo.cellPhoneNumber,\n firstName: data.userInfo.firstName,\n lastName: data.userInfo.lastName,\n email: data.contactInfo.email,\n item: data.selectedStarterKit,\n applicationRegistrationId: data.applicationRegistrationId,\n };\n if (!!data?.startNowAppPaymentInfo?.externalPaymentInfo?.order?.orderId) {\n const updateOrderRequest: UpdateOrderRequest = {\n ...createOrderRequest,\n orderId: data.startNowAppPaymentInfo.externalPaymentInfo.order.orderId,\n };\n this.store$.dispatch(updateOrder({ payload: updateOrderRequest }));\n } else {\n this.store$.dispatch(createOrder({ payload: createOrderRequest }));\n }\n });\n\n return this.store$.select(selectPayPalOrder).pipe(\n filter((order) => !!order),\n take(1),\n );\n }\n\n updateOrder(): void {\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n take(1),\n filter(\n (data) =>\n !!data.startNowAppPaymentInfo.cardPaymentInfo &&\n !!data.startNowAppPaymentInfo.externalPaymentInfo?.order?.orderId,\n ),\n withLatestFrom(this.amount$),\n )\n .subscribe(([data, totalAmount]) => {\n const updateOrderRequest: UpdateOrderRequest = {\n address: this.selectHomeAddress(data.addressInfo.addresses),\n amount: totalAmount,\n phoneNumber: data.contactInfo.cellPhoneNumber,\n firstName: data.userInfo.firstName,\n lastName: data.userInfo.lastName,\n email: data.contactInfo.email,\n item: data.selectedStarterKit,\n applicationRegistrationId: data.applicationRegistrationId,\n orderId: data.startNowAppPaymentInfo.externalPaymentInfo.order.orderId,\n };\n this.store$.dispatch(updateOrder({ payload: updateOrderRequest }));\n });\n }\n\n public handleRequestedPaymentMethodObject(error: object, paymentInfo: PaymentInfo): void {\n if (error) {\n this.store$.dispatch(storeExternalPaymentInfoFailure({ error }));\n } else {\n this.store$.dispatch(storeExternalPaymentInfo({ paymentInfo }));\n }\n }\n\n public createPaymentMethod(): void {\n this.store$.dispatch(resetPaymentMethod());\n\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n filter((data) => !!data.startNowAppPaymentInfo.externalPaymentInfo),\n withLatestFrom(this.amount$),\n take(1),\n )\n .subscribe(([data, totalAmount]) => {\n const params: CreatePaymentMethodRequest = {\n customerId: data.startNowAppPaymentInfo.customerId,\n amount: totalAmount,\n paymentMethodType: this.getPaymentMethodType(\n data.startNowAppPaymentInfo.cardPaymentInfo.cardType,\n ),\n nonceFromTheClient: data.startNowAppPaymentInfo.externalPaymentInfo.nonce,\n orderId: data.startNowAppPaymentInfo.externalPaymentInfo.order?.orderId,\n deviceData: data.startNowAppPaymentInfo.externalPaymentInfo.deviceData,\n starterKit: {\n starterKitId: data.selectedStarterKit.id,\n },\n isDepositPayment: !!data.selectedStarterKit.isDepositPayment,\n isReducedDepositPayment: !!data.selectedStarterKit.isReducedDepositPayment,\n isZeroDepositPayment: !!data.selectedStarterKit.isZeroDepositPayment,\n recruiterConsultantId: data.selectedConsultant?.beeNumber,\n userInfo: mapUserInfoToSubmitUserInfoParamsDto(data.userInfo),\n addressInfo: {\n addresses: data.addressInfo.addresses,\n languagePreferred: data.addressInfo.languagePreferred,\n },\n contactInfo: mapContactInfoToSubmitContactInfoDto(data.contactInfo),\n applicationRegistrationId: data.applicationRegistrationId,\n registrationCode: data.registrationCode,\n securityKey: data.securityKey,\n provider: data.startNowAppPaymentInfo.provider,\n cardSaveRequest: data.startNowAppPaymentInfo.externalPaymentInfo.cardSaveRequest,\n billingFirstName:\n data.startNowAppPaymentInfo.additionalBillingInformation?.billingFirstName,\n billingLastName:\n data.startNowAppPaymentInfo.additionalBillingInformation?.billingLastName,\n };\n\n this.store$.dispatch(createPaymentMethod({ payload: params }));\n });\n }\n\n createVoucher(): void {\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n filter(\n (data) =>\n !!data.userInfo &&\n !!data.startNowAppPaymentInfo.voucherPaymentInfo &&\n data.startNowAppPaymentInfo.voucherPaymentInfo.amount !== 0 &&\n !!data.startNowAppPaymentInfo.voucherPaymentInfo.email,\n ),\n withLatestFrom(this.amount$),\n take(1),\n )\n .subscribe(([data, totalAmount]) => {\n const payload: CreateVoucherRequest = {\n amount: totalAmount,\n email: data.startNowAppPaymentInfo.voucherPaymentInfo.email,\n starterKitId: data.selectedStarterKit.id,\n recruiterConsultantId: data.selectedConsultant?.beeNumber,\n userInfo: mapUserInfoToSubmitUserInfoParamsDto(data.userInfo),\n addressInfo: {\n addresses: data.addressInfo.addresses,\n languagePreferred: data.addressInfo.languagePreferred,\n },\n contactInfo: mapContactInfoToSubmitContactInfoDto(data.contactInfo),\n applicationRegistrationId: data.applicationRegistrationId,\n registrationCode: data.registrationCode,\n securityKey: data.securityKey,\n };\n\n this.store$.dispatch(createVoucher({ payload }));\n });\n }\n\n receiveVoucher(token: string): void {\n const payload: ReceiveVoucherRequest = {\n token: token,\n };\n this.store$.dispatch(receiveVouchers({ vouchers: { vouchers: [payload] } }));\n }\n\n receiveVouchers(vouchers: ReceiveVouchersRequest): void {\n this.store$.dispatch(receiveVouchers({ vouchers }));\n }\n\n listenReceivedVouchers(): Observable {\n return this.store$.select(selectVoucherPaymentInfo).pipe(\n select((voucherPaymentInfo) => voucherPaymentInfo.vouchersReceived),\n filter((vouchersReceived) => vouchersReceived !== null),\n );\n }\n\n resetReceiveVoucher(): void {\n this.store$.dispatch(resetReceiveVoucher());\n }\n\n logCardAttempt(\n isSuccess: boolean,\n response: string,\n provider: PaymentProviderType = PaymentProviderType.Default,\n ): void {\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n select((data) => data.applicationRegistrationId),\n withLatestFrom(this.store$.select(selectSecurityKey)),\n take(1),\n )\n .subscribe(([applicationRegistrationId, securityKey]) => {\n const request: SaveLogCardAttemptRequest = {\n applicationRegistrationId: Number(applicationRegistrationId),\n success: isSuccess,\n response: response,\n securityKey: securityKey,\n provider,\n };\n this.store$.dispatch(logCardAttempt({ request }));\n });\n }\n\n private getPaymentMethodType(cardType: PaymentCardType): PaymentMethodType {\n if (isMexEnv) {\n switch (cardType) {\n case PaymentCardType.CreditCard:\n return PaymentMethodType.CreditCard;\n case PaymentCardType.DebitCard:\n return PaymentMethodType.DebitCard;\n case PaymentCardType.BankTransfer:\n return PaymentMethodType.BankTransfer;\n default:\n return PaymentMethodType.Unknown;\n }\n }\n return PaymentMethodType.CreditOrDebitCard;\n }\n\n private selectHomeAddress(addresses: Address[]): SubmitApplicantAddress {\n return addresses.find((address) => address.addressType === AddressType.Home);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { Store } from '@ngrx/store';\nimport {\n EcPaymentHandlerType,\n PaymentHandlerType,\n} from '../../../core/enums/payment-handler-type.enum';\nimport { ECommercePaymentHandler } from './impl/e-commerce-payment-handler';\nimport { StartNowAppPaymentHandler } from './impl/start-now-app-payment-handler';\nimport { PaymentHandlerBase } from './payment-handler-base.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentHandlerFactory {\n constructor(\n public store$: Store,\n private appInitService: AppInitService,\n ) {}\n\n public getPaymentHandler(\n paymentHandlerType: PaymentHandlerType,\n ecPaymentHandlerType?: EcPaymentHandlerType,\n ): PaymentHandlerBase {\n switch (paymentHandlerType) {\n case PaymentHandlerType.ECommerce:\n return new ECommercePaymentHandler(this.store$, this.appInitService, ecPaymentHandlerType);\n case PaymentHandlerType.StartNowApp:\n return new StartNowAppPaymentHandler(this.store$, this.appInitService);\n }\n }\n}\n","import { PaymentImageSrc } from '@core/constants/payment.consts';\nimport { PaymentMethodType } from '@core/enums/payment-method-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { isMexEnv, isUsaEnv } from '@shared/utils/environment-utils';\n\nexport function getPaymentProviderType(\n paymentType: PaymentType,\n isNexioPaymentEnabled: boolean,\n): PaymentProviderType | undefined {\n if (isUsaEnv) {\n return PaymentProviderType.Braintree;\n }\n\n if (isMexEnv) {\n switch (paymentType) {\n case PaymentType.CreditOrDebitCard:\n return isNexioPaymentEnabled ? PaymentProviderType.Nexio : PaymentProviderType.Kushki;\n case PaymentType.PayPal:\n return PaymentProviderType.PayPal;\n case PaymentType.BankTransfer:\n return PaymentProviderType.Kushki;\n }\n }\n\n return PaymentProviderType.Default;\n}\n\nexport function initPaymentTypeOptionsAndImages(\n isVoucherEnabled: boolean,\n isBankTransferEnabled: boolean,\n): PaymentTypeOptionsAndImages {\n const paymentTypeOptions: SelectOption[] = [];\n const availablePaymentMethodsImgSrc: string[] = [];\n\n paymentTypeOptions.push({\n name: $localize`Visa / Master card`,\n value: PaymentType.CreditOrDebitCard,\n });\n availablePaymentMethodsImgSrc.push(...[PaymentImageSrc.visaCard, PaymentImageSrc.masterCard]);\n\n if (isMexEnv) {\n paymentTypeOptions.push({ name: $localize`Paypal`, value: PaymentType.PayPal });\n availablePaymentMethodsImgSrc.push(PaymentImageSrc.paypal);\n }\n\n if (isVoucherEnabled) {\n paymentTypeOptions.push({ name: $localize`OXXO Voucher`, value: PaymentType.PayByCash });\n availablePaymentMethodsImgSrc.push(PaymentImageSrc.oxxo);\n }\n\n if (isBankTransferEnabled) {\n paymentTypeOptions.push({ name: $localize`Bank transfer`, value: PaymentType.BankTransfer });\n availablePaymentMethodsImgSrc.push(PaymentImageSrc.spei);\n }\n\n return {\n paymentTypeOptions: paymentTypeOptions,\n availablePaymentMethodsImgSrc: availablePaymentMethodsImgSrc,\n };\n}\n\nexport interface PaymentTypeOptionsAndImages {\n paymentTypeOptions: SelectOption[];\n availablePaymentMethodsImgSrc: string[];\n}\n\nexport function getPaymentMethodType(paymentType: PaymentType): PaymentMethodType {\n switch (paymentType) {\n case PaymentType.CreditOrDebitCard:\n case PaymentType.PayPal:\n return PaymentMethodType.CreditOrDebitCard;\n case PaymentType.PayByCash:\n return PaymentMethodType.Voucher;\n case PaymentType.BankTransfer:\n return PaymentMethodType.BankTransfer;\n default:\n return PaymentMethodType.CreditOrDebitCard;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SharedModule } from '@shared/shared.module';\nimport { NgxPayPalModule } from 'ngx-paypal';\nimport { BankTransferErrorComponent } from './components/card-payment-wrapper/bank-transfer-error/bank-transfer-error.component';\nimport { BraintreeComponent } from './components/card-payment-wrapper/braintree/braintree.component';\nimport { CardPaymentWrapperComponent } from './components/card-payment-wrapper/card-payment-wrapper.component';\nimport { KushkiComponent } from './components/card-payment-wrapper/kushki/kushki.component';\nimport { NexioComponent } from './components/card-payment-wrapper/nexio/nexio.component';\nimport { PayPalComponent } from './components/card-payment-wrapper/pay-pal/pay-pal.component';\nimport { SavedBankTransferComponent } from './components/card-payment-wrapper/saved-bank-transfer/saved-bank-transfer.component';\nimport { CreateCardPaymentMethodErrorComponent } from './components/create-card-payment-method-error/create-card-payment-method-error.component';\nimport { SavedCardComponent } from './components/saved-card/saved-card.component';\nimport { SavedVoucherComponent } from './components/saved-voucher/saved-voucher.component';\nimport { OxxoVoucherPaymentModalComponent } from './components/voucher-payment-modal/oxxo-voucher-payment-modal/oxxo-voucher-payment-modal.component';\n\n@NgModule({\n declarations: [\n CardPaymentWrapperComponent,\n BraintreeComponent,\n PayPalComponent,\n NexioComponent,\n KushkiComponent,\n SavedCardComponent,\n SavedBankTransferComponent,\n CreateCardPaymentMethodErrorComponent,\n BankTransferErrorComponent,\n OxxoVoucherPaymentModalComponent,\n SavedVoucherComponent,\n ],\n imports: [CommonModule, SharedModule, NgxPayPalModule, FormsModule],\n exports: [\n CardPaymentWrapperComponent,\n SavedCardComponent,\n SavedBankTransferComponent,\n CreateCardPaymentMethodErrorComponent,\n BankTransferErrorComponent,\n OxxoVoucherPaymentModalComponent,\n SavedVoucherComponent,\n ],\n})\nexport class PaymentModule {}\n","
    \n \n \n \n \n \n
    \n","import { Component, Input } from '@angular/core';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { ImageDetails } from '@core/models/image.model';\nimport { environment } from '@env';\nimport { UserUtilService } from '@shared/utils/user-util.service';\n\n@Component({\n selector: 'app-product-list-image',\n templateUrl: './product-list-image.component.html',\n styleUrls: ['./product-list-image.component.scss'],\n})\nexport class ProductListImageComponent {\n @Input()\n sku: string;\n\n @Input()\n images: ImageDetails[];\n\n @Input()\n navigateTo: string;\n\n @Input()\n isWishlisted: boolean;\n\n @Input()\n onOpenQuickView: () => void;\n\n @Input()\n toggleWish: (sku: string) => void;\n\n @Input()\n alt: string;\n\n thumbnail = Thumbnail;\n feature = environment.feature;\n\n constructor(public userUtilService: UserUtilService) {}\n}\n","\n
    \n \n \n
    \n
    \n \n
    \n {{ product.sku }}\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n Add to cart\n \n
    \n
    \n
    \n \n
    \n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { selectAddToCartConfirmModal } from '@core/store/cart';\nimport { ProductItem } from '@core/store/product/product-state-models';\nimport { selectWishlist } from '@core/store/wishlist';\nimport { addToWishList, deleteFromWishlist } from '@core/store/wishlist/wishlist.actions';\nimport { Store, select } from '@ngrx/store';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-product-list-item',\n templateUrl: './product-list-item.component.html',\n styleUrls: ['./product-list-item.component.scss'],\n})\nexport class ProductListItemComponent implements OnInit, OnDestroy {\n @Input()\n product: ProductItem;\n\n @Input()\n catalogName: string;\n\n @Input()\n onAddToCart: (product: ProductItem) => void;\n\n @Input()\n openQuickView: (sku: string) => void;\n\n readonly altSuffix = $localize`(view product)`;\n\n productDetailsUrl: string;\n isWishlisted: boolean;\n addToCartLoading$: Observable;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n public productUtil: ProductUtilService,\n ) {}\n\n ngOnInit(): void {\n this.productDetailsUrl = this.productUtil.createProductDetailsUrl(\n this.product.collectionUrlName,\n this.product.productUrlName,\n this.product.sku,\n );\n\n this.addToCartLoading$ = this.store$\n .select(selectAddToCartConfirmModal)\n .pipe(select((state) => state.loading));\n\n this.subscriptions.add(\n this.store$.select(selectWishlist).subscribe((wishList) => {\n if (wishList.find((wishListItem) => wishListItem.sku === this.product.sku)) {\n this.isWishlisted = true;\n } else {\n this.isWishlisted = false;\n }\n }),\n );\n }\n\n addToCart(): void {\n this.onAddToCart(this.product);\n }\n\n onOpenQuickView = (): void => {\n this.openQuickView(this.product.sku);\n };\n\n toggleWish = (sku: string) => {\n if (this.isWishlisted) {\n this.store$.dispatch(deleteFromWishlist({ sku }));\n } else {\n this.store$.dispatch(addToWishList({ sku }));\n }\n };\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n {{ product.collection }}\n {{ product.name }}\n {{ product.sku }}\n \n \n
    \n
    \n \n
    \n \n \n
    \n \n Add to cart\n \n \n
    \n \n View full details\n \n
    \n
    \n
    \n
    \n
    \n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MaxProductQty } from '@core/constants/product.const';\nimport { MediaSuffix } from '@core/enums/media-suffix.enum';\nimport { ImageDetails } from '@core/models/image.model';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { VimeoVideoDetails } from '@core/models/vimeo-video-details';\nimport { AppState } from '@core/store';\nimport { addToCart } from '@core/store/cart/cart.actions';\nimport { selectProductQuickView, selectProductQuickViewVideos } from '@core/store/product';\nimport { ProductQuickView } from '@core/store/product/product-state-models';\nimport { resetProductQuickView } from '@core/store/product/product.actions';\nimport { selectWishlist } from '@core/store/wishlist';\nimport { addToWishList, deleteFromWishlist } from '@core/store/wishlist/wishlist.actions';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { AltTextUtilService } from '@shared/utils/alt-text-util.service';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\n\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-product-quickview-dialog',\n templateUrl: './product-quickview-dialog.component.html',\n styleUrls: ['./product-quickview-dialog.component.scss'],\n})\nexport class ProductQuickviewDialogComponent implements OnInit, OnDestroy {\n feature = environment.feature;\n subscriptions: Subscription = new Subscription();\n productQuickView$: Observable;\n modalConfig: ModalConfig = {\n ngbModalOptions: {\n size: 'lg',\n },\n hideCloseButton: true,\n hideDismissButton: true,\n onDismiss: this.onDismiss.bind(this),\n };\n\n productDetailsUrl: string;\n isWishlisted: boolean;\n\n productImageSlides$: Observable;\n productVideoSlides$: Observable;\n\n quantities: number[] = Array(MaxProductQty)\n .fill(0)\n .map((q, i) => i + 1);\n quantity: number = this.quantities[0];\n\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n constructor(\n private store$: Store,\n private router: Router,\n private altTextUtil: AltTextUtilService,\n public productUtil: ProductUtilService,\n ) {}\n\n ngOnInit(): void {\n this.productQuickView$ = this.store$.select(selectProductQuickView);\n this.subscriptions.add(\n this.productQuickView$\n .pipe(distinctUntilChanged((prev, curr) => prev?.sku === curr?.sku))\n .subscribe((data) => {\n if (data) {\n this.productDetailsUrl = this.productUtil.createProductDetailsUrl(\n data.collectionUrlName,\n data.productUrlName,\n data.sku,\n );\n\n this.modalComponent.open();\n }\n }),\n );\n\n this.subscriptions.add(\n combineLatest([this.store$.select(selectWishlist), this.productQuickView$])\n .pipe(filter(([, data]) => !!data))\n .subscribe(([wishList, data]) => {\n const wishlistedItem = wishList.find((wishListItem) => wishListItem.sku === data.sku);\n if (!!wishlistedItem) {\n this.isWishlisted = true;\n } else {\n this.isWishlisted = false;\n }\n }),\n );\n\n this.productImageSlides$ = this.productQuickView$.pipe(\n filter((i) => !!i),\n map((i) => {\n const { name: productName, collection: collectionName } = i;\n return [\n this.altTextUtil.getProductImagesWithAltText(i.primaryImages, {\n productName,\n collectionName,\n suffix: MediaSuffix.primaryImage,\n }),\n ...i.additionalImages.map((image) =>\n this.altTextUtil.getProductImagesWithAltText(image, {\n productName,\n collectionName,\n suffix: MediaSuffix.secondaryImage,\n }),\n ),\n ];\n }),\n );\n\n this.productVideoSlides$ = this.store$.select(selectProductQuickViewVideos).pipe(\n withLatestFrom(this.productQuickView$),\n map(([videos, { name: productName, collection: collectionName }]) =>\n videos.map((video) =>\n this.altTextUtil.getVimeoDetailsWithAltText(video, { productName, collectionName }),\n ),\n ),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n onDismiss(): void {\n this.store$.dispatch(resetProductQuickView());\n }\n\n viewFullDetails(): void {\n this.modalComponent.dismiss();\n this.router.navigate([this.productDetailsUrl]);\n }\n\n toggleWish(sku) {\n if (this.isWishlisted) {\n this.store$.dispatch(deleteFromWishlist({ sku }));\n } else {\n this.store$.dispatch(addToWishList({ sku }));\n }\n this.isWishlisted = !this.isWishlisted;\n }\n\n addToCart = (product: ProductQuickView): void => {\n this.store$.dispatch(\n addToCart({\n payload: {\n images: product.primaryImages,\n collection: product.collection,\n productName: product.name,\n sku: product.sku,\n discountedPrice: product.discountedPrice,\n price: product.price,\n quantity: this.quantity,\n categoryNames: product.categoryNames,\n type: product.type,\n isPFASItem: product.isPFASItem,\n },\n }),\n );\n this.modalComponent.dismiss();\n };\n}\n","export enum MetaProperty {\n url = 'og:url',\n type = 'og:type',\n title = 'og:title',\n image = 'og:image',\n description = 'og:description',\n}\n","import { Injectable } from '@angular/core';\nimport { Meta, MetaDefinition } from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SeoService {\n constructor(private meta: Meta) {}\n\n updateMetaTags(metaTags: MetaDefinition[]) {\n metaTags.forEach((m) => this.meta.updateTag(m));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve } from '@angular/router';\nimport { MetaProperty } from '@core/enums/meta-property.enum';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { SeoService } from '@core/services/seo.service';\nimport { AppState } from '@core/store';\nimport { selectProductDetails } from '@core/store/product';\nimport { ProductDetailsItem } from '@core/store/product/product-state-models';\nimport { fetchProductDetails } from '@core/store/product/product.actions';\nimport { select, Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, first, tap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductResolver implements Resolve {\n constructor(private store$: Store, private seoService: SeoService) {}\n\n resolve(route: ActivatedRouteSnapshot): Observable {\n const sku = route.paramMap.get('sku');\n const viewAs = route.queryParamMap.get(RouterQueryParams.viewAs);\n\n this.store$.dispatch(fetchProductDetails({ sku, date: viewAs }));\n\n return this.store$.select(selectProductDetails).pipe(\n filter((details) => !details.isLoading && !!details.item),\n tap((details) => this.updatePageMeta(details.item)),\n select((details) => details.item),\n first(),\n );\n }\n\n private updatePageMeta(product: ProductDetailsItem) {\n this.seoService.updateMetaTags([\n { property: MetaProperty.url, content: window.location.href },\n { property: MetaProperty.type, content: 'website' },\n { property: MetaProperty.title, content: product.name },\n { property: MetaProperty.image, content: product.primaryImages[0].url },\n { property: MetaProperty.description, content: product.name },\n ]);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { select } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n templateUrl: './not-found-page.component.html',\n styleUrls: ['./not-found-page.component.scss'],\n})\nexport class NotFoundPageComponent implements OnInit {\n title$: Observable;\n message$: Observable;\n\n constructor(private route: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.message$ = this.route.data.pipe(select((data) => data?.message));\n this.title$ = this.route.data.pipe(select((data) => data?.title));\n }\n}\n","
    \n

    {{ title$ | async }}

    \n

    {{ message$ | async }}

    \n
    \n","\n \n \n \n \n \n\n","import { Component, Input } from '@angular/core';\nimport { DefaultImagePlaceholderSrc } from '@core/constants/image-placeholders';\nimport { CatalogType } from '@core/enums/catalog-type.enum';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { CatalogItem } from '@core/store/product/product-state-models';\n\n@Component({\n selector: 'app-product-catalog-item',\n templateUrl: './product-catalog-item.component.html',\n styleUrls: ['./product-catalog-item.component.scss'],\n})\nexport class ProductCatalogItemComponent {\n @Input() catalog: CatalogItem;\n @Input() catalogType: CatalogType;\n\n loading = true;\n\n readonly placeholder = DefaultImagePlaceholderSrc;\n\n readonly altSuffix = {\n [CatalogType.Collection]: $localize`collection (view products in collection)`,\n [CatalogType.Category]: $localize`category (view products in category)`,\n };\n\n thumbnail = Thumbnail;\n\n onLoad() {\n this.loading = false;\n }\n}\n","
    \n \n
  • Products
  • \n
    \n
    \n \n \n
  • \n Browse by collection\n
    \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
  • \n \n
    \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { CategoryCollectionPageTitle } from '@core/constants/page-title';\nimport { CatalogType } from '@core/enums/catalog-type.enum';\nimport { AppState } from '@core/store';\nimport {\n selectAllCatalogsFetched,\n selectCatalogs,\n selectCatalogsLoading,\n} from '@core/store/product';\nimport { CatalogItem } from '@core/store/product/product-state-models';\nimport { fetchCatalogs, resetCatalogs } from '@core/store/product/product.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { filter, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-product-catalog-page',\n templateUrl: './product-catalog-page.component.html',\n styleUrls: ['./product-catalog-page.component.scss'],\n})\nexport class ProductCatalogPageComponent implements OnInit, OnDestroy {\n catalogs$: Observable;\n activeCatalogType: CatalogType = CatalogType.Collection;\n\n readonly CatalogType = CatalogType;\n readonly CategoryCollectionPageTitle = CategoryCollectionPageTitle;\n\n private readonly pageSize: number = 75;\n private pageNumber: number = 1;\n private loading$: Observable;\n private isAllCatalogsFetched$: Observable;\n private storeSubject: Subject = new Subject();\n private scrollDown$ = new Subject();\n private subscription: Subscription;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.catalogs$ = this.store$.select(selectCatalogs);\n this.loading$ = this.store$.select(selectCatalogsLoading);\n this.isAllCatalogsFetched$ = this.store$.select(selectAllCatalogsFetched);\n this.fetchFirstPage();\n this.fetchNextPagesOnScrollDown();\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetCatalogs());\n this.storeSubject.next();\n this.storeSubject.complete();\n this.subscription.unsubscribe();\n }\n\n public onCatalogTypeChange(): void {\n this.fetchFirstPage();\n }\n\n onScrollDown(): void {\n this.scrollDown$.next(this.pageNumber);\n }\n\n private fetchFirstPage(): void {\n this.pageNumber = 1;\n this.store$.dispatch(\n fetchCatalogs({\n catalogType: this.activeCatalogType,\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n shouldResetStore: true,\n }),\n );\n this.pageNumber++;\n }\n\n private fetchNextPagesOnScrollDown(): void {\n this.subscription = this.scrollDown$\n .pipe(\n withLatestFrom(this.loading$),\n filter(([, loading]) => !loading),\n withLatestFrom(this.isAllCatalogsFetched$),\n filter(([, isAllFetched]) => !isAllFetched),\n )\n .subscribe(([[pageNumber]]) => {\n this.store$.dispatch(\n fetchCatalogs({\n catalogType: this.activeCatalogType,\n pageNumber,\n pageSize: this.pageSize,\n }),\n );\n this.pageNumber++;\n });\n }\n}\n","\n \n \n \n \n \n \n\n\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-star-rating',\n templateUrl: './star-rating.component.html',\n styleUrls: ['/star-rating.component.scss'],\n})\nexport class StarRatingComponent {\n readonly MaxStar = 5;\n\n @Input() rate = 0;\n @Input() readonly = true;\n @Input() max = this.MaxStar;\n @Output() rateChange: EventEmitter = new EventEmitter();\n\n onRateChange($event: number) {\n this.rateChange.emit($event);\n }\n}\n","\n
    \n
    \n \n
    \n
    \n
    {{ productDetailsItem.collection }}
    \n
    \n {{ productDetailsItem.name }}\n
    \n
    #{{ productDetailsItem.sku }}
    \n
    \n
    \n
    \n Rating\n
    \n \n Rate this item\n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n \n \n {{ review.date | date: 'dd/MM/yyyy' }}\n \n \n {{ review.date | date: 'MM/dd/yyyy' }}\n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n\n \n \n \n \n
    \n \n Add Review\n \n
    \n \n
    \n","import { Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { DefaultImagePlaceholderSrc } from '@core/constants/image-placeholders';\nimport { CreateProductReviewRequest } from '@core/dto/product-review.dto';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport { ProductReview } from '@core/store/product-review/product-review-state-models';\nimport { createProductReview } from '@core/store/product-review/product-review.action';\nimport { ProductDetailsItem } from '@core/store/product/product-state-models';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { isMexEnv } from '@shared/utils/environment-utils';\n\n@Component({\n selector: 'app-product-review-modal',\n templateUrl: './product-review-modal.component.html',\n styleUrls: ['./product-review-modal.component.scss'],\n})\nexport class ProductReviewModalComponent implements OnInit, OnChanges {\n @Input() productDetailsItem: ProductDetailsItem;\n @Input() readOnly: boolean;\n @Input() review?: ProductReview;\n\n readonly isMexEnv = isMexEnv;\n readonly ReviewTitle: string = 'reviewTitle';\n readonly Review: string = 'review';\n readonly IsAnonymous: string = 'isAnonymous';\n readonly ReviewTitlePlaceHolder = $localize`Give your review a catchy title`;\n readonly ReviewContentPlaceHolder = $localize`Share your experience with this product!\\\n What did you like or dislike about it? Would you recommend it to others? Write your review here.`;\n readonly imagePlaceholder = DefaultImagePlaceholderSrc;\n readonly Thumbnail = Thumbnail;\n\n reviewTitleLabel = '';\n reviewContentLabel = '';\n modalDismissText = '';\n rate: number = 0;\n reviewFormGroup: FormGroup;\n modalConfig: ModalConfig = {\n title: '',\n hideCloseButton: true,\n hideDismissButton: true,\n onDismiss: this.onDismiss.bind(this),\n ngbModalOptions: {\n size: 'md',\n },\n };\n\n @ViewChild('reviewModal') private reviewModal: ModalComponent;\n\n constructor(private fb: FormBuilder, private store$: Store) {}\n\n ngOnInit(): void {\n this.reviewFormGroup = this.createForm();\n if (this.readOnly && this.review) {\n this.initReadOnlyModal();\n } else {\n this.modalConfig.title = $localize`Add Review`;\n this.modalDismissText = $localize`Cancel`;\n this.reviewTitleLabel = $localize`Review Title (optional)`;\n this.reviewContentLabel = $localize`Review (optional)`;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.readOnly && this.reviewFormGroup && changes.review.currentValue) {\n this.initReadOnlyModal();\n }\n }\n\n openModal(): void {\n if (this.readOnly && this.review) {\n this.initReadOnlyModal();\n }\n this.reviewModal.open();\n }\n\n onDismiss(): void {\n this.reviewModal?.close();\n this.resetForm();\n }\n\n addReview(): void {\n if (!!this.rate) {\n const request: CreateProductReviewRequest = {\n rating: this.rate,\n reviewHeadline: this.reviewFormGroup.get(this.ReviewTitle).value,\n reviewText: this.reviewFormGroup.get(this.Review).value,\n sku: this.productDetailsItem.sku,\n isAnonymous: this.reviewFormGroup.get(this.IsAnonymous).value,\n };\n this.store$.dispatch(createProductReview({ request }));\n this.onDismiss();\n }\n }\n\n onRateChange(event): void {\n this.rate = event;\n }\n\n private initReadOnlyModal(): void {\n this.reviewTitleLabel = $localize`Review Title`;\n this.reviewContentLabel = $localize`Review`;\n this.modalConfig.title = this.review.firstName\n ? $localize`${this.review.firstName}'s Review`\n : $localize`Anonymous`;\n this.modalDismissText = $localize`Close`;\n this.rate = this.review.rating;\n this.reviewFormGroup?.get(this.ReviewTitle).setValue(this.review.reviewHeadline);\n this.reviewFormGroup?.get(this.Review).setValue(this.review.reviewText);\n }\n\n private createForm(): FormGroup {\n return this.fb.group({\n [this.ReviewTitle]: [''],\n [this.Review]: [''],\n [this.IsAnonymous]: [false],\n });\n }\n\n private resetForm(): void {\n this.reviewFormGroup.setValue({\n [this.ReviewTitle]: '',\n [this.Review]: '',\n [this.IsAnonymous]: false,\n });\n this.rate = 0;\n }\n}\n","
    \n\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ProductReview } from '@core/store/product-review/product-review-state-models';\nimport { ProductDetailsItem } from '@core/store/product/product-state-models';\nimport { ProductReviewModalComponent } from '@product/components/product-review-modal/product-review-modal.component';\n\n@Component({\n selector: 'app-product-review-box',\n templateUrl: './product-review-box.component.html',\n styleUrls: ['./product-review-box.component.scss'],\n})\nexport class ProductReviewBoxComponent {\n @Input() review: ProductReview;\n @Input() productDetailsItem: ProductDetailsItem;\n readonly numberOfWordsToShow = 15;\n readonly anonymous = $localize`Anonymous`;\n @ViewChild('productReviewModal')\n private productReviewModal: ProductReviewModalComponent;\n\n constructor() {}\n\n openFullReviewModal() {\n this.productReviewModal.openModal();\n }\n\n truncateText(text: string): string {\n const words = text.split(' ');\n if (words.length <= this.numberOfWordsToShow) {\n return words.join(' ');\n }\n let truncatedText = words.slice(0, this.numberOfWordsToShow).join(' ');\n truncatedText = truncatedText + ' ...';\n return truncatedText;\n }\n}\n","
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n \n \n \n \n
    \n
    \n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ProductReview } from '@core/store/product-review/product-review-state-models';\nimport { ProductDetailsItem } from '@core/store/product/product-state-models';\nimport KeenSlider, { KeenSliderInstance } from 'keen-slider';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-product-reviews-carousel',\n templateUrl: './product-reviews-carousel.component.html',\n styleUrls: ['./product-reviews-carousel.component.scss'],\n})\nexport class ProductReviewsCarouselComponent implements OnInit, OnDestroy {\n @Input() reviews$: Observable;\n @Input() productDetailsItem: ProductDetailsItem;\n @Output() loadNextPage: EventEmitter = new EventEmitter();\n @ViewChild('sliderRef') set sliderRef(element) {\n element && this.initKeenSlider(element);\n }\n\n readonly batchSize = 3;\n\n reviews: ProductReview[];\n\n indexes: number[] = [0, 1, 2, 3];\n dragging: boolean = false;\n slider: KeenSliderInstance = null;\n currentSlide: number = 0;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor() {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.reviews$?.subscribe((reviews) => {\n this.reviews = reviews;\n this.slider?.update(this.getSliderOptions());\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n if (this.slider) this.slider.destroy();\n }\n\n beforeChange() {\n this.dragging = true;\n }\n\n afterChange() {\n this.dragging = false;\n }\n\n fetchMoreIfNeeded() {\n if (this.currentSlide + this.batchSize === this.reviews.length) {\n this.loadNextPage.emit(this.batchSize);\n }\n }\n\n private initKeenSlider(sliderRef) {\n this.slider = new KeenSlider(sliderRef.nativeElement, this.getSliderOptions());\n }\n\n private getSliderOptions() {\n return {\n initial: this.currentSlide,\n loop: {\n min: 0,\n max: this.reviews.length - 1,\n },\n range: {\n align: true,\n min: 0,\n max: this.reviews.length - 1,\n },\n slideChanged: (s) => {\n this.currentSlide = s.track.details.rel;\n this.fetchMoreIfNeeded();\n },\n detailsChanged: (s) => {\n this.indexes = s.track.details.slides.map((slide) => slide.abs);\n },\n\n breakpoints: {\n '(min-width: 768px)': {\n slides: { number: 4, perView: this.batchSize, spacing: 5 },\n },\n },\n slides: { number: 4, perView: 1 },\n };\n }\n}\n","\n
    \n
    \n \n
    \n\n
    \n
    Customer Reviews:\n {{ productDetailsItem.rating ? (productDetailsItem.rating | number: '1.1-1') : 0 }}\n out of 5\n
    {{ productDetailsItem.numberOfRatings }} ratings
    \n
    \n\n
    \n \n
    \n\n
    \n
    \n \n
    \n
    \n
    \n\n \n\n \n \n
    \n\n \n
    \n \n
    \n \n {{ filterLabel[option] }}\n \n
    \n
    \n
    \n\n \n \n Add review\n \n \n
    \n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Locale } from '@core/enums/locale';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { selectProductReviews, selectProductReviewsLoading } from '@core/store/product-review';\nimport { ProductReview } from '@core/store/product-review/product-review-state-models';\nimport {\n fetchMoreProductReviews,\n fetchProductReviews,\n resetProductReviewState,\n} from '@core/store/product-review/product-review.action';\nimport { ProductDetailsItem } from '@core/store/product/product-state-models';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { getCulture } from '@shared/utils/locale-utils';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-product-review-and-rating',\n templateUrl: './product-review-and-rating.component.html',\n styleUrls: ['./product-review-and-rating.component.scss'],\n})\nexport class ProductReviewAndRatingComponent implements OnInit, OnChanges, OnDestroy {\n @Input() productDetailsItem: ProductDetailsItem;\n @Output() openReviewModal: EventEmitter = new EventEmitter();\n\n readonly initialBatchSize = 6;\n readonly allOption = 'all';\n readonly reviewFilterOptions = [\n this.allOption,\n ...environment.languages.map((language) => language.code),\n ];\n readonly filterLabel = {\n [this.allOption]: $localize`All`,\n [Locale.En]: $localize`English Reviews`,\n [Locale.EnUS]: $localize`English Reviews`,\n [Locale.EsUS]: $localize`Spanish Reviews`,\n [Locale.EsMX]: $localize`Spanish Reviews`,\n };\n\n isAuthenticated$: Observable;\n productReviews$: Observable;\n loading$: Observable<{}>;\n loadReviews$ = new Subject<{\n nextPage: number;\n pageSize: number;\n culture: 'all' | Locale;\n }>();\n selectedCulture: Locale | 'all' = this.allOption;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.loading$ = this.store$.select(selectProductReviewsLoading);\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n\n this.productReviews$ = this.store$.select(selectProductReviews);\n }\n\n ngOnChanges(): void {\n this.productDetailsItem && this.fetchReviews(this.allOption);\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetProductReviewState());\n this.subscriptions.unsubscribe();\n }\n\n onAddReview(): void {\n this.openReviewModal.emit();\n }\n\n fetchReviews(option: Locale | 'all') {\n this.selectedCulture = option;\n this.store$.dispatch(resetProductReviewState());\n\n this.store$.dispatch(\n fetchProductReviews({\n payload: {\n culture:\n this.selectedCulture === this.allOption ? null : getCulture(this.selectedCulture),\n sku: this.productDetailsItem.sku,\n pageSize: this.initialBatchSize,\n },\n }),\n );\n }\n\n onLoadReviewsNextPage(pageSize) {\n this.subscriptions.add(\n this.loading$\n .pipe(\n take(1),\n filter((loading) => !loading),\n )\n .subscribe(() => {\n this.store$.dispatch(\n fetchMoreProductReviews({\n payload: {\n culture:\n this.selectedCulture === this.allOption ? null : getCulture(this.selectedCulture),\n sku: this.productDetailsItem.sku,\n pageSize: pageSize,\n },\n }),\n );\n }),\n );\n }\n}\n","\n
    \n \n \n \n
    \n \n
    \n \n
  • Products
  • \n
  • Collection
  • \n
  • \n \n {{ productDetails.item.collection }}\n \n
  • \n
  • \n {{ productDetails.item.name }}\n
  • \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n {{ productDetailsItem.numberOfRatings }} ratings | \n \n Read reviews\n \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n {{ productDetailsItem.collection }}\n \n \n {{ productDetailsItem.name }}\n \n {{ productDetailsItem.sku }}\n \n \n
    \n
    \n \n
    \n \n \n
    \n \n Add to cart\n \n \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n

    Product description

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n

    Care & Use

    \n
    \n \n
    \n \n \n
    \n

    Warranty

    \n
    \n \n
    \n \n
    0\" class=\"row w-100\">\n
    \n
    \n \n
    \n
    \n
    0\" class=\"row w-100\">\n
    \n
    \n \n
    \n
    \n 0 && feature.recipe\"\n class=\"row w-100\"\n >\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n Product not found\n
    \n
    \n
    \n \n\n\n\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Location } from '@angular/common';\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { MobileMedia } from '@core/constants/screen-sizes';\nimport { MediaSuffix } from '@core/enums/media-suffix.enum';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { ImageDetails } from '@core/models/image.model';\nimport { RelatedCarouselSlide } from '@core/models/related-carousel-slide.model';\nimport { VimeoVideoDetails } from '@core/models/vimeo-video-details';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { selectAddToCartConfirmModal } from '@core/store/cart';\nimport { addToCart } from '@core/store/cart/cart.actions';\nimport {\n selectMoreFromCollection,\n selectProductDetails,\n selectProductDetailsVideos,\n selectProductRecommendations,\n selectRelatedRecipes,\n} from '@core/store/product';\nimport {\n ProductDetails,\n ProductDetailsItem,\n ProductRecommendation,\n} from '@core/store/product/product-state-models';\nimport {\n fetchMoreFromCollection,\n fetchProductRecommendations,\n fetchRelatedRecipes,\n resetProductDetails,\n} from '@core/store/product/product.actions';\nimport { RecipeItem } from '@core/store/recipe/recipe-state-models';\nimport { selectWishlist } from '@core/store/wishlist';\nimport { addToWishList, deleteFromWishlist } from '@core/store/wishlist/wishlist.actions';\nimport { environment } from '@env';\nimport { Store, select } from '@ngrx/store';\nimport { AltTextUtilService } from '@shared/utils/alt-text-util.service';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\n\nimport { MaxProductQty } from '@core/constants/product.const';\nimport { ProductRoutes } from '@core/constants/routes.const';\nimport { getRelatedSlidesFromRelatedRecipes } from '@shared/utils/recipe-utils';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, map, withLatestFrom } from 'rxjs/operators';\nimport { ProductReviewModalComponent } from '../product-review-modal/product-review-modal.component';\n\n@Component({\n selector: 'app-product-details',\n templateUrl: './product-details.component.html',\n styleUrls: ['./product-details.component.scss'],\n})\nexport class ProductDetailsComponent implements OnInit, OnDestroy {\n readonly productsRoute = ProductRoutes.Products;\n readonly feature = environment.feature;\n productDetails$: Observable;\n\n productDetailsItem$: Observable = this.route.data.pipe(\n map((d) => d?.productDetailsItem),\n );\n\n recommendations$: Observable;\n relatedRecipes$: Observable;\n moreFromCollection$: Observable;\n loadingStatus$: Observable;\n isAuthenticated$: Observable;\n viewAs: string;\n isWishlisted: boolean;\n addToCartLoading$: Observable;\n isMobile$: Observable;\n\n productImageSlides$: Observable;\n productVideoSlides$: Observable;\n\n moreFromThisCollectionSlides$: Observable;\n youMightAlsoLikeSlides$: Observable;\n tryTheseRecipesSlides$: Observable;\n\n quantities: number[] = Array(MaxProductQty)\n .fill(0)\n .map((q, i) => i + 1);\n quantity: number = this.quantities[0];\n\n private subscriptions: Subscription = new Subscription();\n\n @ViewChild('productReviewModal') private productReviewModal: ProductReviewModalComponent;\n\n constructor(\n private store$: Store,\n private route: ActivatedRoute,\n private location: Location,\n private breakpointObserver: BreakpointObserver,\n private altTextUtil: AltTextUtilService,\n public productUtil: ProductUtilService,\n ) {\n this.viewAs = this.route.snapshot.queryParamMap.get(RouterQueryParams.viewAs);\n }\n\n ngOnInit(): void {\n this.isMobile$ = this.breakpointObserver.observe(MobileMedia).pipe(select((o) => o.matches));\n this.productDetails$ = this.store$.select(selectProductDetails);\n this.redirectProductDetailsRoute();\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n this.loadingStatus$ = this.productDetails$.pipe(select((details) => details.isLoading));\n\n this.addToCartLoading$ = this.store$\n .select(selectAddToCartConfirmModal)\n .pipe(select((state) => state.loading));\n this.recommendations$ = this.store$.select(selectProductRecommendations);\n this.relatedRecipes$ = this.store$.select(selectRelatedRecipes);\n this.moreFromCollection$ = this.store$.select(selectMoreFromCollection);\n\n this.productImageSlides$ = this.productDetailsItem$.pipe(\n filter((i) => !!i),\n map((i) => {\n const { name: productName, collection: collectionName } = i;\n return [\n this.altTextUtil.getProductImagesWithAltText(i.primaryImages, {\n productName,\n collectionName,\n suffix: MediaSuffix.primaryImage,\n }),\n ...i.additionalImages.map((image) =>\n this.altTextUtil.getProductImagesWithAltText(image, {\n productName,\n collectionName,\n suffix: MediaSuffix.secondaryImage,\n }),\n ),\n ];\n }),\n );\n\n this.productVideoSlides$ = this.store$.select(selectProductDetailsVideos).pipe(\n withLatestFrom(this.productDetailsItem$),\n map(([videos, { name: productName, collection: collectionName }]) =>\n videos.map((video) =>\n this.altTextUtil.getVimeoDetailsWithAltText(video, { productName, collectionName }),\n ),\n ),\n );\n\n this.moreFromThisCollectionSlides$ = this.moreFromCollection$.pipe(\n map((r) => this.productUtil.getRelatedSlidesFromRecommendations(r)),\n );\n\n this.youMightAlsoLikeSlides$ = this.recommendations$.pipe(\n map((r) => this.productUtil.getRelatedSlidesFromRecommendations(r)),\n );\n\n this.tryTheseRecipesSlides$ = this.relatedRecipes$.pipe(\n map((r) => getRelatedSlidesFromRelatedRecipes(r)),\n );\n\n this.subscriptions.add(\n this.store$.select(selectWishlist).subscribe((wishListItems) => {\n const wishlistedItem = wishListItems.find(\n (wishListItem) => wishListItem.sku === this.getSku(),\n );\n if (!!wishlistedItem) {\n this.isWishlisted = true;\n } else {\n this.isWishlisted = false;\n }\n }),\n );\n\n this.initMoreFromCollection();\n this.initYouMightAlsoLike();\n this.initTryThese();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.store$.dispatch(resetProductDetails());\n }\n\n addToCart(product: ProductDetailsItem) {\n this.store$.dispatch(\n addToCart({\n payload: {\n images: product.primaryImages,\n collection: product.collection,\n productName: product.name,\n sku: product.sku,\n discountedPrice: product.discountedPrice,\n price: product.price,\n quantity: this.quantity,\n categoryNames: product.categoryNames,\n type: product.type,\n isPFASItem: product.isPFASItem,\n },\n }),\n );\n }\n\n toggleWish(sku: string) {\n if (this.isWishlisted) {\n this.store$.dispatch(deleteFromWishlist({ sku }));\n } else {\n this.store$.dispatch(addToWishList({ sku }));\n }\n }\n\n openReviewModal(): void {\n this.productReviewModal.openModal();\n }\n\n scrollToReviews(el: HTMLElement) {\n if (this.feature.productReview) {\n el.scrollIntoView();\n }\n }\n\n private initYouMightAlsoLike() {\n this.subscriptions.add(\n this.productDetailsItem$\n .pipe(filter((item) => item?.displayYouMightAlsoLike))\n .subscribe(() => {\n const sku = this.getSku();\n this.store$.dispatch(fetchProductRecommendations({ sku, date: this.viewAs }));\n }),\n );\n }\n\n private initTryThese() {\n this.subscriptions.add(\n this.productDetailsItem$.pipe(filter((item) => item?.displayTryThese)).subscribe(() => {\n const sku = this.getSku();\n this.store$.dispatch(fetchRelatedRecipes({ sku, date: this.viewAs }));\n }),\n );\n }\n\n private initMoreFromCollection() {\n this.subscriptions.add(\n this.productDetailsItem$\n .pipe(filter((item) => item?.displayMoreFromCollection))\n .subscribe(({ collectionUrlName }) => {\n const sku = this.getSku();\n this.store$.dispatch(\n fetchMoreFromCollection({ catalogUrlName: collectionUrlName, sku, date: this.viewAs }),\n );\n }),\n );\n }\n\n private getSku() {\n const sku = this.route.snapshot.paramMap.get('sku');\n if (sku) {\n return sku;\n }\n const nameAndSkuFromUrl = this.route.snapshot.paramMap.get('nameAndSku');\n const nameAndSku = nameAndSkuFromUrl.split('-');\n\n return nameAndSku[nameAndSku.length - 1];\n }\n\n private redirectProductDetailsRoute() {\n const collectionFromUrl = this.route.snapshot.paramMap.get('collection');\n const nameFromUrl = this.route.snapshot.paramMap.get('name');\n const skuFromUrl = this.route.snapshot.paramMap.get('sku');\n\n this.subscriptions.add(\n this.productDetailsItem$.subscribe((data) => {\n if (data) {\n const desiredUrl = this.productUtil.createProductDetailsUrl(\n data.collectionUrlName,\n data.productUrlName,\n data.sku,\n );\n const actualUrl = this.productUtil.createProductDetailsUrl(\n collectionFromUrl,\n nameFromUrl,\n skuFromUrl,\n );\n\n if (desiredUrl !== actualUrl) {\n this.location.replaceState(desiredUrl);\n }\n }\n }),\n );\n }\n}\n","export const ProductCatalogType = {\n category: $localize`Category`,\n collection: $localize`Collection`,\n};\n","\n
    \n \n
  • Products
  • \n
  • {{ ProductCatalogType[catalogType] }}\n
  • {{ catalogName$ | async }}
  • \n
    \n
    \n

    No products found.

    \n
    \n \n
    \n \n \n \n
    \n \n \n
    \n
    \n \n
    \n\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { DefaultLayoutComponent } from '@base/components/layout/default-layout/default-layout.component';\nimport { ProductRoutes } from '@core/constants/routes.const';\nimport { ProductResolver } from '@core/resolvers/product.resolver';\nimport { environment } from '@env';\nimport { NotFoundPageComponent } from '@shared/components/not-found-page/not-found-page.component';\nimport { ProductCatalogPageComponent } from './components/product-catalog-page/product-catalog-page.component';\nimport { ProductDetailsComponent } from './components/product-details/product-details.component';\nimport { ProductListPageComponent } from './components/product-list-page/product-list-page.component';\n\nconst routes: Routes = environment.feature.product\n ? [\n {\n path: '',\n component: DefaultLayoutComponent,\n children: [\n {\n path: ProductRoutes.Products,\n component: ProductCatalogPageComponent,\n data: {\n title: $localize`Shop for products by collection and category`,\n description: $localize`Shop for products by collection and category - Description`,\n },\n },\n {\n path: `${ProductRoutes.Products}/:catalogType/:catalogName`,\n component: ProductListPageComponent,\n },\n {\n path: ProductRoutes.Product,\n runGuardsAndResolvers: 'always',\n children: [\n {\n path: `${ProductRoutes.Details}/:sku`,\n resolve: { productDetailsItem: ProductResolver },\n runGuardsAndResolvers: 'always',\n component: ProductDetailsComponent,\n },\n {\n path: `${ProductRoutes.Detail}/:sku`,\n resolve: { productDetailsItem: ProductResolver },\n runGuardsAndResolvers: 'always',\n component: ProductDetailsComponent,\n },\n {\n path: `${ProductRoutes.P}/:sku`,\n resolve: { productDetailsItem: ProductResolver },\n runGuardsAndResolvers: 'always',\n component: ProductDetailsComponent,\n },\n {\n path: ':collection/:nameAndSku',\n resolve: { productDetailsItem: ProductResolver },\n runGuardsAndResolvers: 'always',\n component: ProductDetailsComponent,\n },\n {\n path: `:collection/:name/${ProductRoutes.P}/:sku`,\n resolve: { productDetailsItem: ProductResolver },\n component: ProductDetailsComponent,\n runGuardsAndResolvers: 'always',\n },\n ],\n },\n {\n path: `${ProductRoutes.Product}/${ProductRoutes.NotFound}`,\n component: NotFoundPageComponent,\n data: { title: $localize`404`, message: $localize`Product not found!` },\n },\n ],\n },\n ]\n : [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ProductRoutingModule {}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ProductCatalogType } from '@core/constants/product-catalog-type';\nimport { ProductRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport { addToCart } from '@core/store/cart/cart.actions';\nimport {\n selectAllProductsFetched,\n selectProducts,\n selectProductsLoading,\n} from '@core/store/product';\nimport { selectCatalogName } from '@core/store/product/index';\nimport { ProductItem } from '@core/store/product/product-state-models';\nimport {\n fetchProductQuickView,\n fetchProducts,\n resetProducts,\n} from '@core/store/product/product.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { filter, tap, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-product-list-page',\n templateUrl: './product-list-page.component.html',\n styleUrls: ['./product-list-page.component.scss'],\n})\nexport class ProductListPageComponent implements OnInit, OnDestroy {\n readonly ProductCatalogType = ProductCatalogType;\n readonly titlePrefix = $localize`Browse products in`;\n readonly productsRoute = ProductRoutes.Products;\n\n products$: Observable;\n loading$: Observable;\n catalogName$: Observable;\n fetchNextSubscription: Subscription;\n pageNumber: number = 1;\n pageSize: number = 9;\n scrollDown$ = new Subject();\n catalogUrlName: string;\n catalogType: string;\n\n constructor(\n private store$: Store,\n private activatedRoute: ActivatedRoute,\n ) {\n this.catalogUrlName = activatedRoute.snapshot.paramMap.get('catalogName');\n this.catalogType = activatedRoute.snapshot.paramMap.get('catalogType');\n }\n\n ngOnInit(): void {\n this.fetchFirstPageOnInit();\n\n this.products$ = this.store$.select(selectProducts);\n this.loading$ = this.store$.select(selectProductsLoading);\n this.catalogName$ = this.store$.select(selectCatalogName);\n this.fetchNextPagesOnScrollDown();\n }\n\n onScrollDown(): void {\n this.scrollDown$.next(this.pageNumber);\n }\n\n ngOnDestroy(): void {\n this.fetchNextSubscription.unsubscribe();\n this.store$.dispatch(resetProducts());\n }\n\n openQuickView = (sku: string): void => {\n this.store$.dispatch(fetchProductQuickView({ sku }));\n };\n\n addToCart = (product: ProductItem): void => {\n this.store$.dispatch(\n addToCart({\n payload: {\n images: product.primaryImages,\n collection: product.collection,\n productName: product.name,\n sku: product.sku,\n discountedPrice: product.discountedPrice,\n price: product.price,\n quantity: 1,\n categoryNames: product.categoryNames,\n type: product.type,\n isPFASItem: product.isPFASItem,\n },\n }),\n );\n };\n\n private fetchFirstPageOnInit(): void {\n this.store$.dispatch(\n fetchProducts({\n catalogUrlName: this.catalogUrlName,\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n }),\n );\n this.pageNumber++;\n }\n\n private fetchNextPagesOnScrollDown(): void {\n this.fetchNextSubscription = this.scrollDown$\n .pipe(\n withLatestFrom(this.loading$),\n filter(([, loading]) => !loading),\n withLatestFrom(this.store$.select(selectAllProductsFetched)),\n filter(([, isAllFetched]) => !isAllFetched),\n tap(([[pageNumber]]) => {\n this.store$.dispatch(\n fetchProducts({\n catalogUrlName: this.catalogUrlName,\n pageNumber: pageNumber,\n pageSize: this.pageSize,\n }),\n );\n this.pageNumber++;\n }),\n )\n .subscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { CartModule } from '@cart/cart.module';\nimport { ProductDetailsMediaComponent } from '@shared/components/media-gallery/media-gallery.component';\nimport { SharedModule } from '@shared/shared.module';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { ProductCatalogItemComponent } from './components/product-catalog-page/product-catalog-item/product-catalog-item.component';\nimport { ProductCatalogPageComponent } from './components/product-catalog-page/product-catalog-page.component';\nimport { ProductDetailsComponent } from './components/product-details/product-details.component';\nimport { ProductListImageComponent } from './components/product-list-page/product-list-item/product-list-image/product-list-image.component';\nimport { ProductListItemComponent } from './components/product-list-page/product-list-item/product-list-item.component';\nimport { ProductListPageComponent } from './components/product-list-page/product-list-page.component';\nimport { ProductQuickviewDialogComponent } from './components/product-quickview-dialog/product-quickview-dialog.component';\nimport { ProductReviewModalComponent } from './components/product-review-modal/product-review-modal.component';\nimport { StarRatingComponent } from './components/star-rating/star-rating.component';\nimport { ProductRoutingModule } from './product-routing.module';\nimport { ProductReviewAndRatingComponent } from './components/product-details/product-review-and-rating/product-review-and-rating.component';\nimport { ProductReviewBoxComponent } from './components/product-details/product-review-and-rating/product-review-box/product-review-box.component';\nimport { ProductReviewsCarouselComponent } from './components/product-details/product-review-and-rating/product-reviews-carousel/product-reviews-carousel.component';\n\n@NgModule({\n declarations: [\n ProductListPageComponent,\n ProductListItemComponent,\n ProductListImageComponent,\n ProductCatalogPageComponent,\n ProductCatalogItemComponent,\n ProductDetailsComponent,\n ProductDetailsMediaComponent,\n ProductQuickviewDialogComponent,\n StarRatingComponent,\n ProductReviewModalComponent,\n ProductReviewAndRatingComponent,\n ProductReviewBoxComponent,\n ProductReviewsCarouselComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n ProductRoutingModule,\n InfiniteScrollModule,\n SharedModule,\n CartModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n exports: [\n ProductListPageComponent,\n ProductListItemComponent,\n ProductDetailsComponent,\n ProductQuickviewDialogComponent,\n ],\n})\nexport class ProductModule {}\n","import { Component, Input } from '@angular/core';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { ImageDetails } from '@core/models/image.model';\n\n@Component({\n selector: 'app-blog-image',\n templateUrl: './blog-image.component.html',\n styleUrls: ['./blog-image.component.scss'],\n})\nexport class BlogImageComponent {\n @Input() images: ImageDetails[];\n\n thumbnail = Thumbnail;\n\n constructor() {}\n}\n","
    \n \n
    \n","
    \n \n
    \n \n
    \n
    \n","import { Component, Input, OnInit } from '@angular/core';\nimport { BlogItem } from '@core/store/blog/blog-state-models';\nimport { createBlogDetailsUrl } from '@shared/utils/recipe-utils';\n\n@Component({\n selector: 'app-blog-list-item',\n templateUrl: './blog-list-item.component.html',\n styleUrls: ['./blog-list-item.component.scss'],\n})\nexport class BlogListItemComponent implements OnInit {\n @Input()\n blog: BlogItem;\n\n @Input() isOnSearchPage: boolean = false;\n\n detailsUrl: string;\n\n ngOnInit(): void {\n this.detailsUrl = createBlogDetailsUrl(this.blog?.url);\n }\n}\n","
    \n \n \n \n \n
    \n","import { Component, Input, OnInit } from '@angular/core';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { RecipeItem } from '@core/store/recipe/recipe-state-models';\nimport { dislikeRecipe, likeRecipe } from '@core/store/recipe/recipe.actions';\nimport { Store } from '@ngrx/store';\nimport { createRecipeDetailsUrl } from '@shared/utils/recipe-utils';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-recipe-image',\n templateUrl: './recipe-image.component.html',\n styleUrls: ['./recipe-image.component.scss'],\n})\nexport class RecipeImageComponent implements OnInit {\n @Input() recipe: RecipeItem;\n\n readonly thumbnail = Thumbnail;\n readonly altSuffix = $localize`(view recipe)`;\n\n isLiked: boolean = false;\n detailsUrl: string;\n isAuthenticated$: Observable;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.detailsUrl = createRecipeDetailsUrl(this.recipe?.url);\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n this.isLiked = this.recipe.isLiked;\n }\n\n toggleLike() {\n if (this.isLiked) {\n this.store$.dispatch(dislikeRecipe({ id: this.recipe.id, url: this.recipe.url }));\n } else {\n this.store$.dispatch(likeRecipe({ id: this.recipe.id, url: this.recipe.url }));\n }\n this.isLiked = !this.isLiked;\n }\n}\n","
    \n
    \n \n
    \n
    \n \n
    \n","import { Component, Input, OnInit } from '@angular/core';\nimport { RecipeItem } from '@core/store/recipe/recipe-state-models';\nimport { createRecipeDetailsUrl } from '@shared/utils/recipe-utils';\n\n@Component({\n selector: 'app-recipe-list-item',\n templateUrl: './recipe-list-item.component.html',\n styleUrls: ['./recipe-list-item.component.scss'],\n})\nexport class RecipeListItemComponent implements OnInit {\n @Input()\n recipe: RecipeItem;\n @Input() isOnSearchPage: boolean = false;\n detailsUrl: string;\n\n constructor() {}\n\n ngOnInit() {\n this.detailsUrl = createRecipeDetailsUrl(this.recipe?.url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AppInitService } from './app-init.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RecipeFeatureGuardService implements CanActivate {\n constructor(\n private router: Router,\n private appInitService: AppInitService,\n ) {}\n\n canActivate(): boolean {\n if (this.appInitService.Settings.ec.isRecipeEnabled) {\n return true;\n } else {\n this.router.navigateByUrl('/');\n return false;\n }\n }\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { BlogState } from './blog-state-models';\n\nexport const blogFeatureKey = 'blogState';\n\nexport const selectBlogStateFeature = createFeatureSelector(blogFeatureKey);\n\nexport const selectBlogs = createSelector(selectBlogStateFeature, (state: BlogState) =>\n state ? state.blogs.items : [],\n);\n\nexport const selectAllBlogsFetched = createSelector(selectBlogStateFeature, (state: BlogState) =>\n state ? state.blogs.isAllFetched : false,\n);\n\nexport const selectBlogCategories = createSelector(selectBlogStateFeature, (state: BlogState) =>\n state ? state.blogCategories : [],\n);\n\nexport const selectBlogDetails = createSelector(selectBlogStateFeature, (state: BlogState) =>\n state ? state.blogDetails : null,\n);\n\nexport const selectIsBlogCategoriesFetched = createSelector(\n selectBlogStateFeature,\n (state: BlogState) => (state ? state.isBlogCategoriesFetched : false),\n);\n","\n
    \n \n \n \n
    \n\n\n
    \n
    {{ blog.title }}
    \n \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { selectBlogDetails } from '@core/store/blog';\nimport { BlogDetailsItem } from '@core/store/blog/blog-state-models';\nimport { fetchBlogDetails, resetBlogDetails } from '@core/store/blog/blog.actions';\nimport { Store, select } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-blog-details',\n templateUrl: './blog-details.component.html',\n styleUrls: ['./blog-details.component.scss'],\n})\nexport class BlogDetailsComponent implements OnInit, OnDestroy {\n blogUrl: string;\n blogDetailsItem$: Observable;\n loading$: Observable;\n\n subscriptions: Subscription = new Subscription();\n\n constructor(private store$: Store, private activatedRoute: ActivatedRoute) {\n this.blogUrl = this.activatedRoute.snapshot.paramMap.get('blogUrl');\n }\n\n ngOnInit(): void {\n this.blogDetailsItem$ = this.store$\n .select(selectBlogDetails)\n .pipe(select((details) => details?.item));\n\n this.loading$ = this.store$\n .select(selectBlogDetails)\n .pipe(select((details) => details?.isLoading));\n\n this.subscriptions.add(\n this.activatedRoute.paramMap.subscribe((pMap) => {\n this.blogUrl = pMap.get('blogUrl');\n this.store$.dispatch(fetchBlogDetails({ url: this.blogUrl }));\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetBlogDetails());\n this.subscriptions.unsubscribe();\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nexport type BlogListSortType = { [key in keyof typeof BlogListSortOption]: string };\n\nexport const BlogListSortOption = {\n NewestFirst: $localize`Most recent`,\n NameAscending: $localize`Name: A - Z`,\n NameDescending: $localize`Name: Z - A`,\n};\n\nexport const defaultBlogListSortOption: BlogListSortType =\n 'NewestFirst' as unknown as BlogListSortType;\n","
    \n
    \n
    \n
    \n
    Filter by
    \n \n {{ selectedCategoryName }}\n \n
    \n \n {{ opt.title }}\n \n
    \n
    \n
    \n
    \n
    \n
    Sort by
    \n \n {{ selectedSortOption }}\n \n
    \n \n {{ opt.name }}\n \n
    \n
    \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BlogListSortOption, BlogListSortType } from '@core/enums/blog-list-sort-type';\nimport { BlogCategory } from '@core/store/blog/blog-state-models';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-blog-list-header',\n templateUrl: './blog-list-header.component.html',\n styleUrls: ['./blog-list-header.component.scss'],\n})\nexport class BlogListHeaderComponent implements OnInit, OnDestroy {\n @Output()\n sortChange: EventEmitter;\n\n @Input() blogCategories: BlogCategory[];\n\n sortOptions: { key: string; name: string }[];\n selectedCategoryName: string;\n selectedCategoryUrl: string;\n selectedSortOption = BlogListSortOption.NewestFirst;\n\n activatedRouteSubscription: Subscription;\n\n constructor(private activatedRoute: ActivatedRoute, private router: Router) {\n this.sortChange = new EventEmitter();\n this.sortOptions = Object.keys(BlogListSortOption).map((key) => ({\n key,\n name: BlogListSortOption[key],\n }));\n this.selectedCategoryName = 'All Blogs';\n this.selectedCategoryUrl = '';\n }\n\n ngOnInit(): void {\n this.activatedRouteSubscription = this.activatedRoute.paramMap.subscribe((pMap) => {\n const categoryNameParam = pMap.get('category');\n const selectedCategory = this.blogCategories?.find((x) => x.urlName == categoryNameParam);\n if (selectedCategory === undefined) {\n this.router.navigate(['/recipes-more/blogs']);\n } else {\n this.selectedCategoryUrl = selectedCategory.urlName;\n this.selectedCategoryName = selectedCategory.title;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.activatedRouteSubscription.unsubscribe();\n }\n\n sortOrderClickHandler(key: BlogListSortType) {\n this.selectedSortOption = BlogListSortOption[String(key)];\n this.sortChange.emit(key);\n }\n}\n","
    \n \n \n
    \n
    \n\n\n
    1; else blogCategoriesNotFound\">\n \n \n
    \n \n \n \n
    \n
    \n
    \n\n \n
    \n Blog categories not found\n
    \n
    \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, ParamMap } from '@angular/router';\nimport { BlogListSortType, defaultBlogListSortOption } from '@core/enums/blog-list-sort-type';\nimport { AppState } from '@core/store';\nimport {\n selectAllBlogsFetched,\n selectBlogCategories,\n selectBlogs,\n selectIsBlogCategoriesFetched,\n} from '@core/store/blog';\nimport { BlogCategory, BlogItem } from '@core/store/blog/blog-state-models';\nimport { fetchBlogCategories, fetchBlogs, resetBlogs } from '@core/store/blog/blog.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subject, Subscription, combineLatest } from 'rxjs';\nimport { filter, tap, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-blog-list-page',\n templateUrl: './blog-list-page.component.html',\n styleUrls: ['./blog-list-page.component.scss'],\n})\nexport class BlogListPageComponent implements OnInit, OnDestroy {\n blogs$: Observable;\n blogCategories$: Observable;\n pageNumber: number = 0;\n pageSize: number = 12;\n fetchNextSubscription: Subscription;\n routeActivationSubscription: Subscription;\n scrollDown$ = new Subject();\n categoryUrl: string;\n category: BlogCategory;\n sortType: BlogListSortType = defaultBlogListSortOption;\n isBlogCategoriesFetched$: Observable;\n\n constructor(private store$: Store, private activatedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.blogCategories$ = this.store$.select(selectBlogCategories);\n this.isBlogCategoriesFetched$ = this.store$.select(selectIsBlogCategoriesFetched);\n\n this.routeActivationSubscription = combineLatest([\n this.activatedRoute.paramMap,\n this.blogCategories$,\n ])\n .pipe(filter(([pMap, blogCategories]) => this.blogCategoryIsValid(pMap, blogCategories)))\n .subscribe(([pMap]) => {\n this.categoryUrl = this.getCategoryUrlParam(pMap);\n this.fetchFirstPage();\n });\n\n this.store$.dispatch(fetchBlogCategories());\n this.blogs$ = this.store$.select(selectBlogs);\n this.fetchNextPagesOnScrollDown();\n }\n\n ngOnDestroy(): void {\n this.fetchNextSubscription.unsubscribe();\n this.routeActivationSubscription.unsubscribe();\n this.store$.dispatch(resetBlogs());\n }\n\n onScrollDown(): void {\n this.scrollDown$.next(this.pageNumber);\n }\n\n sortChangeHandler(key: BlogListSortType): void {\n this.sortType = key;\n this.fetchFirstPage();\n }\n\n private fetchFirstPage() {\n this.pageNumber = 1;\n this.store$.dispatch(\n fetchBlogs({\n categoryUrl: this.categoryUrl,\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n isFirstPage: true,\n sortType: this.sortType,\n }),\n );\n this.pageNumber++;\n }\n\n private fetchNextPagesOnScrollDown(): void {\n this.fetchNextSubscription = this.scrollDown$\n .pipe(\n withLatestFrom(this.store$.select(selectAllBlogsFetched)),\n filter(([, isAllFetched]) => !isAllFetched),\n tap(([pageNumber]) => {\n this.store$.dispatch(\n fetchBlogs({\n categoryUrl: this.categoryUrl,\n pageNumber: pageNumber,\n pageSize: this.pageSize,\n isFirstPage: false,\n sortType: this.sortType,\n }),\n );\n this.pageNumber++;\n }),\n )\n .subscribe();\n }\n\n private blogCategoryIsValid(pMap: ParamMap, blogCategories: BlogCategory[]) {\n return (\n blogCategories.length > 1 &&\n blogCategories.some((r) => r.urlName === this.getCategoryUrlParam(pMap))\n );\n }\n\n private getCategoryUrlParam(pMap: ParamMap) {\n return pMap.get('category') || '';\n }\n}\n","\n
    \n \n \n \n
    \n\n\n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n {{ recipe.name }}\n
    \n
    \n \n \n
    \n
    \n
    \n \n
    \n \n
    \n \n
    \n
    \n
    0\">\n
    \n
    \n \n
    \n
    \n \n
    0\">\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { RelatedCarouselSlide } from '@core/models/related-carousel-slide.model';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { ProductRecommendation } from '@core/store/product/product-state-models';\nimport { selectRecipeDetails } from '@core/store/recipe';\nimport { RecipeDetailsItem, RecipeItem } from '@core/store/recipe/recipe-state-models';\nimport {\n dislikeRecipe,\n fetchRecipeDetails,\n fetchRecipeRecommendations,\n fetchRelatedProducts,\n likeRecipe,\n resetRecipeDetails,\n} from '@core/store/recipe/recipe.actions';\nimport { environment } from '@env';\nimport { Store, select } from '@ngrx/store';\nimport { AltTextUtilService } from '@shared/utils/alt-text-util.service';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\nimport { getRelatedSlidesFromRelatedRecipes } from '@shared/utils/recipe-utils';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Component({\n templateUrl: './recipe-details.component.html',\n styleUrls: ['./recipe-details.component.scss'],\n})\nexport class RecipeDetailsComponent implements OnInit, OnDestroy {\n readonly titlePrefix = $localize`Recipe details for`;\n\n recipeId: string;\n recipeUrl: string;\n isLiked: boolean = false;\n recipeDetailsItem$: Observable;\n recommendations$: Observable;\n relatedProducts$: Observable;\n loading$: Observable;\n isAuthenticated$: Observable;\n thumbnail = Thumbnail;\n feature = environment.feature;\n\n youMightAlsoLikeSlides$: Observable;\n relatedProductsSlides$: Observable;\n\n subscriptions: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n private activatedRoute: ActivatedRoute,\n private productUtil: ProductUtilService,\n private altTextUtil: AltTextUtilService,\n ) {\n this.recipeUrl = this.activatedRoute.snapshot.paramMap.get('recipeUrl');\n }\n\n ngOnInit(): void {\n this.recipeDetailsItem$ = this.store$\n .select(selectRecipeDetails)\n .pipe(select((details) => details?.item));\n\n this.loading$ = this.store$\n .select(selectRecipeDetails)\n .pipe(select((details) => details?.isLoading));\n\n this.recommendations$ = this.store$.select(selectRecipeDetails).pipe(\n select(\n (details) =>\n details?.recommendations.map((item) => ({\n ...item,\n images: this.altTextUtil.getPhImagesWithAltText(item.images, item.name),\n })) || [],\n ),\n );\n\n this.relatedProducts$ = this.store$\n .select(selectRecipeDetails)\n .pipe(select((details) => details?.relatedProducts || []));\n\n this.youMightAlsoLikeSlides$ = this.recommendations$.pipe(\n map((r) => getRelatedSlidesFromRelatedRecipes(r)),\n );\n\n this.relatedProductsSlides$ = this.relatedProducts$.pipe(\n map((r) => this.productUtil.getRelatedSlidesFromRecommendations(r)),\n );\n\n this.isAuthenticated$ = this.store$.select(selectIsAuthenticated);\n\n this.subscriptions.add(\n combineLatest([this.activatedRoute.paramMap, this.activatedRoute.queryParamMap]).subscribe(\n ([pMap, queryParamMap]) => {\n this.recipeUrl = pMap.get('recipeUrl');\n const viewAs = queryParamMap.get(RouterQueryParams.viewAs);\n this.store$.dispatch(fetchRecipeDetails({ url: this.recipeUrl, date: viewAs }));\n this.store$.dispatch(fetchRelatedProducts({ recipeUrl: this.recipeUrl }));\n },\n ),\n );\n\n this.subscriptions.add(\n this.recipeDetailsItem$.pipe(filter((recipeItem) => !!recipeItem)).subscribe((recipeItem) => {\n this.isLiked = recipeItem.isLiked || false;\n this.recipeId = recipeItem.id;\n this.store$.dispatch(fetchRecipeRecommendations({ recipeId: recipeItem.id }));\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetRecipeDetails());\n this.subscriptions.unsubscribe();\n }\n\n formatHtmlIngredients(str: string): string {\n let formattedHtml = this.makeHrefLinkRelativeToRoot(str);\n formattedHtml = str.replace('col-xs-2', 'col-3');\n if (!this.feature.product) {\n formattedHtml = this.disableProductLinks(formattedHtml);\n }\n return formattedHtml.replace('col-xs-8', 'col');\n }\n\n formatHtmlInstructions(str: string): string {\n let formattedHtml = this.makeHrefLinkRelativeToRoot(str);\n if (!this.feature.product) {\n formattedHtml = this.disableProductLinks(formattedHtml);\n }\n return formattedHtml;\n }\n\n toggleLike() {\n if (this.isLiked) {\n this.store$.dispatch(dislikeRecipe({ id: this.recipeId, url: this.recipeUrl }));\n } else {\n this.store$.dispatch(likeRecipe({ id: this.recipeId, url: this.recipeUrl }));\n }\n this.isLiked = !this.isLiked;\n }\n\n private makeHrefLinkRelativeToRoot(str: string): string {\n const reg = new RegExp('/product/detail', 'g');\n return str.replace(reg, './product/detail');\n }\n\n private disableProductLinks(str: string): string {\n return str.replace(//g, '').replace(/<\\/a>/g, '');\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nexport type RecipeListSortType = { [key in keyof typeof RecipeListSortOptions]: string };\n\nexport const RecipeListSortOptions = {\n NewestFirst: $localize`Most recent`,\n NameAscending: $localize`Name: A - Z`,\n NameDescending: $localize`Name: Z - A`,\n};\n\nexport const defaultRecipeListSortOption: RecipeListSortType =\n 'NewestFirst' as unknown as RecipeListSortType;\n","
    \n
    \n
    \n
    \n
    Filter by
    \n \n {{ selectedCategoryName }}\n \n
    \n \n {{ opt.title }}\n \n
    \n
    \n
    \n
    \n
    \n
    Sort by
    \n \n {{ selectedSortOption }}\n \n
    \n \n {{ opt.name }}\n \n
    \n
    \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { RecipeListSortOptions, RecipeListSortType } from '@core/enums/recipe-list-sort-type';\nimport { RecipeCategory } from '@core/store/recipe/recipe-state-models';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-recipe-list-header',\n templateUrl: './recipe-list-header.component.html',\n styleUrls: ['./recipe-list-header.component.scss'],\n})\nexport class RecipeListHeaderComponent implements OnInit, OnDestroy {\n @Output()\n sortChange: EventEmitter;\n\n @Input() recipeCategories: RecipeCategory[];\n\n sortOptions: { key: string; name: string }[];\n selectedCategoryName: string;\n selectedCategoryUrl: string;\n selectedSortOption = RecipeListSortOptions.NewestFirst;\n\n activatedRouteSubscription: Subscription;\n\n constructor(private activatedRoute: ActivatedRoute, private router: Router) {\n this.sortChange = new EventEmitter();\n this.sortOptions = Object.keys(RecipeListSortOptions).map((key) => ({\n key,\n name: RecipeListSortOptions[key],\n }));\n this.selectedCategoryName = $localize`All Recipes`;\n this.selectedCategoryUrl = '';\n }\n\n ngOnInit(): void {\n this.activatedRouteSubscription = this.activatedRoute.paramMap.subscribe((pMap) => {\n const categoryNameParam = pMap.get('category');\n const selectedCategory = this.recipeCategories?.find((x) => x.urlName == categoryNameParam);\n if (selectedCategory === undefined) {\n this.router.navigate(['/recipes-more/recipes']);\n } else {\n this.selectedCategoryUrl = selectedCategory.urlName;\n this.selectedCategoryName = selectedCategory.title;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.activatedRouteSubscription.unsubscribe();\n }\n\n sortOrderClickHandler(key: RecipeListSortType) {\n this.selectedSortOption = RecipeListSortOptions[String(key)];\n this.sortChange.emit(key);\n }\n}\n","\n \n \n \n\n\n\n
    1; else recipeNotFound\">\n \n \n \n
    \n \n \n \n
    \n
    \n \n\n \n
    \n Recipes not found\n
    \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, ParamMap } from '@angular/router';\nimport { defaultRecipeListSortOption, RecipeListSortType } from '@core/enums/recipe-list-sort-type';\nimport { AppState } from '@core/store';\nimport {\n selectAllRecipesFetched,\n selectIsRecipeCategoriesFetched,\n selectRecipeCategories,\n selectRecipes\n} from '@core/store/recipe';\nimport { RecipeCategory, RecipeItem } from '@core/store/recipe/recipe-state-models';\nimport {\n fetchRecipeCategories,\n fetchRecipes,\n resetRecipes,\n} from '@core/store/recipe/recipe.actions';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, tap, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-recipe-list-page',\n templateUrl: './recipe-list-page.component.html',\n styleUrls: ['./recipe-list-page.component.scss'],\n})\nexport class RecipeListPageComponent implements OnInit, OnDestroy {\n recipes$: Observable;\n recipeCategories$: Observable;\n pageNumber: number = 1;\n pageSize: number = 12;\n fetchNextSubscription: Subscription;\n routeActicationSubscription: Subscription;\n scrollDown$ = new Subject();\n categoryUrl: string;\n sortType: RecipeListSortType = defaultRecipeListSortOption;\n isRecipeCategoriesFetched$: Observable;\n\n constructor(private store$: Store, private activatedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.recipeCategories$ = this.store$.select(selectRecipeCategories);\n this.isRecipeCategoriesFetched$ = this.store$.select(selectIsRecipeCategoriesFetched);\n\n this.routeActicationSubscription = combineLatest([\n this.activatedRoute.paramMap,\n this.recipeCategories$,\n ])\n .pipe(\n filter(([pMap, recipeCategories]) => this.recipeCategoryIsValid(pMap, recipeCategories)),\n )\n .subscribe(([pMap]) => {\n this.categoryUrl = this.getCategoryUrlParam(pMap);\n this.fetchFirstPage();\n });\n\n this.store$.dispatch(fetchRecipeCategories());\n this.recipes$ = this.store$.select(selectRecipes);\n this.fetchNextPagesOnScrollDown();\n }\n\n ngOnDestroy(): void {\n this.fetchNextSubscription.unsubscribe();\n this.routeActicationSubscription.unsubscribe();\n this.store$.dispatch(resetRecipes());\n }\n\n onScrollDown(): void {\n this.scrollDown$.next(this.pageNumber);\n }\n\n sortChangeHandler(key: RecipeListSortType): void {\n this.sortType = key;\n this.fetchFirstPage();\n }\n\n private fetchFirstPage() {\n this.pageNumber = 1;\n this.store$.dispatch(\n fetchRecipes({\n categoryUrl: this.categoryUrl,\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n isFirstPage: true,\n sortType: this.sortType,\n }),\n );\n this.pageNumber++;\n }\n\n private fetchNextPagesOnScrollDown(): void {\n this.fetchNextSubscription = this.scrollDown$\n .pipe(\n withLatestFrom(this.store$.select(selectAllRecipesFetched)),\n filter(([, isAllFetched]) => !isAllFetched),\n tap(([pageNumber]) => {\n this.store$.dispatch(\n fetchRecipes({\n categoryUrl: this.categoryUrl,\n pageNumber: pageNumber,\n pageSize: this.pageSize,\n isFirstPage: false,\n sortType: this.sortType,\n }),\n );\n this.pageNumber++;\n }),\n )\n .subscribe();\n }\n\n private recipeCategoryIsValid(pMap: ParamMap, recipeCategories: RecipeCategory[]) {\n return (\n recipeCategories.length > 1 &&\n recipeCategories.some((r) => r.urlName === this.getCategoryUrlParam(pMap))\n );\n }\n\n private getCategoryUrlParam(pMap: ParamMap) {\n return pMap.get('category') || '';\n }\n}\n","
    \n \n
    \n
    \n \n
    \n
    \n
    \n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { DefaultLayoutComponent } from '@base/components/layout/default-layout/default-layout.component';\nimport { RecipeAndMoreRoutes } from '@core/constants/routes.const';\nimport { RecipeFeatureGuardService } from '@core/services/recipe-feature-guard.service';\nimport { BlogDetailsComponent } from './components/blog-details/blog-details.component';\nimport { BlogListPageComponent } from './components/blog-list-page/blog-list-page.component';\nimport { RecipeDetailsComponent } from './components/recipe-details/recipe-details.component';\nimport { RecipeListPageComponent } from './components/recipe-list-page/recipe-list-page.component';\nimport { RecipeMoreCatalogPageComponent } from './components/recipe-more-catalog-page/recipe-more-catalog-page.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: DefaultLayoutComponent,\n canActivate: [RecipeFeatureGuardService],\n children: [\n {\n path: RecipeAndMoreRoutes.RecipesMore,\n component: RecipeMoreCatalogPageComponent,\n children: [\n {\n path: RecipeAndMoreRoutes.Recipes,\n component: RecipeListPageComponent,\n data: {\n title: $localize`Browse list of recipes by category`,\n description: $localize`Browse list of recipes by category - Description`,\n },\n },\n { path: `${RecipeAndMoreRoutes.Recipes}/:category`, component: RecipeListPageComponent },\n {\n path: RecipeAndMoreRoutes.Blogs,\n component: BlogListPageComponent,\n data: {\n title: $localize`PH - Blogs Page - Title`,\n description: $localize`PH - Blogs Page - Description`,\n },\n },\n { path: `${RecipeAndMoreRoutes.Blogs}/:category`, component: BlogListPageComponent },\n ],\n },\n {\n path: `${RecipeAndMoreRoutes.Recipe}/${RecipeAndMoreRoutes.Detail}/:recipeUrl`,\n component: RecipeDetailsComponent,\n },\n {\n path: `${RecipeAndMoreRoutes.Blog}/${RecipeAndMoreRoutes.Detail}/:blogUrl`,\n component: BlogDetailsComponent,\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class RecipeMoreRoutingModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'app-recipe-catalog-page',\n templateUrl: './recipe-more-catalog-page.component.html',\n styleUrls: ['./recipe-more-catalog-page.component.scss'],\n})\nexport class RecipeMoreCatalogPageComponent implements OnInit {\n activeId: string = '';\n\n constructor(private router: Router, private activatedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.activeId = 'recipes';\n this.router.navigate(['recipes'], { relativeTo: this.activatedRoute });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { RecipeListPageComponent } from './components/recipe-list-page/recipe-list-page.component';\nimport { RecipeMoreRoutingModule } from './recipe-more-routing.module';\nimport { RecipeListItemComponent } from './components/recipe-list-page/recipe-list-item/recipe-list-item.component';\nimport { RecipeImageComponent } from './components/recipe-list-page/recipe-list-item/recipe-image/recipe-image.component';\nimport { RecipeListHeaderComponent } from './components/recipe-list-page/recipe-list-header/recipe-list-header.component';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { SharedModule } from '@shared/shared.module';\nimport { RecipeDetailsComponent } from './components/recipe-details/recipe-details.component';\nimport { BlogListPageComponent } from './components/blog-list-page/blog-list-page.component';\nimport { BlogListHeaderComponent } from './components/blog-list-page/blog-list-header/blog-list-header.component';\nimport { BlogListItemComponent } from './components/blog-list-page/blog-list-item/blog-list-item.component';\nimport { BlogImageComponent } from './components/blog-list-page/blog-list-item/blog-image/blog-image.component';\nimport { RecipeMoreCatalogPageComponent } from './components/recipe-more-catalog-page/recipe-more-catalog-page.component';\nimport { BlogDetailsComponent } from './components/blog-details/blog-details.component';\n\n@NgModule({\n declarations: [\n RecipeListPageComponent,\n RecipeListItemComponent,\n RecipeImageComponent,\n RecipeListHeaderComponent,\n RecipeDetailsComponent,\n BlogListPageComponent,\n BlogListItemComponent,\n BlogImageComponent,\n BlogListHeaderComponent,\n RecipeMoreCatalogPageComponent,\n BlogDetailsComponent,\n ],\n imports: [CommonModule, InfiniteScrollModule, RecipeMoreRoutingModule, NgbModule, SharedModule],\n exports: [RecipeListItemComponent, BlogListItemComponent],\n})\nexport class RecipeMoreModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-action-card',\n templateUrl: './action-card.component.html',\n styleUrls: ['./action-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActionCardComponent {\n @Input() icon: string;\n @Input() actionLabel: string;\n @Input() primary: boolean;\n @Input() disabled: boolean = false;\n @Output() actionClick: EventEmitter = new EventEmitter();\n\n constructor() {}\n}\n","
    \n
    \n
    \n \n {{ actionLabel }}\n \n
    \n","
    \n \n \n An address element after the house number, in most cases the sub-premise, was not valid.\n \n
    \n
    \n \n \n An address element after the house number, in most cases the sub-premise, was missing.\n \n
    \n
    \n \n \n The PO (Post Office Box), RR (Rural Route), or HC (Highway Contract) Box number is invalid.\n \n
    \n
    \n \n \n The PO (Post Office Box), RR (Rural Route), or HC (Highway Contract) Box number is missing.\n \n
    \n
    \n \n \n The sub premise (suite) type was added or changed, such as from “STE” to “APT.”\n \n
    \n
    \n \n \n The sub premise (suite) unit number was added or changed.\n \n
    \n
    \n \n \n \n The subadministrative area was added or changed.\n \n
    \n
    \n \n \n The premise (house or building) number for the address is not valid.\n \n
    \n
    \n \n \n The premise (house or building) number for the address is missing.\n \n
    \n
    \n \n \n The thoroughfare (street) name was added or changed due to a spelling correction.\n \n
    \n
    \n \n \n \n The thoroughfare (street) leading or trailing type was added or changed, such as from \"St\" to \"Rd.\"\n \n
    \n
    \n \n \n \n The thoroughfare (street) pre-directional or post-directional was added or changed, such as from \"N\" to \"NW.\"\n \n
    \n
    \n \n \n \n Could not match the input street to a unique street name. Either no matches or too many matches found.\n \n
    \n
    \n \n \n \n The combination of directionals (N, E, SW, etc) and the suffix (AVE, ST, BLVD) is not correct and produced multiple possible matches.\n \n
    \n","import { Component, Input } from '@angular/core';\nimport { MelissaErrorCode } from '@core/enums/melissa-error-code';\n\n@Component({\n selector: 'app-address-error-messages',\n templateUrl: './address-error-messages.component.html',\n styleUrls: ['../address-validation.component.scss'],\n})\nexport class AddressErrorMessagesComponent {\n @Input() public hasAddressErrorCode: (code: MelissaErrorCode) => boolean;\n\n codes = MelissaErrorCode;\n}\n","
    \n
    \n
    \n The address that you entered cannot be corrected by the address verification service. Please\n enter a valid address!\n
    \n
    \n
    \n\n
    \n

    \n We are unable to verify the delivery address you specified. Please ensure it's a VALID address\n and/or make any necessary corrections. Then click Next to Continue. You may choose to use your\n address. If you user your address, taxes will be calculated based on your zip code. You may\n change the delivery address at any time prior to submitting the order and taxes will be\n recalculated.\n

    \n

    \n Please note: If your delivery address has both a street address and a PO Box, please specify\n ONLY ONE as the \"Ship To\" address.\n

    \n
    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n\n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n \n\n \n\n \n \n\n \n\n \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n \n \n The address could not be verified at least up to the postal code level.\n \n
    \n
    \n \n The postal code was changed or added.\n
    \n
    \n \n The administrative area (state, province) was added or changed.\n
    \n
    \n \n The locality (city, municipality) name was added or changed.\n
    \n
    \n \n The dependent locality (urbanization) was changed.\n
    \n
    \n\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n \n \n \n \n \n \n \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { CountryName } from '@core/constants/country-name';\nimport { MelissaErrorCode } from '@core/enums/melissa-error-code';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AddressVerification } from '@core/store/address/address-state-models';\nimport { environment } from '@env';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { SelectOption } from '../select/select.component';\n\n@Component({\n selector: 'app-address-validation',\n templateUrl: './address-validation.component.html',\n styleUrls: ['./address-validation.component.scss'],\n})\nexport class AddressValidationComponent implements OnInit, OnDestroy {\n @Input() addressName: string;\n @Input() isDefault: boolean;\n @Input() addressId: string;\n @Input() addressValidation$: Observable;\n @Input() isForbiddenState: boolean;\n @Input() countryStates$: Observable;\n @Input() finalizeAddress: (formGroup: FormGroup) => void;\n @Input() onDismiss: () => void;\n\n readonly isMexEnv = isMexEnv;\n readonly AddressLine1 = 'addressLine1';\n readonly AddressLine2 = 'addressLine2';\n readonly AddressLine3 = 'addressLine3';\n readonly City = 'city';\n readonly State = 'state';\n readonly ZipCode = 'zipCode';\n readonly Country = 'country';\n readonly Name = 'name';\n readonly Default = 'default';\n\n originalAddressFormGroup: FormGroup;\n correctedAddressFormGroup: FormGroup;\n isOriginalAddress: boolean = true;\n codes = MelissaErrorCode;\n validationCategoryAddresses: MelissaErrorCode[];\n validationCategoryLocations: MelissaErrorCode[];\n validationCategoryOther: MelissaErrorCode[];\n\n constructor(private fb: FormBuilder) {}\n\n modalConfig: ModalConfig;\n\n private modalSubscription: Subscription;\n\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n ngOnInit(): void {\n this.modalConfig = {\n title: $localize`Address Verification`,\n ngbModalOptions: {\n size: 'lg',\n },\n hideCloseButton: true,\n hideDismissButton: true,\n onDismiss: this.cancel.bind(this),\n };\n\n this.modalSubscription = this.addressValidation$\n .pipe(filter((data) => !!data && !data.isValid && !!data.correctedAddress))\n .subscribe((data) => {\n this.validationCategoryAddresses = data.ValidationCategoryAddresses;\n this.validationCategoryLocations = data.ValidationCategoryLocations;\n this.validationCategoryOther = data.ValidationCategoryOthers;\n\n this.modalComponent.open();\n this.originalAddressFormGroup = this.fb.group({\n [this.AddressLine1]: [data.originalAddress.addressLine1, [this.addressValidationFn()]],\n [this.AddressLine2]: [data.originalAddress.addressLine2, [this.addressValidationFn()]],\n [this.City]: [data.originalAddress.city, [this.cityValidationFn()]],\n [this.State]: [data.originalAddress.state, [this.stateValidationFn()]],\n [this.ZipCode]: [data.originalAddress.zipCode, [this.zipValidationFn()]],\n [this.Country]: [CountryName[environment.country]],\n [this.Name]: [this.addressName],\n [this.Default]: [this.isDefault],\n });\n\n this.correctedAddressFormGroup = this.fb.group({\n [this.AddressLine1]: [data.correctedAddress.addressLine1.trim()],\n [this.AddressLine2]: [data.correctedAddress.addressLine2.trim()],\n [this.City]: [data.correctedAddress.city],\n [this.State]: [data.correctedAddress.state],\n [this.ZipCode]: [data.correctedAddress.zipCode],\n [this.Country]: [CountryName[environment.country]],\n [this.Name]: [this.addressName],\n [this.Default]: [this.isDefault],\n });\n\n if (this.isMexEnv) {\n const originalAddressLine3Control = new FormControl(\n data.originalAddress.addressLine3 ? data.originalAddress.addressLine3 : '',\n [this.addressValidationFn()],\n );\n const correctedAddressLine3Control = new FormControl(\n data.correctedAddress.addressLine3 ? data.correctedAddress.addressLine3 : '',\n );\n\n this.originalAddressFormGroup.addControl(this.AddressLine3, originalAddressLine3Control);\n this.correctedAddressFormGroup.addControl(\n this.AddressLine3,\n correctedAddressLine3Control,\n );\n }\n\n setTimeout(() => this.originalAddressFormGroup.markAllAsTouched());\n });\n }\n\n ngOnDestroy(): void {\n this.modalSubscription.unsubscribe();\n }\n\n cancel(): void {\n this.originalAddressFormGroup.markAllAsTouched();\n this.originalAddressFormGroup.updateValueAndValidity();\n this.onDismiss();\n this.modalComponent.close();\n }\n\n continue(): void {\n if (this.isOriginalAddress) {\n this.finalizeAddress(this.originalAddressFormGroup);\n } else {\n this.finalizeAddress(this.correctedAddressFormGroup);\n }\n this.modalComponent.close();\n }\n\n public hasZipError(): boolean {\n return this.hasLocationErrorCode(this.codes.AE01) || this.hasLocationErrorCode(this.codes.AC01);\n }\n\n public hasStateError(): boolean {\n return this.hasLocationErrorCode(this.codes.AE01) || this.hasLocationErrorCode(this.codes.AC02);\n }\n\n public hasCityError(): boolean {\n return (\n this.hasLocationErrorCode(this.codes.AE01) ||\n this.hasLocationErrorCode(this.codes.AC03) ||\n this.hasLocationErrorCode(this.codes.AC09)\n );\n }\n\n public hasAddressError(): boolean {\n return (\n this.validationCategoryAddresses != undefined && this.validationCategoryAddresses.length > 0\n );\n }\n\n public hasAddressErrorCode = (code: MelissaErrorCode): boolean =>\n this.validationCategoryAddresses?.includes(code) ?? false;\n\n public hasLocationErrorCode(code: MelissaErrorCode): boolean {\n return this.validationCategoryLocations?.some((error) => error.startsWith(code)) ?? false;\n }\n\n private addressValidationFn(): ValidatorFn {\n return (): ValidationErrors => (this.hasAddressError() ? { melissaAddress: true } : null);\n }\n\n private zipValidationFn(): ValidatorFn {\n return (): ValidationErrors => (this.hasZipError() ? { melissaZip: true } : null);\n }\n\n private stateValidationFn(): ValidatorFn {\n return (): ValidationErrors => (this.hasStateError() ? { melissaState: true } : null);\n }\n\n private cityValidationFn(): ValidatorFn {\n return (): ValidationErrors => (this.hasCityError() ? { melissaCity: true } : null);\n }\n}\n","
    \n
    \n {{ data?.title }}\n \n \n \n
    \n
    \n
    \n Name\n {{ data?.name }}\n
    \n
    \n Email\n {{ data?.email }}\n
    \n
    \n Address\n {{ data?.addressLine1 }}\n \n {{ data?.addressLine2 }}\n \n
    \n {{ data?.addressLine1 }}\n {{ data?.addressLine2 }}\n
    \n
    \n
    \n Phone\n {{ data?.phone }}\n
    \n
    \n Card number\n {{ data?.cardNumber }}\n
    \n
    \n Clabe\n {{ data?.clabe }}\n
    \n
    \n Consultant\n {{ data?.consultant }}\n
    \n
    \n Customer\n {{ data?.customer }}\n
    \n
    \n Host\n {{ data?.host }}\n
    \n
    \n \n \n \n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { InfoCardAttributes } from '@core/models/info-card-attributes.model';\nimport { VoucherService } from '@core/services/voucher.service';\n\n@Component({\n selector: 'app-info-card',\n templateUrl: './app-info-card.component.html',\n styleUrls: ['./app-info-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InfoCardComponent {\n @Input() data: InfoCardAttributes;\n @Output() backToPreviousStep = new EventEmitter();\n\n constructor(private voucherService: VoucherService) {}\n\n download(voucherId: string) {\n this.voucherService.downloadVoucher(voucherId);\n }\n\n clickModify(): void {\n this.backToPreviousStep.emit();\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\n@Component({\n template: '',\n})\nexport abstract class BaseComponent implements OnDestroy {\n protected subscriptions: Subscription = new Subscription();\n\n protected constructor() {}\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-breadcrumb-wrapper',\n templateUrl: './breadcrumb-wrapper.component.html',\n styleUrls: ['./breadcrumb-wrapper.component.scss'],\n})\nexport class BreadcrumbWrapperComponent {\n constructor() {}\n}\n","
    \n\n
    \n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-circular-progress',\n templateUrl: './circular-progress.component.html',\n styleUrls: ['./circular-progress.component.scss'],\n})\nexport class CircularProgressComponent {\n @Input() currentStep: number;\n @Input() numberOfSteps: number;\n\n constructor() {}\n\n getTitle() {\n return $localize`${this.currentStep} of ${this.numberOfSteps}`;\n }\n\n getPercent() {\n return (this.currentStep / this.numberOfSteps) * 100;\n }\n}\n","\n","\n
    \n
    {{ title }}
    \n \n
    \n \n
    \n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-confirm-modal',\n templateUrl: './confirm-modal.component.html',\n styleUrls: ['./confirm-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmModalComponent {\n @Input() title: string;\n @Input() noLabel: string = $localize`No`;\n @Input() yesLabel: string = $localize`Yes`;\n @Input() size: 'sm' | 'lg' | 'xl';\n\n @Output() noClick: EventEmitter = new EventEmitter();\n @Output() yesClick: EventEmitter = new EventEmitter();\n\n @ViewChild('modal') private modalContent: TemplateRef;\n\n private payload: any;\n private modalRef: NgbModalRef;\n\n constructor(private modalService: NgbModal) {}\n\n open(payload: any = null) {\n this.payload = payload;\n this.modalRef = this.modalService.open(this.modalContent, {\n centered: true,\n size: this.size,\n backdrop: 'static',\n });\n }\n\n onYes() {\n this.yesClick.emit(this.payload);\n this.close();\n }\n\n onNo() {\n this.noClick.emit(this.payload);\n this.close();\n }\n\n private close() {\n this.modalRef.dismiss();\n }\n}\n","
    \n
    \n \n

    \n {{ message }}\n

    \n
    \n
    \n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-full-page-spinner',\n templateUrl: './full-page-spinner.component.html',\n styleUrls: ['./full-page-spinner.component.scss'],\n})\nexport class FullPageSpinnerComponent {\n @Input() message: string = '';\n\n constructor() {}\n}\n","\n
    \n
    \n
    \n
    \n \n
    \n\n
    \n \n\n \n
    \n\n \n \n \n desktopPerView &&\n slider?.track.details.slides.length - desktopPerView !== currentSlide\n \"\n class=\"arrow-y arrow--down bi bi-chevron-down\"\n >\n \n \n
    \n
    \n \n \n
    \n
    \n
    \n \n Go to slide {{ i + 1 }}\n \n
    \n
    \n
    \n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { DefaultVideoThumbnailPlaceholderSrc } from '@core/constants/image-placeholders';\nimport { MobileMedia } from '@core/constants/screen-sizes';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { ImageDetails } from '@core/models/image.model';\nimport { VimeoVideoDetails } from '@core/models/vimeo-video-details';\nimport { select } from '@ngrx/store';\nimport KeenSlider, { KeenSliderInstance } from 'keen-slider';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nenum MediaType {\n image = 'image',\n video = 'video',\n}\n\n@Component({\n selector: 'app-media-gallery',\n templateUrl: './media-gallery.component.html',\n styleUrls: ['./media-gallery.component.scss'],\n})\nexport class ProductDetailsMediaComponent implements OnInit, OnDestroy {\n @Input() images$: Observable;\n @Input() size: 'sm' | 'lg' = 'lg';\n @Input() videos$: Observable;\n\n @ViewChild('sliderRef') set sliderRef(element: ElementRef) {\n this.initSlider(element);\n }\n\n readonly DefaultVideoThumbnailPlaceholderSrc = DefaultVideoThumbnailPlaceholderSrc;\n readonly MediaType = MediaType;\n readonly VideoSize = {\n sm: { width: 300, height: 250 },\n lg: { width: 664, height: 400 },\n };\n\n isMobile$: Observable;\n selectedMedia: ImageDetails[] | VimeoVideoDetails;\n selectedMediaType: MediaType;\n slider: KeenSliderInstance = null;\n currentSlide: number = 0;\n dotHelper: Array = [];\n desktopPerView = 5;\n\n thumbnail = Thumbnail;\n\n constructor(private breakpointObserver: BreakpointObserver) {}\n\n ngOnInit(): void {\n this.isMobile$ = this.breakpointObserver.observe(MobileMedia).pipe(select((o) => o.matches));\n this.images$.pipe(take(1)).subscribe((s) => {\n this.selectedMedia = s[0];\n this.selectedMediaType = MediaType.image;\n });\n }\n\n ngOnDestroy(): void {\n this.slider?.destroy();\n }\n\n showDots(): boolean {\n return (\n this.dotHelper.length > this.slider?.options.slides['perView'] &&\n this.slider?.options.slides['perView'] === 1\n );\n }\n\n showArrows(): boolean {\n return this.slider?.options.slides['perView'] === this.desktopPerView;\n }\n\n selectMedia(media: ImageDetails[] | VimeoVideoDetails, type: MediaType): void {\n this.selectedMedia = media;\n this.selectedMediaType = type;\n }\n\n getVideoUrl(id: string): string {\n // eslint-disable-next-line max-len\n return `https://player.vimeo.com/video/${id}?h=2db2743e8c&color=B093B4&autoplay=0&title=0&byline=0&portrait=0`;\n }\n\n private initSlider(sliderRef) {\n this.slider = new KeenSlider(sliderRef.nativeElement, {\n initial: this.currentSlide,\n slideChanged: (s) => {\n this.currentSlide = s.track.details.rel;\n },\n breakpoints: {\n '(min-width: 768px)': {\n slides: { perView: this.desktopPerView, spacing: 5 },\n vertical: true,\n },\n },\n slides: { perView: 1 },\n vertical: false,\n });\n this.dotHelper = [...Array(this.slider.slides.length).keys()];\n }\n}\n","import { NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\n\nexport const DefaultModalOptions: NgbModalOptions = {\n centered: true,\n};\n","\n
    \n {{\n modalConfig.title\n }}\n \n ×\n \n
    \n
    \n \n
    \n
    \n \n {{ getDismissButtonLabel() }}\n \n \n {{ getCloseButtonLabel() }}\n \n
    \n
    \n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Injectable,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { DefaultModalOptions } from '@core/constants/default-modal-options';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@Injectable()\nexport class ModalComponent {\n @Input() public modalConfig: ModalConfig;\n @Output() closed: EventEmitter = new EventEmitter();\n @Output() dismissed: EventEmitter = new EventEmitter();\n\n @ViewChild('modal') private modalContent: TemplateRef;\n\n private modalRef: NgbModalRef;\n\n constructor(private modalService: NgbModal) {}\n\n open(): Promise {\n return new Promise((resolve) => {\n this.modalRef = this.modalService.open(this.modalContent, {\n ...DefaultModalOptions,\n ...this.modalConfig.ngbModalOptions,\n });\n\n this.modalRef.dismissed\n .pipe(\n take(1),\n filter((e) => e === 0 || e === 1),\n )\n .subscribe(() => {\n this.dismissHeader();\n });\n this.modalRef.result.then(resolve, resolve);\n });\n }\n\n dismissOnly() {\n this.modalRef.dismiss();\n this.dismissed.emit();\n }\n\n async close(): Promise {\n if (this.modalConfig.shouldClose === undefined || (await this.modalConfig.shouldClose())) {\n const result = this.modalConfig.onClose === undefined || (await this.modalConfig.onClose());\n this.modalRef?.close(result);\n this.closed.emit();\n }\n }\n\n async dismiss(): Promise {\n if (this.modalConfig.shouldDismiss === undefined || (await this.modalConfig.shouldDismiss())) {\n const result =\n this.modalConfig.onDismiss === undefined || (await this.modalConfig.onDismiss());\n this.modalRef.dismiss(result);\n this.dismissed.emit();\n }\n }\n\n async dismissHeader(): Promise {\n if (this.modalConfig.onDismissHeader === undefined) {\n this.dismiss();\n } else {\n if (\n this.modalConfig.shouldDismiss === undefined ||\n (await this.modalConfig.shouldDismiss())\n ) {\n const result =\n this.modalConfig.onDismissHeader === undefined ||\n (await this.modalConfig.onDismissHeader());\n this.modalRef.dismiss(result);\n }\n }\n }\n\n getDismissButtonLabel = () => this.modalConfig.dismissButtonLabel ?? $localize`Cancel`;\n\n getCloseButtonLabel = () => this.modalConfig.closeButtonLabel ?? $localize`Ok`;\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnDestroy } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { DEFAULT_PAGE_DESCRIPTION, DEFAULT_PAGE_TITLE } from '@core/constants/page-title';\n\n@Component({\n selector: 'app-page-title',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageTitleComponent implements OnChanges, OnDestroy {\n @Input() title: string | string[];\n @Input() delimiter: string = ', ';\n @Input() defaultPageTitle = DEFAULT_PAGE_TITLE;\n @Input() description: string;\n @Input() defaultPageDescription = DEFAULT_PAGE_DESCRIPTION;\n\n constructor(\n private titleService: Title,\n private meta: Meta,\n ) {}\n\n ngOnChanges(): void {\n if (this.title) {\n Array.isArray(this.title)\n ? this.titleService.setTitle(this.title.join(this.delimiter))\n : this.titleService.setTitle(this.title);\n }\n\n if (this.description) {\n this.meta.updateTag({ name: 'description', content: this.description });\n }\n }\n\n ngOnDestroy(): void {\n this.titleService.setTitle(this.defaultPageTitle);\n this.meta.updateTag({ name: 'description', content: this.defaultPageDescription });\n }\n}\n","\n {{ label }}\n
    \n \n
    \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n {{ validationErrorMessage }}\n
    \n
    \n
    {{ item }}
    \n
    \n
    \n {{ noMatchingPasswordWarningText }}\n
    \n
    \n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Input,\n OnDestroy,\n Optional,\n Output,\n SkipSelf,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n ControlValueAccessor,\n FormGroup,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { GeneralPasswordMaxLength } from '@core/constants/password-max-length';\nimport {\n getValidationErrorMessageList,\n validGroup,\n validInput,\n} from '@shared/utils/validation.utils';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'app-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: PasswordInputComponent,\n multi: true,\n },\n ],\n})\nexport class PasswordInputComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n @Output()\n passwordChange: EventEmitter = new EventEmitter();\n\n @Input()\n identifier: string;\n\n @Input()\n label: string;\n\n @Input()\n placeholder: string = $localize`Your password goes here`;\n\n @Input()\n required: boolean = false;\n\n @Input()\n maxLength: number = GeneralPasswordMaxLength;\n\n @Input()\n labelStyle: any = {};\n\n @Input()\n noMatchingPasswordWarningText: string = $localize`Password confirmation does not match`;\n\n @Input()\n formErrorMessages: { [key: string]: string } = FormErrorMessages;\n\n @Input()\n formControlName: string;\n\n @Input()\n groupValidationErrorType: string;\n\n passwordFieldTextType: boolean;\n disabled = false;\n control: AbstractControl;\n form: FormGroup;\n\n getErrorMessages = getValidationErrorMessageList;\n\n value: string;\n\n @ViewChild('input') private input: ElementRef;\n private passwordChangeObs;\n\n private onChangeSubscription: Subscription;\n\n constructor(\n @Optional()\n @Host()\n @SkipSelf()\n private controlContainer: ControlContainer,\n ) {}\n\n ngAfterViewInit(): void {\n this.control = this.controlContainer?.control.get(this.formControlName);\n this.form = this.controlContainer?.control as FormGroup;\n this.passwordChangeObs = fromEvent(this.input.nativeElement, 'keyup');\n this.onChangeSubscription = this.passwordChangeObs.pipe(debounceTime(300)).subscribe(() => {\n this.passwordChange.emit(this.input.nativeElement.value);\n });\n }\n\n onChange: (value: string) => void = () => {};\n onTouched = () => {};\n\n writeValue(value: string): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n togglePasswordFieldTextType(): void {\n this.passwordFieldTextType = !this.passwordFieldTextType;\n }\n\n onKeyUp(event: any) {\n this.value = event.target.value;\n this.onChange(this.value);\n this.onTouched();\n }\n\n focus() {\n this.input.nativeElement.focus();\n }\n\n ngOnDestroy(): void {\n this.onChangeSubscription.unsubscribe();\n }\n\n get isValidInput(): boolean {\n if (this.control) {\n return validInput(this.control);\n }\n return true;\n }\n\n get isValidGroup(): boolean {\n if (this.form && this.groupValidationErrorType) {\n return validGroup(this.form, this.groupValidationErrorType);\n }\n return true;\n }\n\n get errorMessages(): string[] {\n return getValidationErrorMessageList(this.control, this.formErrorMessages);\n }\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\n\n@Component({\n selector: 'app-ph-spinner',\n templateUrl: './ph-spinner.component.html',\n styleUrls: ['./ph-spinner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PhSpinnerComponent {\n @Input() width: string = '50px';\n constructor() {}\n}\n","
    \n \n Loading...\n
    \n","\n {{ ProductTypeMessage[product.type] }}\n\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { getProductTypeMessage } from '@core/constants/product-type-message';\nimport { AddToCartConfirmModelData } from '@core/store/cart/cart-state-models';\nimport {\n ProductDetailsItem,\n ProductItem,\n ProductQuickView,\n} from '@core/store/product/product-state-models';\nimport { PhCurrencyPipe } from '@shared/pipes/ph-currency.pipe';\n\n@Component({\n selector: 'app-product-price-message',\n templateUrl: './product-price-message.component.html',\n styleUrls: ['./product-price-message.component.scss'],\n providers: [PhCurrencyPipe],\n})\nexport class ProductPriceMessageComponent implements OnChanges {\n @Input() product: ProductDetailsItem | ProductItem | ProductQuickView | AddToCartConfirmModelData;\n ProductTypeMessage;\n\n constructor(private phCurrencyPipe: PhCurrencyPipe) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n let product: ProductDetailsItem | ProductItem | ProductQuickView | AddToCartConfirmModelData =\n changes.product?.currentValue;\n\n if (product) {\n this.ProductTypeMessage = getProductTypeMessage(\n this.phCurrencyPipe.transform(product.discountedPrice),\n );\n }\n }\n}\n","/* eslint-disable max-len */\nimport { ProductType } from '@core/enums/product-type.enum';\n\nexport function getProductTypeMessage(price) {\n return {\n [ProductType.ItemNoLongerAvailable]: $localize`Item no longer available.`,\n [ProductType.ActiveInCatalog]: $localize``,\n [ProductType.CatalogItemOutOfStock]: $localize`Available for Party orders only. Not available for eCommerce orders. Contact your Consultant for details.`,\n [ProductType.HostSpecialInCatalog]: $localize`Limited Time Offer for Hosts - ${price}`,\n [ProductType.HostSpecialOutOfCatalog]: $localize`Limited Time Offer for Hosts - ${price}`,\n [ProductType.CustomerSpecial]: $localize`Limited Time Offer!`,\n [ProductType.RegularCustomerSpecial]: $localize`Limited Time Offer!`,\n [ProductType.HealthySavingsSpecial]: $localize`Limited Time Offer!`,\n [ProductType.SurpriseBuy]: $localize`Limited Time Offer!`,\n [ProductType.ECommerceCustomerSpecial]: $localize`Limited Time Offer!`,\n [ProductType.ThreeBooking]: $localize`One of our Three Booking Gifts – Ask your Consultant for details.`,\n [ProductType.BuyOneGetOne50]: $localize``,\n [ProductType.CollectAndSave]: $localize`Limited Time Offer!`,\n [ProductType.HostBookSpec]: $localize`One of our Three Booking Gifts – Ask your Consultant for details.`,\n [ProductType.ComingSoon]: $localize`Coming soon`,\n };\n}\n","
    \n
    \n {{ product.price | phCurrency }}\n
    \n
    \n {{ product.discountedPrice | phCurrency }}\n
    \n
    \n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { ProductType } from '@core/enums/product-type.enum';\nimport { AddToCartConfirmModelData } from '@core/store/cart/cart-state-models';\nimport {\n ProductDetailsItem,\n ProductItem,\n ProductQuickView,\n} from '@core/store/product/product-state-models';\n\n@Component({\n selector: 'app-product-price',\n templateUrl: './product-price.component.html',\n styleUrls: ['./product-price.component.scss'],\n})\nexport class ProductPriceComponent implements OnChanges {\n @Input() compact: boolean = false;\n @Input() product: ProductDetailsItem | ProductItem | ProductQuickView | AddToCartConfirmModelData;\n\n readonly ProductType = ProductType;\n\n isPriceVisible: boolean = true;\n isDiscountedPriceVisible: boolean;\n\n constructor() {}\n ngOnChanges(changes: SimpleChanges): void {\n const product = changes.product?.currentValue;\n if (product) {\n this.setPriceVisibility(product);\n this.setDiscountedPriceVisibility(product);\n }\n }\n\n private setPriceVisibility(\n product: ProductDetailsItem | ProductItem | ProductQuickView | AddToCartConfirmModelData,\n ) {\n if (!product.price) {\n this.isPriceVisible = false;\n }\n }\n\n private setDiscountedPriceVisibility(\n product: ProductDetailsItem | ProductItem | ProductQuickView | AddToCartConfirmModelData,\n ) {\n switch (product.type) {\n case ProductType.CustomerSpecial:\n case ProductType.RegularCustomerSpecial:\n case ProductType.HealthySavingsSpecial:\n case ProductType.SurpriseBuy:\n case ProductType.CollectAndSave:\n case ProductType.ECommerceCustomerSpecial:\n this.isDiscountedPriceVisible = true;\n break;\n\n default:\n this.isDiscountedPriceVisible = false;\n break;\n }\n\n if (!product.discountedPrice) {\n this.isDiscountedPriceVisible = false;\n }\n }\n}\n","\n
    \n

    {{ title }}

    \n
    \n
    \n \n
    \n \n \n \n 3 &&\n slider?.track.details.slides.length - 3 !== currentSlide\n \"\n class=\"arrow-x arrow--right bi bi-chevron-right\"\n >\n \n \n
    \n
    \n \n Go to slide {{ i + 1 }}\n \n
    \n
    \n
    \n","import { Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { RelatedCarouselSlide } from '@core/models/related-carousel-slide.model';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\nimport KeenSlider, { KeenSliderInstance } from 'keen-slider';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-related-carousel',\n templateUrl: './related-carousel.component.html',\n styleUrls: ['./related-carousel.component.scss'],\n})\nexport class RelatedCarouselComponent implements OnDestroy {\n @Input() title: string;\n @Input() slides$: Observable;\n @ViewChild('sliderRef') set sliderRef(element: ElementRef) {\n element && this.initSlider(element);\n }\n\n dragging: boolean = false;\n createUrlName = this.productUtil.createProductDetailsUrl;\n thumbnail = Thumbnail;\n\n slider: KeenSliderInstance = null;\n currentSlide: number = 0;\n dotHelper: Array = [];\n\n constructor(private router: Router, private productUtil: ProductUtilService) {}\n\n showDots(): boolean {\n return (\n this.dotHelper.length > this.slider?.options.slides['perView'] &&\n this.slider?.options.slides['perView'] === 1\n );\n }\n\n showArrows(): boolean {\n return this.slider?.options.slides['perView'] === 3;\n }\n\n navigateTo(url: string) {\n !this.dragging && this.router.navigateByUrl(url);\n }\n\n beforeChange() {\n this.dragging = true;\n }\n\n afterChange() {\n this.dragging = false;\n }\n\n trackBy(slide: any) {\n return slide.targetUrl;\n }\n\n ngOnDestroy(): void {\n if (this.slider) this.slider.destroy();\n }\n\n private initSlider(sliderRef) {\n this.slider = new KeenSlider(sliderRef.nativeElement, {\n initial: this.currentSlide,\n slideChanged: (s) => {\n this.currentSlide = s.track.details.rel;\n },\n breakpoints: {\n '(min-width: 768px)': {\n slides: { perView: 3, spacing: 5 },\n },\n },\n slides: { perView: 1, spacing: 5 },\n });\n this.dotHelper = [...Array(this.slider.slides.length).keys()];\n }\n}\n","import {\n Directive,\n ElementRef,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n Renderer2,\n} from '@angular/core';\nimport { insertAtIndex, localizeRelativeLinks } from '@shared/utils/localize-relative-links';\nimport { Locale } from 'moment';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[phInnerHTML]',\n})\nexport class PhInnerHtmlDirective implements OnChanges {\n @Input() phInnerHTML: string;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {}\n\n ngOnChanges(): void {\n this.renderer.setProperty(\n this.el.nativeElement,\n 'innerHTML',\n this.localizeAbsoluteLinks(localizeRelativeLinks(this.phInnerHTML, this.localeId)),\n );\n }\n\n private localizeAbsoluteLinks(html: string): string {\n const hostname = window.location.hostname.replace('www.', '');\n\n const productPattern = `${hostname}/product`;\n const recipePattern = `${hostname}/recipe`;\n const blogPattern = `${hostname}/blog`;\n\n const localePath = `/${this.localeId}`;\n\n return html\n .replaceAll(productPattern, insertAtIndex(productPattern, localePath, hostname.length))\n .replaceAll(recipePattern, insertAtIndex(recipePattern, localePath, hostname.length))\n .replaceAll(blogPattern, insertAtIndex(blogPattern, localePath, hostname.length))\n .replaceAll('/products/warranties', '/product-warranties');\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-romance-content-wrapper',\n templateUrl: './romance-content-wrapper.component.html',\n styleUrls: ['./romance-content-wrapper.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RomanceContentWrapperComponent {\n @Input() html: string;\n}\n","
    \n","import { Component, Input } from '@angular/core';\nimport { Step } from '@core/models/step.model';\n\n@Component({\n selector: 'app-step-ruler',\n templateUrl: './step-ruler.component.html',\n styleUrls: ['./step-ruler.component.scss'],\n})\nexport class StepRulerComponent {\n @Input()\n step: Step;\n\n constructor() {}\n}\n","\n","
    \n \n \n \n \n \n {{ step.id }}\n \n \n {{ step.title }}\n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Step } from '@core/models/step.model';\n\n@Component({\n selector: 'app-step',\n templateUrl: './step.component.html',\n styleUrls: ['./step.component.scss'],\n})\nexport class StepComponent {\n @Input() step: Step;\n @Output() changeStep: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n changeStepId() {\n this.changeStep.emit(this.step.id);\n }\n}\n","
    \n \n
    0 }\">\n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { Step } from '@core/models/step.model';\nimport { NavigationStep } from '@shared/components/stepper-base/navigation-step.model';\n\n@Component({\n selector: 'app-navigator',\n templateUrl: './navigator.component.html',\n styleUrls: ['./navigator.component.scss'],\n})\nexport class NavigatorComponent implements OnInit, OnChanges {\n @Input() navSteps: NavigationStep[];\n @Input() activeId: number;\n @Input() disableAllInLastStep: boolean = true;\n @Input() canMoveForward: boolean = true;\n @Output() activeIdChange: EventEmitter = new EventEmitter();\n\n steps: Step[];\n lastStep: number;\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['activeId'].previousValue) {\n const prevId = changes['activeId'].previousValue;\n const currId = changes['activeId'].currentValue;\n const currStep = this.steps.find((x) => x.id == currId);\n\n if (currId === this.steps.length && this.disableAllInLastStep) {\n this.steps.forEach((step) => {\n step.completed = true;\n step.active = false;\n step.disabled = true;\n });\n return;\n }\n\n if (prevId < currId) {\n currStep.disabled = false;\n\n for (let i = 0; i < this.steps.length; i++) {\n if (prevId <= i + 1 && i + 1 < currId) {\n this.steps[i].touched = false;\n this.steps[i].completed = true;\n this.steps[i].active = false;\n }\n }\n } else {\n for (let i = 0; i < this.steps.length; i++) {\n if (currId < i + 1 && i + 1 <= prevId) {\n this.steps[i].touched = this.canMoveForward;\n this.steps[i].completed = false;\n this.steps[i].active = false;\n this.steps[i].disabled = !this.canMoveForward;\n }\n }\n currStep.completed = false;\n }\n\n currStep.active = true;\n }\n }\n\n ngOnInit(): void {\n this.steps = this.navSteps\n .sort((a, b) => a.id - b.id)\n .map(\n (navStep, i) =>\n ({\n id: navStep.id,\n title: navStep.title,\n disabled: i > 0,\n touched: false,\n completed: false,\n active: i === 0,\n }) as Step,\n );\n this.lastStep = this.steps.length - 1;\n }\n\n changeStepId(selectedStepId: number) {\n this.activeIdChange.emit(selectedStepId);\n }\n}\n","\n \n {{ label }}\n \n
    \n \n \n \n {{ option?.name || option }}\n \n \n
    \n \n \n \n
    \n
    \n
    \n
    {{ item }}
    \n
    \n
    \n","import { AfterViewInit, Component, Host, Input, Optional, SkipSelf } from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { getValidationErrorMessageList, validInput } from '@shared/utils/validation.utils';\n\nexport interface SelectOption {\n name: string;\n value: any;\n}\n\n@Component({\n selector: 'app-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SelectComponent,\n multi: true,\n },\n ],\n})\nexport class SelectComponent implements ControlValueAccessor, AfterViewInit {\n @Input() identifier: string;\n @Input() label: string;\n @Input() formErrorMessages: { [key: string]: string } = FormErrorMessages;\n @Input() formControlName: string;\n @Input() options: SelectOption[] | string[];\n @Input() labelStyle: Record = {};\n @Input() defaultValue: any = $localize`Select`;\n @Input() value: string;\n @Input() readonly: boolean = false;\n\n disabled = false;\n control: AbstractControl;\n\n getErrorMessages = getValidationErrorMessageList;\n\n constructor(\n @Optional()\n @Host()\n @SkipSelf()\n private controlContainer: ControlContainer,\n ) {}\n\n ngAfterViewInit(): void {\n this.control = this.controlContainer?.control.get(this.formControlName);\n }\n\n onChange: (value: string) => void = () => {};\n\n onTouched = () => {};\n\n writeValue(obj: any): void {\n this.value = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n isValueEmpty() {\n return !this.value;\n }\n\n isMatchingWithValue(option: any) {\n return option === this.value;\n }\n\n onSelectChange(value: string) {\n this.value = value;\n this.onChange(value);\n }\n\n get isValidInput(): boolean {\n if (this.control) {\n return validInput(this.control);\n }\n return true;\n }\n\n get errorMessages(): string[] {\n return getValidationErrorMessageList(this.control, this.formErrorMessages);\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidEmailRegExp } from '@core/constants/patterns';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport { shareInEmail } from '@core/store/share/share.actions';\nimport { selectUser } from '@core/store/user';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nenum emailFormKey {\n to = 'to',\n yourName = 'yourName',\n friendName = 'friendName',\n subject = 'subject',\n message = 'message',\n}\n\n@Component({\n selector: 'app-email-share-modal',\n templateUrl: './email-share-modal.component.html',\n styleUrls: ['./email-share-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailShareModalComponent implements OnInit, OnDestroy {\n readonly emailFormKey = emailFormKey;\n modalConfig: ModalConfig = {\n title: $localize`Email a friend`,\n hideCloseButton: true,\n hideDismissButton: true,\n };\n subscriptions: Subscription = new Subscription();\n emailFormGroup: FormGroup;\n\n @ViewChild('modal') private modal: ModalComponent;\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n ) {}\n\n ngOnInit(): void {\n this.emailFormGroup = this.fb.group({\n [emailFormKey.to]: ['', [Validators.required, emailValidator(ValidEmailRegExp)]],\n [emailFormKey.yourName]: ['', [Validators.required]],\n [emailFormKey.friendName]: ['', [Validators.required]],\n [emailFormKey.subject]: ['', [Validators.required]],\n [emailFormKey.message]: [''],\n });\n\n this.subscriptions.add(\n this.store$\n .select(selectUser)\n .pipe(filter((user) => !!user.email))\n .subscribe((user) => {\n this.emailFormGroup.patchValue({\n [emailFormKey.yourName]: `${user.firstName} ${user.lastName}`,\n });\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n open() {\n this.modal.open();\n }\n\n sendEmail() {\n this.store$.dispatch(\n shareInEmail({\n payload: {\n name: this.emailFormGroup.value[emailFormKey.yourName],\n friendName: this.emailFormGroup.value[emailFormKey.friendName],\n url: window.location.href,\n emailTo: this.emailFormGroup.value[emailFormKey.to],\n subject: this.emailFormGroup.value[emailFormKey.subject],\n message: this.emailFormGroup.value[emailFormKey.message],\n },\n }),\n );\n this.modal.close();\n }\n}\n","\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';\nimport { EmailShareModalComponent } from './email-share-modal/email-share-modal.component';\n\n@Component({\n selector: 'app-share-buttons',\n templateUrl: './share-buttons.component.html',\n styleUrls: ['./share-buttons.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShareButtonsComponent {\n @ViewChild('modal') private modal: EmailShareModalComponent;\n\n constructor() {}\n\n facebookClickHandler() {\n window.open(\n `https://www.facebook.com/sharer/sharer.php?u=${window.location.href}`,\n 'pop',\n 'width=600, height=400, scrollbars=no',\n );\n }\n\n twitterClickHandler() {\n window.open(`https://twitter.com/intent/tweet?url=${window.location.href}`);\n }\n\n pinterestClickHandler() {\n window.open(`https://www.pinterest.com/pin/create/button/?url=${window.location.href}`);\n }\n\n emailClickHandler() {\n this.modal.open();\n }\n}\n","
    \n \n \n \n \n \n \n \n \n
    \n\n\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[trim]',\n})\nexport class InputTrimDirective {\n constructor(private el: ElementRef) {}\n\n @HostListener('blur') onBlur() {\n const value = this.el.nativeElement.value;\n const valueTrim = value.trim();\n\n if (value !== valueTrim) {\n this.el.nativeElement.value = valueTrim;\n }\n }\n}\n","\n {{ label }}\n
    \n \n \n \n \n
    \n \n \n \n
    \n
    \n
    \n {{ validationErrorMessage }}\n
    \n \n
    {{ item }}
    \n \n
    \n {{ invalidGroupErrorMessage }}\n
    \n
    \n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Host,\n Input,\n Optional,\n SkipSelf,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n ControlValueAccessor,\n FormGroup,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { environment } from '@env';\nimport {\n getValidationErrorMessageList,\n validGroup,\n validInput,\n} from '@shared/utils/validation.utils';\nimport { MaskPipe } from 'ngx-mask';\n\ntype InputType = 'text' | 'tel' | 'email' | 'password';\n\n@Component({\n selector: 'app-text-field-input',\n templateUrl: './text-field-input.component.html',\n styleUrls: ['./text-field-input.component.scss'],\n providers: [\n MaskPipe,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: TextFieldInputComponent,\n multi: true,\n },\n ],\n})\nexport class TextFieldInputComponent implements ControlValueAccessor, AfterViewInit {\n @Input() identifier: string;\n @Input() label: string;\n @Input() placeholder: string;\n @Input() validationErrorMessage: string;\n @Input() formErrorMessages: { [key: string]: string } = FormErrorMessages;\n @Input() groupValidationErrorType: string;\n @Input() invalidGroupErrorMessage: string = $localize`Email confirmation does not match`;\n @Input() readonly: boolean = false;\n @Input() type: InputType = 'text';\n @Input() labelStyle: any = {};\n @Input() labelAsterix: boolean = false;\n @Input() isDataPrivate: boolean = false;\n @Input() formControlName: string;\n @ViewChild('input') input: ElementRef;\n\n readonly envTel = environment.tel;\n\n disabled = false;\n value: string;\n control: AbstractControl;\n form: FormGroup;\n\n private telSelectionStart: number;\n private telSelectionEnd: number;\n\n constructor(\n private maskPipe: MaskPipe,\n @Optional()\n @Host()\n @SkipSelf()\n private controlContainer: ControlContainer,\n ) {}\n\n ngAfterViewInit(): void {\n if (this.isDataPrivate) {\n document.getElementById(this.identifier)?.setAttribute('data-private', '');\n }\n this.control = this.controlContainer?.control.get(this.formControlName);\n this.form = this.controlContainer?.control as FormGroup;\n }\n\n onChange: (value: string) => void = () => {};\n\n onTouched = () => {};\n\n writeValue(value: string): void {\n if (this.type === 'tel') {\n /**\n * This value check is needed because, if we don't check it and it is an empty string\n * than it will override with the prefix (by masking process) value and the placeholders won't be visible\n */\n if (!!value) {\n // This setTimeout needed because the ngx-masked has a bug, you can see it in the bellow link\n // https://github.com/JsDaddy/ngx-mask/issues/1041\n setTimeout(() => (this.value = this.getTelPrettyValue(value)));\n }\n } else {\n this.value = value;\n }\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onKeyUp(event: any) {\n this.changeValue(event.target.value);\n this.onTouched();\n }\n\n onBlur(event: any) {\n const value = event.target.value;\n if (!!value) {\n this.changeValue(value);\n }\n }\n\n onMouseUp(event: any): void {\n this.telSelectionStart =\n event.target.selectionStart < this.envTel.prefix.length\n ? this.envTel.prefix.length\n : event.target.selectionStart;\n this.telSelectionEnd =\n event.target.selectionEnd < this.envTel.prefix.length\n ? this.envTel.prefix.length\n : event.target.selectionEnd;\n }\n\n onClick(): void {\n this.input.nativeElement.setSelectionRange(this.telSelectionStart, this.telSelectionEnd);\n }\n\n get isValidInput(): boolean {\n if (this.control) {\n return validInput(this.control);\n }\n return true;\n }\n\n get isValidGroup(): boolean {\n if (this.form && this.groupValidationErrorType) {\n return validGroup(this.form, this.groupValidationErrorType);\n }\n return true;\n }\n\n get errorMessages(): string[] {\n return getValidationErrorMessageList(this.control, this.formErrorMessages);\n }\n\n private getTelRawValue(value: string) {\n return this.removeTelMask(this.removeTelPrefix(value));\n }\n\n private getTelPrettyValue(value: string) {\n return this.addTelPrefix(this.addTelMask(value));\n }\n\n private removeTelPrefix(value: string) {\n if (environment.tel.prefix.length) {\n return value.replace(environment.tel.prefix, '').replace(/\\D+/g, '');\n }\n return value;\n }\n\n private removeTelMask(value: string) {\n if (environment.tel.mask.length) {\n return value.replace(/\\D+/g, '');\n }\n return value;\n }\n\n private addTelMask(value: string) {\n if (environment.tel.mask) {\n return this.maskPipe.transform(value, environment.tel.mask);\n }\n return value;\n }\n\n private addTelPrefix(value: string) {\n if (environment.tel.prefix) {\n return `${environment.tel.prefix}${value}`;\n }\n return value;\n }\n\n private changeValue(value: string): void {\n this.value = value;\n if (this.type === 'tel') {\n this.onChange(this.getTelRawValue(value));\n } else {\n this.onChange(value);\n }\n }\n}\n","\n {{ label }}\n
    \n \n
    \n \n \n \n
    \n
    \n
    \n
    {{ item }}
    \n
    \n
    \n","import { AfterViewInit, Component, Host, Input, Optional, SkipSelf } from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { getValidationErrorMessageList, validInput } from '@shared/utils/validation.utils';\n\n@Component({\n selector: 'app-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: TextareaComponent,\n multi: true,\n },\n ],\n})\nexport class TextareaComponent implements ControlValueAccessor, AfterViewInit {\n @Input() identifier: string;\n @Input() label: string;\n @Input() formErrorMessages: { [key: string]: string } = FormErrorMessages;\n @Input() formControlName: string;\n @Input() labelAsterix: boolean = false;\n @Input() placeholder: string = '';\n @Input() readonly: boolean = false;\n @Input() rows: number = 2;\n\n disabled = false;\n value: string;\n control: AbstractControl;\n\n getErrorMessages = getValidationErrorMessageList;\n\n constructor(\n @Optional()\n @Host()\n @SkipSelf()\n private controlContainer: ControlContainer,\n ) {}\n\n ngAfterViewInit(): void {\n this.control = this.controlContainer?.control.get(this.formControlName);\n }\n\n onChange: (value: string) => void = () => {};\n onTouched = () => {};\n\n writeValue(value: string): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onKeyUp(event: any): void {\n this.value = event.target.value;\n this.onChange(this.value);\n this.onTouched();\n }\n\n get isValidInput(): boolean {\n if (this.control) {\n return validInput(this.control);\n }\n return true;\n }\n\n get errorMessages(): string[] {\n return getValidationErrorMessageList(this.control, this.formErrorMessages);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { PaymentImageSrc } from '@core/constants/payment.consts';\n\n@Component({\n selector: 'app-voucher-instructions',\n templateUrl: './voucher-instructions.component.html',\n styleUrls: ['./voucher-instructions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VoucherInstructionsComponent {\n readonly PaymentImageSrc = PaymentImageSrc;\n constructor() {}\n}\n","
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n

    Get your Paynet reference when selecting to pay in cash.

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n

    Print it or take it from your cell phone to any affiliated store.

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n

    Give it to the cashier and make your payment. Save the voucher.

    \n
    \n
    \n
    \n
    \n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Directive, ElementRef, Input, OnChanges, Renderer2 } from '@angular/core';\nimport { DefaultImagePlaceholderSrc } from '@core/constants/image-placeholders';\nimport { MobileMedia } from '@core/constants/screen-sizes';\n\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { ImageDetails } from '@core/models/image.model';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'img[phImage]',\n})\nexport class PhImageDirective implements OnChanges {\n @Input() images: ImageDetails[];\n @Input() placeholderSrc: string;\n @Input() thumbnailDesktop: Thumbnail;\n @Input() thumbnailMobile: Thumbnail;\n @Input() altText: string;\n\n constructor(\n private renderer: Renderer2,\n private el: ElementRef,\n private breakpointObserver: BreakpointObserver,\n ) {}\n\n ngOnChanges(): void {\n const thumbnailKey = this.breakpointObserver.isMatched(MobileMedia)\n ? this.thumbnailMobile\n : this.thumbnailDesktop;\n\n const thumbnailImg =\n this.images?.find((i) => i.thumbnailProfile === thumbnailKey) || this.images?.[0];\n\n this.setSrc(thumbnailImg?.url);\n this.setAlt(thumbnailImg?.altText);\n }\n\n private setSrc(src: string) {\n this.renderer.setAttribute(\n this.el.nativeElement,\n 'src',\n src || this.el.nativeElement.src || this.placeholderSrc || DefaultImagePlaceholderSrc,\n );\n }\n\n private setAlt(altText: string) {\n this.renderer.setAttribute(\n this.el.nativeElement,\n 'alt',\n this.altText || altText || this.el.nativeElement.alt,\n );\n }\n}\n","import { formatCurrency, getCurrencySymbol } from '@angular/common';\nimport { DEFAULT_CURRENCY_CODE, Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'phCurrency',\n})\nexport class PhCurrencyPipe implements PipeTransform {\n constructor(\n @Inject(LOCALE_ID) private localeId: string,\n @Inject(DEFAULT_CURRENCY_CODE) private currencyCode,\n ) {}\n\n transform(\n value: number,\n currencyCode: string = this.currencyCode,\n digitsInfo: string = '0.2-2',\n locale: string = this.localeId,\n ): string | null {\n return formatCurrency(\n value,\n locale,\n getCurrencySymbol(currencyCode, 'narrow'),\n currencyCode,\n digitsInfo,\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeUrl',\n})\nexport class SafeResourceUrlPipe implements PipeTransform {\n /**\n * Pipe Constructor\n *\n * @param sanitizer: DomSanitezer\n */\n // tslint:disable-next-line\n constructor(protected sanitizer: DomSanitizer) {}\n\n /**\n * Transform\n *\n * @param value: string\n */\n transform(value: string): SafeResourceUrl {\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ToFixedPipe } from '@shared/pipes/to-fixed.pipe';\nimport { AppRoutingModule } from 'app/app-routing.module';\nimport { NgCircleProgressModule } from 'ng-circle-progress';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { AccountHeaderComponent } from './components/account-header/account-header.component';\nimport { ActionCardComponent } from './components/action-card/action-card.component';\nimport { AddressErrorMessagesComponent } from './components/address-validation/address-validation-error-messages/address-error-messages.component';\nimport { AddressValidationComponent } from './components/address-validation/address-validation.component';\nimport { InfoCardComponent } from './components/app-info-card/app-info-card.component';\nimport { BreadcrumbWrapperComponent } from './components/breadcrumb-wrapper/breadcrumb-wrapper.component';\nimport { CircularProgressComponent } from './components/circular-progress/circular-progress.component';\nimport { ConditionalContentByPageCategoryComponent } from './components/conditional-content-by-page-category/conditional-content-by-page-category.component';\nimport { ConditionalContentComponent } from './components/conditional-content/conditional-content.component';\nimport { ConfirmModalComponent } from './components/confirm-modal/confirm-modal.component';\nimport { CurrencyFieldInputComponent } from './components/currency-field-input/currency-field-input.component';\nimport { FullPageSpinnerComponent } from './components/full-page-spinner/full-page-spinner.component';\nimport { InfoModalComponent } from './components/info-modal/info-modal.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { NotFoundPageComponent } from './components/not-found-page/not-found-page.component';\nimport { NumberFieldInputComponent } from './components/number-field-input/number-field-input.component';\nimport { OxxoVoucherContainerComponent } from './components/oxxo-voucher-container/oxxo-voucher-container.component';\nimport { PageTitleComponent } from './components/page-title/page-title.component';\nimport { PasswordInputComponent } from './components/password-input/password-input.component';\nimport { PhSelectComponent } from './components/ph-select/ph-select.component';\nimport { PhSpinnerComponent } from './components/ph-spinner/ph-spinner.component';\nimport { PlusMinusCounterComponent } from './components/plus-minus-counter/plus-minus-counter.component';\nimport { ProductPriceMessageComponent } from './components/product-price-message/product-price-message.component';\nimport { ProductPriceComponent } from './components/product-price/product-price.component';\nimport { RelatedCarouselComponent } from './components/related-carousel/related-carousel.component';\nimport { RomanceContentWrapperComponent } from './components/romance-content-wrapper/romance-content-wrapper.component';\nimport { NavigatorComponent } from './components/ruler-stepper/navigator/navigator.component';\nimport { StepRulerComponent } from './components/ruler-stepper/step-ruler/step-ruler.component';\nimport { StepComponent } from './components/ruler-stepper/step/step.component';\nimport { SelectComponent } from './components/select/select.component';\nimport { EmailShareModalComponent } from './components/share-buttons/email-share-modal/email-share-modal.component';\nimport { ShareButtonsComponent } from './components/share-buttons/share-buttons.component';\nimport { SortableTableActionComponent } from './components/sortable-table/sortable-table-action/sortable-table-action.component';\nimport { SortableTableHeaderDirective } from './components/sortable-table/sortable-table-header.directive';\nimport { SortableTableComponent } from './components/sortable-table/sortable-table.component';\nimport { SsnNumberFieldInputComponent } from './components/ssn-number-field-input/ssn-number-field-input.component';\nimport { TextFieldInputComponent } from './components/text-field-input/text-field-input.component';\nimport { TextareaComponent } from './components/textarea/textarea.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport { VoucherInstructionsComponent } from './components/voucher-instructions/voucher-instructions.component';\nimport { InputTrimDirective } from './directives/input-trim/input-trim.directive';\nimport { PhImageDirective } from './directives/ph-image/ph-image.directive';\nimport { PhInnerHtmlDirective } from './directives/ph-inner-html/ph-inner-html.directive';\nimport { FillUrlsPipe } from './pipes/fill-urls.pipe';\nimport { LocalizeAbsUrlsPipe } from './pipes/localize-abs-urls.pipe';\nimport { PhCurrencyPipe } from './pipes/ph-currency.pipe';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { SafeResourceUrlPipe } from './pipes/safe-url.pipe';\n\n@NgModule({\n declarations: [\n ToastComponent,\n TextFieldInputComponent,\n NumberFieldInputComponent,\n PasswordInputComponent,\n CurrencyFieldInputComponent,\n TextareaComponent,\n SelectComponent,\n AccountHeaderComponent,\n ConditionalContentComponent,\n ToFixedPipe,\n PhCurrencyPipe,\n SafeHtmlPipe,\n SafeResourceUrlPipe,\n ModalComponent,\n PhSpinnerComponent,\n SortableTableComponent,\n SortableTableHeaderDirective,\n PlusMinusCounterComponent,\n RelatedCarouselComponent,\n CircularProgressComponent,\n AddressValidationComponent,\n InfoCardComponent,\n ConfirmModalComponent,\n BreadcrumbWrapperComponent,\n PhImageDirective,\n ActionCardComponent,\n ConditionalContentByPageCategoryComponent,\n ShareButtonsComponent,\n EmailShareModalComponent,\n SortableTableActionComponent,\n AddressErrorMessagesComponent,\n SsnNumberFieldInputComponent,\n ProductPriceComponent,\n ProductPriceMessageComponent,\n FullPageSpinnerComponent,\n InputTrimDirective,\n InfoModalComponent,\n VoucherInstructionsComponent,\n OxxoVoucherContainerComponent,\n PhInnerHtmlDirective,\n NotFoundPageComponent,\n PageTitleComponent,\n RomanceContentWrapperComponent,\n FillUrlsPipe,\n LocalizeAbsUrlsPipe,\n PhSelectComponent,\n StepComponent,\n StepRulerComponent,\n NavigatorComponent,\n ],\n imports: [\n AppRoutingModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgbModule,\n NgSelectModule,\n NgxMaskModule.forRoot(),\n NgCircleProgressModule.forRoot(),\n ],\n exports: [\n NgbModule,\n ToastComponent,\n TextFieldInputComponent,\n NumberFieldInputComponent,\n PasswordInputComponent,\n CurrencyFieldInputComponent,\n TextareaComponent,\n SelectComponent,\n AccountHeaderComponent,\n ConditionalContentComponent,\n ToFixedPipe,\n PhCurrencyPipe,\n SafeHtmlPipe,\n SafeResourceUrlPipe,\n ModalComponent,\n PhSpinnerComponent,\n SortableTableComponent,\n PlusMinusCounterComponent,\n RelatedCarouselComponent,\n CircularProgressComponent,\n AddressValidationComponent,\n InfoCardComponent,\n ConfirmModalComponent,\n BreadcrumbWrapperComponent,\n PhImageDirective,\n ActionCardComponent,\n ConditionalContentByPageCategoryComponent,\n ShareButtonsComponent,\n SsnNumberFieldInputComponent,\n ProductPriceComponent,\n ProductPriceMessageComponent,\n FullPageSpinnerComponent,\n InputTrimDirective,\n InfoModalComponent,\n VoucherInstructionsComponent,\n OxxoVoucherContainerComponent,\n PhInnerHtmlDirective,\n PageTitleComponent,\n RomanceContentWrapperComponent,\n FillUrlsPipe,\n LocalizeAbsUrlsPipe,\n PhSelectComponent,\n StepComponent,\n StepRulerComponent,\n NavigatorComponent,\n ],\n})\nexport class SharedModule {}\n","import { CountryState } from '@core/store/address/address-state-models';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport function countryStatesToSelectOptions(\n countryStates$: Observable,\n): Observable {\n return countryStates$.pipe(\n map((countryStates) => countryStates.map((s) => ({ name: s.name, value: s.code }))),\n );\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { Locale } from '@core/enums/locale';\nimport { MediaSuffix } from '@core/enums/media-suffix.enum';\nimport { ImageDetails } from '@core/models/image.model';\nimport { VimeoVideoDetails } from '@core/models/vimeo-video-details';\n\nexport const MediaTypeLocale = {\n [MediaSuffix.primaryImage]: $localize`primary image`,\n [MediaSuffix.secondaryImage]: $localize`secondary image`,\n [MediaSuffix.video]: $localize`video`,\n};\n\nexport interface productAltTextParams {\n productName?: string;\n collectionName?: string;\n suffix?: MediaSuffix;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AltTextUtilService {\n constructor(@Inject(LOCALE_ID) private localeId: Locale) {}\n\n getPhImagesWithAltText(images: ImageDetails[], altText: string) {\n return images.map((image) => ({ ...image, altText }));\n }\n\n getProductImagesWithAltText(\n images: ImageDetails[],\n params?: productAltTextParams,\n ): ImageDetails[] {\n let altText = '';\n\n switch (this.localeId) {\n case Locale.EsMX:\n case Locale.EsUS:\n altText = `${params.productName} ${params.collectionName}`;\n break;\n\n default:\n altText = `${params.collectionName} ${params.productName}`;\n break;\n }\n\n if (params?.suffix) {\n altText = `${altText} ${MediaTypeLocale[params.suffix]}`;\n }\n\n if (params) {\n return images.map((image) => ({ ...image, altText }));\n }\n\n return images;\n }\n\n getVimeoDetailsWithAltText(\n vimeoDetails: VimeoVideoDetails,\n params?: productAltTextParams,\n ): VimeoVideoDetails {\n let altText = '';\n\n switch (this.localeId) {\n case Locale.EsUS:\n altText = `${params.productName} ${params.collectionName}`;\n break;\n\n default:\n altText = `${params.collectionName} ${params.productName}`;\n break;\n }\n\n altText = `${altText} ${MediaTypeLocale[MediaSuffix.video]}`;\n\n return { ...vimeoDetails, altText };\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { AppSettings } from '@core/models/app-settings.model';\n\nexport const APP_CONFIG = new InjectionToken('Application settings');\n","export function distinctByProp(array: T[], prop: keyof T) {\n return array.filter((x, i, arr) => arr.findIndex((y) => y[prop] === x[prop]) === i);\n}\n\nexport const isArray = (a) => Array.isArray(a);\n","import { InfoCardAttributes } from '@core/models/info-card-attributes.model';\nimport { Address } from '@core/store/address/address-state-models';\nimport { BillingAddressModel, PersonalInfo } from '@core/store/checkout/checkout-state-models';\nimport { Party } from '@core/store/consultant/consultant-state-models';\nimport { OrderAddress, OrderCustomer } from '@core/store/order/order-state-models';\nimport { UserModel } from '@core/store/user/user-state-models';\n\nexport function createPersonalInfoCard(\n billingCustomer: UserModel | OrderCustomer,\n readOnly: boolean,\n): InfoCardAttributes {\n return {\n title: $localize`Personal information`,\n name: `${billingCustomer.firstName} ${billingCustomer.lastName}`,\n email: billingCustomer.email,\n phone: billingCustomer.phoneNumber,\n readOnly,\n };\n}\n\nexport function createShippingInfoCard(personalInfo: PersonalInfo, readOnly): InfoCardAttributes {\n const title = $localize`Shipping information`;\n return createAddressCard(\n personalInfo.shippingAddress.address,\n personalInfo.shippingAddress.firstName,\n personalInfo.shippingAddress.lastName,\n title,\n readOnly,\n personalInfo.shippingAddress.phoneNumber,\n );\n}\n\n// TODO: PHS-2439 - Use billing address form store\nexport function createBillingInfoCard(\n billingInfo: BillingAddressModel,\n readOnly: boolean,\n): InfoCardAttributes {\n const title = $localize`Billing information`;\n return createAddressCard(\n billingInfo.address,\n billingInfo.firstName,\n billingInfo.lastName,\n title,\n readOnly,\n );\n}\n\nexport function createAddressCardFromOrderAddress(\n address: OrderAddress,\n title: string,\n): InfoCardAttributes {\n return createAddressCard(\n {\n addressLine1: address.addressLine1,\n addressLine2: address.addressLine2,\n addressLine3: address.addressLine3,\n city: address.city,\n state: address.state,\n zipCode: address.zipCode,\n } as Address,\n address.firstName,\n address.lastName,\n title,\n true,\n );\n}\n\nexport function createPartyInfoCard(consultantName: string, party: Party): InfoCardAttributes {\n const title = party ? $localize`Party information` : $localize`Consultant information`;\n if (party?.hostName) {\n return {\n title,\n consultant: consultantName,\n host: party.hostName,\n readOnly: true,\n };\n }\n return { consultant: consultantName, title };\n}\n\nexport function createConsultantInfoCard(\n consultantFirstName: string,\n consultantLastName: string,\n): InfoCardAttributes {\n return { consultant: consultantFirstName + ' ' + consultantLastName };\n}\n\nexport function createHostInfoCard(host: string): InfoCardAttributes {\n return { host: host };\n}\n\nfunction createAddressCard(\n address: Address,\n firstName: string,\n lastName: string,\n title: string,\n readOnly: boolean,\n phoneNumber: string = '',\n): InfoCardAttributes {\n const addressLine = createAddressLine(\n address.addressLine1,\n address.addressLine2,\n address.addressLine3,\n );\n return {\n title: `${title}`,\n name: `${firstName} ${lastName}`,\n phone: phoneNumber,\n addressLine1: `${addressLine},`,\n addressLine2: `${address.city}, ${address.state} ${address.zipCode}`,\n readOnly,\n };\n}\n\nfunction createAddressLine(\n addressLine1: string,\n addressLine2: string,\n addressLine3: string,\n): string {\n let addressLine: string = addressLine1;\n if (!!addressLine2) {\n addressLine = `${addressLine} ${addressLine2}`;\n }\n if (!!addressLine3) {\n addressLine = `${addressLine} ${addressLine3}`;\n }\n return addressLine;\n}\n","import { SubmitContactInfoDto, SubmitUserInfoParamsDto } from '@core/dto/start-now-app.dto';\nimport { ContactInfo, UserInfo } from '@core/store/start-now-app/start-now-app-state-models';\n\nexport function mapUserInfoToSubmitUserInfoParamsDto(userInfo: UserInfo): SubmitUserInfoParamsDto {\n return {\n firstName: userInfo.firstName,\n middleName: userInfo.middleName,\n lastName: userInfo.lastName,\n birthday: userInfo.birthday,\n nickName: userInfo.firstName,\n password: userInfo.password,\n governmentId: userInfo.ssnNumber,\n };\n}\n\nexport function mapContactInfoToSubmitContactInfoDto(\n contactInfo: ContactInfo,\n): SubmitContactInfoDto {\n return {\n email: contactInfo.email,\n cellPhoneNumber: contactInfo.cellPhoneNumber,\n homeNumber: contactInfo.homeNumber,\n canBeContactedOnWhatsApp: contactInfo.whatsapp,\n canBeContactedOnSms: contactInfo.sms,\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function emailValidator(pattern: RegExp): ValidatorFn {\n return (control: AbstractControl): ValidationErrors =>\n !control.value || pattern.test(control.value) ? null : { email: true };\n}\n","import { InjectionToken } from '@angular/core';\nimport { Country } from '@core/enums/country.enum';\nimport { environment } from '@env';\n\nexport const isMexEnv = environment.country === Country.Mexico;\nexport const isUsaEnv = environment.country === Country.Usa;\nexport const logrocketId = `${environment.logRocketId}/${environment.environmentName}`;\n\nexport const IS_MEX_ENV = new InjectionToken('Is Mexico environment', {\n providedIn: 'root',\n factory: (): boolean => environment.country === Country.Mexico,\n});\n\nexport const IS_USA_ENV = new InjectionToken('Is USA environment', {\n providedIn: 'root',\n factory: (): boolean => environment.country === Country.Usa,\n});\n","import { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { PaymentType } from '@core/enums/payment-type.enum';\n\nexport function getKushkiFormIdType(paymentType: PaymentType): KushkiFormIdTypes {\n if (paymentType === PaymentType.CreditOrDebitCard) {\n return KushkiFormIdTypes.Card;\n } else if (paymentType === PaymentType.BankTransfer) {\n return KushkiFormIdTypes.BankTransfer;\n }\n return undefined;\n}\n","export function getMaskedCardNumber(firstFour?: string, lastFour?: string) {\n return firstFour && lastFour ? firstFour + ' **** **** ' + lastFour : 'XXXX XXXX XXXX XXXX';\n}\n","import { HttpParameterCodec } from '@angular/common/http';\n\nexport class HtmlParamEncoder implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\n","import { Locale } from '@core/enums/locale';\n\nexport function getCulture(localeId: Locale): Locale {\n if (localeId.split('-')[0] === Locale.En) {\n return Locale.En;\n }\n\n return localeId;\n}\n\nexport function getLanguage(localeId: Locale): string {\n return localeId.split('-')[0];\n}\n","import { Locale } from 'moment';\n\nexport function localizeRelativeLinks(html: string, localeId: Locale): string {\n const linkRx = /]*?\\s+)?href=([\"'])(?!http)(.*?)\\1/g;\n return html.replace(linkRx, (match, p1, p2) => {\n if (!p2.includes(`/${localeId}/`, 0)) {\n return match.replace(p2, `/${localeId}${p2}`);\n }\n return match;\n });\n}\n\nexport function localizeAbsoluteLinks(html: string, localeId: Locale): string {\n const hostname = window.location.hostname.replace('www.', '');\n const rx = new RegExp(`${hostname}(?!(\\/en-US|\\/es-US|\\/es-MX))`, 'g');\n\n return html.replace(rx, `${hostname}/${localeId}`);\n\n}\n\nexport function insertAtIndex(str: string, substring: string, index: number) {\n return str.slice(0, index) + substring + str.slice(index);\n}\n","import { isArray } from './array-utils';\n\nexport const isObject = (o) => o === Object(o) && !isArray(o) && typeof o !== 'function';\n\nexport function removeNilProperties(obj: any): any {\n return Object.fromEntries(\n Object.entries(obj).filter(([, value]) => value !== null && value !== undefined),\n );\n}\n\nexport function isNotNil(obj: any): boolean {\n return obj !== null && obj !== undefined;\n}\n","/* eslint-disable indent */\nimport { Inject, Injectable } from '@angular/core';\nimport { ProductRoutes } from '@core/constants/routes.const';\nimport { ConsultantFinancialStateEnum } from '@core/enums/consultant-financial-state.enum';\nimport { MediaSuffix } from '@core/enums/media-suffix.enum';\nimport { ProductType } from '@core/enums/product-type.enum';\nimport { RelatedCarouselSlide } from '@core/models/related-carousel-slide.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { AddToCartConfirmModelData } from '@core/store/cart/cart-state-models';\nimport { selectConsultantFinancialState } from '@core/store/consultant';\nimport {\n ProductDetailsItem,\n ProductItem,\n ProductQuickView,\n ProductRecommendation,\n} from '@core/store/product/product-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AltTextUtilService } from './alt-text-util.service';\nimport { IS_USA_ENV } from './environment-utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductUtilService {\n isShoppingEnabled$: Observable = this.isUsaEnv\n ? of(this.appInitService.Settings.ec.isCartEnabled)\n : this.store$\n .select(selectConsultantFinancialState)\n .pipe(\n map((financialState) =>\n financialState === ConsultantFinancialStateEnum.NotAllowedToPlaceOrders\n ? false\n : this.appInitService.Settings.ec.isCartEnabled,\n ),\n );\n\n constructor(\n private altTextUtil: AltTextUtilService,\n private store$: Store,\n private appInitService: AppInitService,\n @Inject(IS_USA_ENV) private isUsaEnv: boolean,\n ) {}\n\n createProductDetailsUrl(collectionUrl: string, productUrl: string, sku: string): string {\n if (!sku) {\n return '';\n }\n\n let url = `/${ProductRoutes.Product}/`;\n if (collectionUrl && productUrl) {\n url += `${collectionUrl}/${productUrl}/`;\n }\n url += `${ProductRoutes.P}/${sku}`;\n return url.toLowerCase();\n }\n\n getRelatedSlidesFromRecommendations(\n recommendations: ProductRecommendation[],\n ): RelatedCarouselSlide[] {\n return recommendations.map((r) => ({\n images: this.altTextUtil.getProductImagesWithAltText(r.primaryImages, {\n productName: r.name,\n collectionName: r.collectionName,\n suffix: MediaSuffix.primaryImage,\n }),\n targetUrl: this.createProductDetailsUrl(r.collectionUrlName, r.productUrlName, r.sku),\n }));\n }\n\n getAddToCartButtonVisibility$(\n product: ProductDetailsItem | ProductItem | ProductQuickView | AddToCartConfirmModelData,\n ): Observable {\n if (!this.appInitService.Settings.ec.isCartEnabled) {\n return of(false);\n }\n\n if (!product.price) {\n return of(false);\n }\n\n switch (product.type) {\n case ProductType.ItemNoLongerAvailable:\n case ProductType.CatalogItemOutOfStock:\n case ProductType.HostSpecialOutOfCatalog:\n case ProductType.ThreeBooking:\n case ProductType.BuyOneGetOne50:\n case ProductType.HostBookSpec:\n case ProductType.ComingSoon:\n return of(false);\n\n default:\n return this.isUsaEnv\n ? of(true)\n : this.store$\n .select(selectConsultantFinancialState)\n .pipe(\n map(\n (financialState) =>\n financialState !== ConsultantFinancialStateEnum.NotAllowedToPlaceOrders,\n ),\n );\n }\n }\n\n getProductPrice(\n product: ProductDetailsItem | ProductItem | ProductQuickView | AddToCartConfirmModelData,\n ) {\n switch (product.type) {\n case ProductType.CustomerSpecial:\n case ProductType.RegularCustomerSpecial:\n case ProductType.HealthySavingsSpecial:\n case ProductType.SurpriseBuy:\n case ProductType.CollectAndSave:\n case ProductType.ECommerceCustomerSpecial:\n return product.discountedPrice;\n\n default:\n return product.price;\n }\n }\n}\n","function getRecaptchaElement(): HTMLElement {\n return document.getElementsByClassName('grecaptcha-badge')[0] as HTMLElement;\n}\n\nexport function showRecaptchaBadge(): void {\n const recaptchaHtmlElement = getRecaptchaElement();\n if (recaptchaHtmlElement) {\n recaptchaHtmlElement.style.visibility = 'visible';\n }\n}\n\nexport function hideRecaptchaBadge(): void {\n const recaptchaHtmlElement = getRecaptchaElement();\n if (recaptchaHtmlElement) {\n recaptchaHtmlElement.style.visibility = 'hidden';\n }\n}\n","import { RecipeAndMoreRoutes } from '@core/constants/routes.const';\nimport { RelatedCarouselSlide } from '@core/models/related-carousel-slide.model';\nimport { RecipeItem } from '@core/store/recipe/recipe-state-models';\n\nexport function createRecipeDetailsUrl(recipeUrl: string): string {\n return `/${RecipeAndMoreRoutes.Recipe}/${RecipeAndMoreRoutes.Detail}/${recipeUrl}`;\n}\n\nexport function createBlogDetailsUrl(blogUrl: string): string {\n return `/${RecipeAndMoreRoutes.Blog}/${RecipeAndMoreRoutes.Detail}/${blogUrl}`;\n}\n\nexport function getRelatedSlidesFromRelatedRecipes(recipes: RecipeItem[]): RelatedCarouselSlide[] {\n return recipes.map((r) => ({\n images: r.images,\n targetUrl: createRecipeDetailsUrl(r.url),\n }));\n}\n","export function scrollToTop(): void {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'auto',\n });\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\n/* eslint-disable indent */\nimport { Inject, Injectable } from '@angular/core';\nimport { ConsultantFinancialStateEnum } from '@core/enums/consultant-financial-state.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { selectConsultantFinancialState } from '@core/store/consultant';\nimport { Store } from '@ngrx/store';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IS_USA_ENV } from './environment-utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserUtilService {\n isUserFeatureEnabled$: Observable = this.isUsaEnv\n ? of(this.appInitService.Settings.ec.isUserEnabled)\n : this.store$\n .select(selectConsultantFinancialState)\n .pipe(\n map((financialState) =>\n financialState === ConsultantFinancialStateEnum.NotAllowedToPlaceOrders\n ? false\n : this.appInitService.Settings.ec.isUserEnabled,\n ),\n );\n\n constructor(\n private store$: Store,\n private appInitService: AppInitService,\n @Inject(IS_USA_ENV) private isUsaEnv: boolean,\n ) {}\n}\n","import { AbstractControl, FormGroup } from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { ValidationError } from '@core/store/common-store.model';\n\nexport function validInput(formControl: AbstractControl): boolean {\n if (!formControl.touched) {\n return true;\n }\n\n // in case of form control is disabled the valid = false\n if (formControl.disabled) {\n return true;\n }\n\n return formControl.valid;\n}\n\nexport function validGroup(form: FormGroup, errorType: string): boolean {\n let isValid = true;\n\n if (form.errors) {\n Object.keys(form.errors).forEach((key) => {\n if (key === errorType) {\n isValid = false;\n }\n });\n }\n\n return isValid;\n}\n\nexport function getValidationErrorMessageList(\n formControl: AbstractControl,\n errorMessages: { [key: string]: string },\n): string[] {\n let result: string[] = [];\n const errors = formControl?.errors;\n\n if (errors) {\n Object.keys(errors).forEach((key) => {\n if (errorMessages[key]) {\n result.push(errorMessages[key]);\n }\n });\n }\n\n return result;\n}\n\nexport function getFormValidationErrorMessage(\n formGroup: FormGroup,\n controlName: string,\n errorMessages: { [key: string]: string } = FormErrorMessages,\n): string {\n const formControl = formGroup.get(controlName);\n const result = getValidationErrorMessageList(formControl, errorMessages);\n return result.length ? result.join('\\r\\n') : '';\n}\n\nexport function matchValidator(\n controlName: string,\n matchingControlName: string,\n errorType: string,\n) {\n return (formGroup: FormGroup): ValidationError => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n if (!control.touched || !matchingControl.touched) {\n return null;\n }\n if (control.value !== matchingControl.value) {\n return { [errorType]: true };\n } else {\n return null;\n }\n };\n}\n","export const CreateVoucherErrorFrequency = {\n daily: $localize`Daily`,\n monthly: $localize`Monthly`,\n yearly: $localize`Yearly`,\n};\n","/* eslint-disable max-len */\nimport { CreateVoucherErrorFrequency } from '@core/constants/create-voucher-error-frequency';\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\nimport { EcCreateVoucherPaymentErrorType } from '@core/enums/create-voucher-error-type.enum';\nimport { VoucherLimits } from '@core/models/app-settings.model';\n\ntype Error = EcCreateVoucherPaymentErrorType | ConsultantSubmissionErrorType;\n\nfunction CreateVoucherErrorMessage(frequency: string, amount: number, email: string): string {\n if (email) {\n return $localize`${frequency} voucher limit on ${email} reached, the amount should be less than or equal to ${amount}`;\n } else {\n return $localize`${frequency} voucher limit reached, the amount should be less than or equal to ${amount}`;\n }\n}\n\nexport function getVoucherErrorMessage(\n errors: Error[],\n email: string,\n voucherLimits: VoucherLimits,\n): string {\n if (!errors?.length) {\n return null;\n }\n\n switch (true) {\n case errors.includes(EcCreateVoucherPaymentErrorType.DailyLimitReached):\n case errors.includes(ConsultantSubmissionErrorType.DailyVoucherAmountReached):\n return CreateVoucherErrorMessage(\n CreateVoucherErrorFrequency.daily,\n voucherLimits.dailyLimit,\n email,\n );\n\n case errors.includes(EcCreateVoucherPaymentErrorType.MonthlyLimitReached):\n case errors.includes(ConsultantSubmissionErrorType.MonthlyVoucherAmountReached):\n return CreateVoucherErrorMessage(\n CreateVoucherErrorFrequency.monthly,\n voucherLimits.monthlyLimit,\n email,\n );\n\n case errors.includes(EcCreateVoucherPaymentErrorType.YearlyLimitReached):\n case errors.includes(ConsultantSubmissionErrorType.YearlyVoucherAmountReached):\n return CreateVoucherErrorMessage(\n CreateVoucherErrorFrequency.yearly,\n voucherLimits.yearlyLimit,\n email,\n );\n\n default:\n return null;\n }\n}\n","export enum Currency {\n Usa = 'USD',\n Mexico = 'MXN',\n}\n","import { Country } from '@core/enums/country.enum';\nimport { Currency } from '@core/enums/currency.enum';\nimport { LogLevel } from '@core/enums/log-level.enum';\n\nexport const environment = {\n production: true,\n ecommerceBackendUri: 'https://api.princesshouse.com/',\n consultantCorner2Uri: 'https://newcorner.princesshouse.com',\n startNowAppBackendUri: 'https://newcorner-api.princesshouse.com/startnowapp/',\n ecommerceBackendClientId: 'storefrontApp',\n ecommerceBackendClientSecret: 'storefrontSecret',\n country: Country.Usa,\n currency: Currency.Usa,\n languages: [\n { code: 'en-US', lid: 0 },\n { code: 'es-US', lid: 1 },\n ],\n nexioPaymentApiUri: undefined,\n ec1StartYourBusinessUrl: 'https://www.princesshouse.com/start-now-app/',\n agreementHtmlBaseUrl: 'https://ststartnowprod.blob.core.windows.net',\n storeLocatorUrl: undefined,\n gtmContainerId: 'GTM-MJZWFM3',\n logRocketId: '0zykvg',\n appcuesId: '134956',\n cookieBotId: '85f086ca-3fb5-4772-9f4d-57afcb11d5cd',\n environmentName: 'ec_us_prod_online',\n recaptchaSiteKey: '6LedbEEmAAAAAJcwGxC1GGiuPahqJACARyeFll26',\n highestConsolLogLevel: LogLevel.Error,\n b2c: {\n tenant: 'phecprodb2c',\n domain: 'ec-login.princesshouse.com',\n clientId: '54e04e11-c3e1-4302-9848-6aef3d476c03',\n customerScope:\n 'https://phecprodb2c.onmicrosoft.com/1d67827b-b6c2-4722-915f-c9554b20d707/customer',\n },\n feature: {\n product: true,\n consultantFinder: true,\n consultantCorner: true,\n footerSocial: true,\n footerExtra: true,\n contactUsLocation: true,\n voucherPaymentEC: false,\n voucherPaymentSNA: false,\n bankTransferEc: false,\n bankTransferSna: false,\n bankTransferPoPayment: false,\n productReview: false,\n isAccessibeEnabled: true,\n mobileLogin: false,\n },\n tel: {\n mask: '(000) 000 0000',\n prefix: '+1 ',\n customerService: {\n prefix: '1',\n number: '508-823-6800',\n },\n career: {\n prefix: '1',\n number: '800-622-0039',\n },\n homeOfficeMember: {\n prefix: '1',\n number: '508-823-0711',\n },\n },\n datadog: {\n applicationId: '2dcfb45a-e654-44f7-a527-4722b8e2ed5a',\n clientToken: 'pubd98083516de65615e79bc19b319f9235',\n site: 'datadoghq.com',\n service: 'ec-2.0---usa-prod',\n sessionSampleRate: 100,\n sessionReplaySampleRate: 20,\n trackUserInteractions: true,\n trackResources: true,\n trackLongTasks: true,\n defaultPrivacyLevel: 'mask-user-input',\n },\n};\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE$1 = typeof ngDevMode === 'undefined' || !!ngDevMode;\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* INVALID_TIMING_VALUE */, NG_DEV_MODE$1 && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* NEGATIVE_STEP_VALUE */, NG_DEV_MODE$1 && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* NEGATIVE_DELAY_VALUE */, NG_DEV_MODE$1 && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* INVALID_STYLE_PARAMS */, NG_DEV_MODE$1 &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* INVALID_PARAM_VALUE */, NG_DEV_MODE$1 && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* INVALID_NODE_TYPE */, NG_DEV_MODE$1 && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* INVALID_CSS_UNIT_VALUE */, NG_DEV_MODE$1 && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* INVALID_TRIGGER */, NG_DEV_MODE$1 &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* INVALID_DEFINITION */, NG_DEV_MODE$1 && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* INVALID_STATE */, NG_DEV_MODE$1 &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* INVALID_STYLE_VALUE */, NG_DEV_MODE$1 && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* INVALID_PROPERTY */, NG_DEV_MODE$1 &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* INVALID_PARALLEL_ANIMATION */, NG_DEV_MODE$1 &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* INVALID_KEYFRAMES */, NG_DEV_MODE$1 && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* INVALID_OFFSET */, NG_DEV_MODE$1 && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* KEYFRAME_OFFSETS_OUT_OF_ORDER */, NG_DEV_MODE$1 && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* KEYFRAMES_MISSING_OFFSETS */, NG_DEV_MODE$1 && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* INVALID_STAGGER */, NG_DEV_MODE$1 && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* INVALID_QUERY */, NG_DEV_MODE$1 &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* INVALID_EXPRESSION */, NG_DEV_MODE$1 && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* INVALID_TRANSITION_ALIAS */, NG_DEV_MODE$1 && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* VALIDATION_FAILED */, NG_DEV_MODE$1 && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* BUILDING_FAILED */, NG_DEV_MODE$1 && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* TRIGGER_BUILD_FAILED */, NG_DEV_MODE$1 &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* ANIMATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* REGISTRATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* MISSING_OR_DESTROYED_ANIMATION */, NG_DEV_MODE$1 && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* CREATE_ANIMATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* MISSING_PLAYER */, NG_DEV_MODE$1 && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* MISSING_TRIGGER */, NG_DEV_MODE$1 &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* MISSING_EVENT */, NG_DEV_MODE$1 &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* UNSUPPORTED_TRIGGER_EVENT */, NG_DEV_MODE$1 &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* UNREGISTERED_TRIGGER */, NG_DEV_MODE$1 && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* TRIGGER_TRANSITIONS_FAILED */, NG_DEV_MODE$1 &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* TRIGGER_PARSING_FAILED */, NG_DEV_MODE$1 &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* TRANSITION_FAILED */, NG_DEV_MODE$1 &&\n `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n}\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes(driver, normalizer, element, keyframes, preStyles = {}, postStyles = {}) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf['offset'];\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || {};\n Object.keys(kf).forEach(prop => {\n let normalizedProp = prop;\n let normalizedValue = kf[prop];\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles[prop];\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles[prop];\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe[normalizedProp] = normalizedValue;\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetAsInMap(map, key, defaultValue) {\n let value;\n if (map instanceof Map) {\n value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n }\n else {\n value = map[key];\n if (!value) {\n value = map[key] = defaultValue;\n }\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.substr(separatorPos + 1);\n return [id, action];\n}\nlet _contains = (elm1, elm2) => false;\nlet _query = (element, selector, multi) => {\n return [];\n};\nlet _documentElement = null;\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host; // consider host to support shadow DOM\n if (parent === _documentElement) {\n return null;\n }\n return parent;\n}\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n if (!isBrowser()) {\n _contains = (elm1, elm2) => elm1.contains(elm2);\n }\n else {\n // Read the document element in an IIFE that's been marked pure to avoid a top-level property\n // read that may prevent tree-shaking.\n _documentElement = /* @__PURE__ */ (() => document.documentElement)();\n _contains = (elm1, elm2) => {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n };\n }\n _query = (element, selector, multi) => {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n };\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.substr(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nconst containsElement = _contains;\nconst invokeQuery = _query;\nfunction hypenatePropsObject(object) {\n const newObj = {};\n Object.keys(object).forEach(prop => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newObj[newProp] = object[prop];\n });\n return newObj;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\nNoopAnimationDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopAnimationDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationDriver });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = ( /* @__PURE__ */new NoopAnimationDriver());\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = {};\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, false, normalizedStyles));\n }\n else {\n copyStyles(styles, false, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, readPrototype, destination = {}) {\n if (readPrototype) {\n // we make use of a for-in loop so that the\n // prototypically inherited properties are\n // revealed from the backFill map\n for (let prop in styles) {\n destination[prop] = styles[prop];\n }\n }\n else {\n copyObj(styles, destination);\n }\n return destination;\n}\nfunction getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.hasOwnProperty(prop)) {\n formerStyles[prop] = element.style[camelProp];\n }\n element.style[camelProp] = styles[prop];\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n const previousStyleProps = Object.keys(previousStyles);\n if (previousStyleProps.length && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyleProps.forEach(prop => {\n if (!startingKeyframe.hasOwnProperty(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe[prop] = previousStyles[prop];\n });\n if (missingStyleProps.length) {\n // tslint:disable-next-line\n for (var i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(function (prop) {\n kf[prop] = computeStyle(element, prop);\n });\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* State */:\n return visitor.visitState(node, context);\n case 1 /* Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* Group */:\n return visitor.visitGroup(node, context);\n case 4 /* Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* Style */:\n return visitor.visitStyle(node, context);\n case 8 /* Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* Query */:\n return visitor.visitQuery(node, context);\n case 12 /* Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n NG_DEV_MODE && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (ngDevMode && props.length) {\n warnings.push(`The provided CSS properties are not recognized properties supported for animations: ${props.join(', ')}`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = {};\n context.collectedStyles[ROOT_SELECTOR] = {};\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(value => {\n if (isObject(value)) {\n const stylesObj = value;\n Object.keys(stylesObj).forEach(prop => {\n extractStyleParams(stylesObj[prop]).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n if (Array.isArray(metadata.styles)) {\n metadata.styles.forEach(styleTuple => {\n if (typeof styleTuple == 'string') {\n if (styleTuple == AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(styleTuple);\n }\n });\n }\n else {\n styles.push(metadata.styles);\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (isObject(styleData)) {\n const styleMap = styleData;\n const easing = styleMap['easing'];\n if (easing) {\n collectedEasing = easing;\n delete styleMap['easing'];\n }\n if (!containsDynamicStyles) {\n for (let prop in styleMap) {\n const value = styleMap[prop];\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple == 'string')\n return;\n Object.keys(tuple).forEach(prop => {\n if (!this._driver.validateStyleProperty(prop)) {\n delete tuple[prop];\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n const collectedStyles = context.collectedStyles[context.currentQuerySelector];\n const collectedEntry = collectedStyles[prop];\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles[prop] = { startTime, endTime };\n }\n if (context.options) {\n validateStyleParams(tuple[prop], context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetAsInMap(context.collectedStyles, context.currentQuerySelector, {});\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.substr(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = {};\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (isObject(styleTuple) && styleTuple.hasOwnProperty('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n });\n }\n else if (isObject(styles) && styles.hasOwnProperty('offset')) {\n const obj = styles;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n return offset;\n}\nfunction isObject(value) {\n return !Array.isArray(value) && typeof value == 'object';\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of prototypical inheritance, AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill object. Given that each of the keyframe\n * styles is an object that prototypically inherits from the backFill object, this means that if a\n * value is added into the backFill then it will automatically propagate any missing values to all\n * keyframes. Therefore the missing `height` value will be properly filled into the already\n * processed keyframes.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * (For prototypically-inherited contents to be detected a `for(i in obj)` loop must be used.)\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = {}, finalStyles = {}, options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n if (Object.keys(finalStyles).length) {\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ? timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, 0, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.getCurrentStyleProperties().length) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* Style */ ||\n (startTime == 0 && context.currentTimeline.getCurrentStyleProperties().length))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this._previousKeyframe = {};\n this._currentKeyframe = {};\n this._keyframes = new Map();\n this._styleSummary = {};\n this._pendingStyles = {};\n this._backFill = {};\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._localTimelineStyles = Object.create(this._backFill, {});\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.getCurrentStyleProperties().length > 0;\n default:\n return true;\n }\n }\n getCurrentStyleProperties() {\n return Object.keys(this._currentKeyframe);\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size == 1 && Object.keys(this._pendingStyles).length;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = Object.create(this._backFill, {});\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles[prop] = value;\n this._globalTimelineStyles[prop] = value;\n this._styleSummary[prop] = { time: this.currentTime, value };\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n Object.keys(this._globalTimelineStyles).forEach(prop => {\n this._backFill[prop] = this._globalTimelineStyles[prop] || AUTO_STYLE;\n this._currentKeyframe[prop] = AUTO_STYLE;\n });\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n Object.keys(styles).forEach(prop => {\n const val = interpolateParams(styles[prop], params, errors);\n this._pendingStyles[prop] = val;\n if (!this._localTimelineStyles.hasOwnProperty(prop)) {\n this._backFill[prop] = this._globalTimelineStyles.hasOwnProperty(prop) ?\n this._globalTimelineStyles[prop] :\n AUTO_STYLE;\n }\n this._updateStyle(prop, val);\n });\n }\n applyStylesToKeyframe() {\n const styles = this._pendingStyles;\n const props = Object.keys(styles);\n if (props.length == 0)\n return;\n this._pendingStyles = {};\n props.forEach(prop => {\n const val = styles[prop];\n this._currentKeyframe[prop] = val;\n });\n Object.keys(this._localTimelineStyles).forEach(prop => {\n if (!this._currentKeyframe.hasOwnProperty(prop)) {\n this._currentKeyframe[prop] = this._localTimelineStyles[prop];\n }\n });\n }\n snapshotCurrentStyles() {\n Object.keys(this._localTimelineStyles).forEach(prop => {\n const val = this._localTimelineStyles[prop];\n this._pendingStyles[prop] = val;\n this._updateStyle(prop, val);\n });\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n Object.keys(timeline._styleSummary).forEach(prop => {\n const details0 = this._styleSummary[prop];\n const details1 = timeline._styleSummary[prop];\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, true);\n Object.keys(finalKeyframe).forEach(prop => {\n const value = finalKeyframe[prop];\n if (value == ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value == AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe['offset'] = time / this.duration;\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = copyObj(kf0);\n kf0['offset'] = 0;\n kf1['offset'] = 1;\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0], false);\n newFirstKeyframe['offset'] = 0;\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0], false);\n oldFirstKeyframe['offset'] = roundOffset(startingGap);\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i], false);\n const oldOffset = kf['offset'];\n const timeAtKeyframe = delay + oldOffset * duration;\n kf['offset'] = roundOffset(timeAtKeyframe / totalTime);\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = {};\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || Object.keys(allStyles);\n allProperties.forEach(prop => {\n styles[prop] = AUTO_STYLE;\n });\n }\n else {\n copyStyles(token, false, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_MAP[normalizedProperty] && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\nconst DIMENSIONAL_PROP_MAP = (() => makeBooleanMap('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'\n .split(',')))();\nfunction makeBooleanMap(keys) {\n const map = {};\n keys.forEach(key => map[key] = true);\n return map;\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n const backupStateStyler = this._stateStyles['*'];\n const stateStyler = this._stateStyles[stateName];\n const backupStyles = backupStateStyler ? backupStateStyler.buildStyles(params, errors) : {};\n return stateStyler ? stateStyler.buildStyles(params, errors) : backupStyles;\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = { params: Object.assign(Object.assign({}, transitionAnimationParams), nextAnimationParams) };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetAsInMap(preStyleMap, elm, {});\n tl.preStyleProps.forEach(prop => preProps[prop] = true);\n const postProps = getOrSetAsInMap(postStyleMap, elm, {});\n tl.postStyleProps.forEach(prop => postProps[prop] = true);\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = {};\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value != null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n const styleObj = value;\n Object.keys(styleObj).forEach(prop => {\n let val = styleObj[prop];\n if (val.length > 1) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles[normalizedProp] = val;\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = {};\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states[ast.name] = new AnimationStateStyles(ast.style, defaultParams, _normalizer);\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(obj, key1, key2) {\n if (obj.hasOwnProperty(key1)) {\n if (!obj.hasOwnProperty(key2)) {\n obj[key2] = obj[key1];\n }\n }\n else if (obj.hasOwnProperty(key2)) {\n obj[key1] = obj[key2];\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = {};\n this._playersById = {};\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations[id] = ast;\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes(this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations[id];\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, {}, {}, options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetAsInMap(autoStylesMap, inst.element, {});\n inst.postStyleProps.forEach(prop => styles[prop] = null);\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n Object.keys(styles).forEach(prop => {\n styles[prop] = this._driver.computeStyle(element, prop, AUTO_STYLE);\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, {}, styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById[id] = player;\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n delete this._playersById[id];\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById[id];\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n get params() {\n return this.options.params;\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = {};\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.hasOwnProperty(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetAsInMap(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetAsInMap(this._engine.statesByElement, element, {});\n if (!triggersWithStates.hasOwnProperty(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates[name] = DEFAULT_STATE_VALUE;\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers[name]) {\n delete triggersWithStates[name];\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers[name]) {\n // throw\n return false;\n }\n else {\n this._triggers[name] = ast;\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers[name];\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = {});\n }\n let fromState = triggersWithStates[triggerName];\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates[triggerName] = toState;\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetAsInMap(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n delete this._triggers[name];\n this._engine.statesByElement.forEach((stateMap, element) => {\n delete stateMap[name];\n });\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n Object.keys(triggerStates).forEach(triggerName => {\n previousTriggersValues.set(triggerName, triggerStates[triggerName].value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers[triggerName]) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers[triggerName];\n const transition = trigger.fallbackTransition;\n const fromState = elementStates[triggerName] || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n elementContainsData(element) {\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find(entry => entry.element === element) ? true : false) || containsData;\n return containsData;\n }\n}\nclass TransitionAnimationEngine {\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n if (this.driver.getParentElement !== undefined) {\n // Fast path for when the driver implements `getParentElement`, which allows us to find the\n // closest ancestor with an existing namespace that we can then insert `ns` after, without\n // having to inspect all existing namespaces.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n }\n else {\n // Slow path for backwards compatibility if the driver does not implement\n // `getParentElement`, to be removed once `getParentElement` is a required method.\n for (let i = limit; i >= 0; i--) {\n const nextNamespace = namespaceList[i];\n if (this.driver.containsElement(nextNamespace.hostElement, hostElement)) {\n namespaceList.splice(i + 1, 0, ns);\n found = true;\n break;\n }\n }\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n const ns = this._fetchNamespace(namespaceId);\n this.afterFlush(() => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n });\n this.afterFlushAnimationsDone(() => ns.destroy(context));\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n const keys = Object.keys(elementStates);\n for (let i = 0; i < keys.length; i++) {\n const nsId = elementStates[keys[i]].namespaceId;\n if (nsId) {\n const ns = this._fetchNamespace(nsId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, isHostElement, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n if (isHostElement) {\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n var _a;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if ((_a = element.classList) === null || _a === void 0 ? void 0 : _a.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates[entry.triggerName]) {\n triggersWithStates[entry.triggerName].value = previousValue;\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetAsInMap(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n if (props.length) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetAsInMap(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, Object.assign(Object.assign({}, post), pre));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n elementContainsData(namespaceId, element) {\n let containsData = false;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetAsInMap(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes(this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetAsInMap(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetAsInMap(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = {};\n this.destroyed = false;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n Object.keys(this._queuedCallbacks).forEach(phase => {\n this._queuedCallbacks[phase].forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks = {};\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetAsInMap(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues;\n if (map instanceof Map) {\n currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n }\n else {\n currentValues = map[key];\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n delete map[key];\n }\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = {};\n props.forEach(prop => {\n const value = styles[prop] = driver.computeStyle(element, prop, defaultStyle);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n var _a;\n (_a = element.classList) === null || _a === void 0 ? void 0 : _a.add(className);\n}\nfunction removeClass(element, className) {\n var _a;\n (_a = element.classList) === null || _a === void 0 ? void 0 : _a.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return this._transitionEngine.players\n .concat(this._timelineEngine.players);\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = {});\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* Destroyed */;\n }\n }\n}\nSpecialCasedStyles.initialStylesByElement = ( /* @__PURE__ */new WeakMap());\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n const props = Object.keys(styles);\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (isNonAnimatableStyle(prop)) {\n result = result || {};\n result[prop] = styles[prop];\n }\n }\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = {};\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n this.domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : {};\n this.domPlayer.addEventListener('finish', () => this._onFinish());\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return element['animate'](keyframes, options);\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n return this.domPlayer.currentTime / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = {};\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n Object.keys(finalKeyframe).forEach(prop => {\n if (prop != 'offset') {\n styles[prop] = this._finished ? finalKeyframe[prop] : computeStyle(this.element, prop);\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = {};\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n let styles = player.currentSnapshot;\n Object.keys(styles).forEach(prop => previousStyles[prop] = styles[prop]);\n });\n }\n keyframes = keyframes.map(styles => copyStyles(styles, false));\n keyframes = balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, keyframes);\n return new WebAnimationsPlayer(element, keyframes, playerOptions, specialStyles);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ViewEncapsulation, Injectable, Inject, InjectionToken, RendererFactory2, NgZone, NgModule } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\nBrowserAnimationBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserAnimationBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationBuilder });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n var _a, _b;\n return (_b = (_a = this._renderer.engine.players[+this.id]) === null || _a === void 0 ? void 0 : _a.getPosition()) !== null && _b !== void 0 ? _b : 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n this.promise = Promise.resolve(0);\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate === null || delegate === void 0 ? void 0 : delegate.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n // always use promise to schedule microtask instead of use Zone\n this.promise.then(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n Promise.resolve(null).then(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\nAnimationRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AnimationRendererFactory });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AnimationRendererFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode(n) : null;\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.delegate.destroy();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine) {\n super(namespaceId, delegate, engine);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.substr(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.substr(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.substr(dotIndex + 1);\n return [trigger, phase];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n constructor(doc, driver, normalizer) {\n super(doc.body, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n}\nInjectableAnimationEngine.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }], target: i0.ɵɵFactoryTarget.Injectable });\nInjectableAnimationEngine.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: InjectableAnimationEngine });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }];\n } });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\n/**\n * @publicApi\n */\nconst ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see `BrowserAnimationsModuleConfig`\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n}\nBrowserAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBrowserAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });\nBrowserAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n}\nNoopAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNoopAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });\nNoopAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ANIMATION_MODULE_TYPE, BrowserAnimationsModule, NoopAnimationsModule, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","\n \n\n","import { Component, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MsalBroadcastService } from '@azure/msal-angular';\nimport { EventMessage, EventType } from '@azure/msal-browser';\nimport { AuthRoutes, UserRoute } from '@core/constants/routes.const';\nimport { environment } from '@env';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n readonly iframeMinHeight = '20rem';\n readonly B2CSignin = AuthRoutes.B2CSignin;\n readonly LoginViaPhone = AuthRoutes.LoginViaPhone;\n readonly RegistrationRoute = UserRoute.Registration;\n\n readonly mobileLogin = environment.feature.mobileLogin;\n\n prefillEmail: string;\n showRegisterButton = true;\n\n @ViewChild('loginframe') loginframe: ElementRef;\n\n private subscriptions: Subscription = new Subscription();\n\n @HostListener('window:message', ['$event'])\n onMessage(event) {\n if (event.origin === `https://${environment.b2c.domain}`) {\n this.loginframe.nativeElement.style.height = event.data?.bodyHeight\n ? `${event.data.bodyHeight}px`\n : this.iframeMinHeight;\n\n if (event.data?.passwordReset) {\n this.titleService.setTitle($localize`PH - Reset Password - Title`);\n this.showRegisterButton = false;\n }\n }\n }\n\n constructor(\n private msalBroadcastService: MsalBroadcastService,\n private router: Router,\n private route: ActivatedRoute,\n private titleService: Title,\n ) {}\n\n ngOnInit(): void {\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\n this.router.onSameUrlNavigation = 'reload';\n this.prefillEmail = this.route.snapshot.queryParamMap.get('prefill_email');\n this.subscriptions.add(\n this.msalBroadcastService.msalSubject$\n .pipe(\n filter((event: EventMessage) =>\n [\n EventType.LOGIN_SUCCESS,\n EventType.ACCOUNT_ADDED,\n EventType.ACQUIRE_TOKEN_SUCCESS,\n EventType.SSO_SILENT_SUCCESS,\n ].includes(event.eventType),\n ),\n )\n .subscribe(() => this.router.navigateByUrl('/')),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GuestGuardService implements CanActivate {\n constructor(private store$: Store, private router: Router) {}\n\n canActivate(): Observable {\n return this.store$.select(selectIsAuthenticated).pipe(\n filter((isAuthenticated) => isAuthenticated !== undefined),\n map((isAuthenticated) => {\n if (isAuthenticated) {\n this.router.navigateByUrl('/');\n }\n return !isAuthenticated;\n }),\n );\n }\n}\n","export enum AuthErrorCodes {\n B2CUserDoesNotExistError = 'AADB2C99002',\n LoginFailure = 'LoginFailure',\n None = 'None',\n}\n","import { MsalBroadcastService } from '@azure/msal-angular';\nimport { EventType } from '@azure/msal-browser';\nimport { AuthErrorCodes } from '@core/enums/auth-error-codes.enum';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nexport function getB2CError(msalBroadcastService: MsalBroadcastService): Observable {\n return msalBroadcastService.msalSubject$.pipe(\n filter((event) => event.eventType === EventType.LOGIN_FAILURE),\n map((event) => {\n const isUnregisteredPhoneNumber = event.error.message.includes(\n AuthErrorCodes.B2CUserDoesNotExistError,\n );\n return isUnregisteredPhoneNumber\n ? $localize`This phone number is not registered`\n : $localize`Login failure`;\n }),\n );\n}\n","
    \n
    {{ errorMessage }}
    \n
    \n \n
    \n
    \n\n\n
    \n \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MsalBroadcastService } from '@azure/msal-angular';\nimport { AuthService } from '@core/services/auth.service';\nimport { getB2CError } from '@shared/utils/handle-b2c-error-utils';\nimport { Observable, of, Subscription } from 'rxjs';\n\n@Component({\n templateUrl: 'b2c-signin.component.html',\n styleUrls: ['./b2c-signin.component.scss'],\n})\nexport class B2cSigninPhoneComponent implements OnInit, OnDestroy {\n errorMessage$: Observable;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private authService: AuthService,\n private msalBroadcastService: MsalBroadcastService,\n ) {}\n\n ngOnInit(): void {\n this.errorMessage$ = getB2CError(this.msalBroadcastService);\n\n this.authService.logInPhone();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n resetError(): void {\n this.errorMessage$ = of('');\n this.authService.logInPhone();\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { MsalBroadcastService } from '@azure/msal-angular';\nimport { AuthService } from '@core/services/auth.service';\nimport { getB2CError } from '@shared/utils/handle-b2c-error-utils';\nimport { Observable, of } from 'rxjs';\n\n@Component({\n templateUrl: 'b2c-signin.component.html',\n styleUrls: ['./b2c-signin.component.scss'],\n})\nexport class B2cSigninComponent implements OnInit {\n errorMessage$: Observable;\n\n constructor(\n private authService: AuthService,\n private route: ActivatedRoute,\n private msalBroadcastService: MsalBroadcastService,\n ) {}\n\n ngOnInit(): void {\n this.errorMessage$ = getB2CError(this.msalBroadcastService);\n this.login();\n }\n\n resetError(): void {\n this.errorMessage$ = of('');\n this.login();\n }\n\n private login(): void {\n const prefill_email = this.route.snapshot.queryParamMap.get('prefill_email');\n if (prefill_email) {\n this.authService.logIn({ prefill_email });\n } else {\n this.authService.logIn();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LoginComponent } from '@auth/components/login/login.component';\nimport { MsalRedirectComponent } from '@azure/msal-angular';\nimport { DefaultLayoutComponent } from '@base/components/layout/default-layout/default-layout.component';\nimport { AuthRoutes } from '@core/constants/routes.const';\nimport { GuestGuardService } from '@core/services/guest-guard.service';\nimport { B2cSigninPhoneComponent } from './components/b2c-signin/b2c-signin-phone.component';\nimport { B2cSigninComponent } from './components/b2c-signin/b2c-signin.component';\nimport { LoginPhoneComponent } from './components/login-phone/login-phone.component';\n\nconst routes: Routes = [\n {\n path: AuthRoutes.B2CSignin,\n component: B2cSigninComponent,\n },\n {\n path: AuthRoutes.B2CSigninPhone,\n component: B2cSigninPhoneComponent,\n },\n {\n path: AuthRoutes.B2CSigninTarget,\n component: MsalRedirectComponent,\n },\n\n {\n path: AuthRoutes.Login,\n component: DefaultLayoutComponent,\n children: [\n {\n path: '',\n component: LoginComponent,\n canActivate: [GuestGuardService],\n data: {\n title: $localize`Customer account login`,\n description: $localize`Customer account login - Description`,\n },\n },\n ],\n },\n {\n path: AuthRoutes.LoginViaPhone,\n component: DefaultLayoutComponent,\n children: [\n {\n path: '',\n component: LoginPhoneComponent,\n canActivate: [GuestGuardService],\n data: {\n title: $localize`Customer account phone login`,\n description: $localize`Customer account phone login - Description`,\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AuthRoutingModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MsalBroadcastService } from '@azure/msal-angular';\nimport { EventMessage, EventType } from '@azure/msal-browser';\nimport { AuthRoutes } from '@core/constants/routes.const';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-login-phone',\n templateUrl: './login-phone.component.html',\n styleUrls: ['./login-phone.component.scss'],\n})\nexport class LoginPhoneComponent extends BaseComponent implements OnInit {\n readonly B2CSigninPhone = AuthRoutes.B2CSigninPhone;\n\n constructor(\n private msalBroadcastService: MsalBroadcastService,\n private router: Router,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\n this.router.onSameUrlNavigation = 'reload';\n this.subscriptions.add(\n this.msalBroadcastService.msalSubject$\n .pipe(\n filter((event: EventMessage) =>\n [\n EventType.LOGIN_SUCCESS,\n EventType.ACCOUNT_ADDED,\n EventType.ACQUIRE_TOKEN_SUCCESS,\n EventType.SSO_SILENT_SUCCESS,\n ].includes(event.eventType),\n ),\n )\n .subscribe(() => this.router.navigateByUrl('/')),\n );\n }\n}\n","
    \n
    \n
    \n
    \n

    Login via Mobile Number

    \n
    \n \n \n
    \n
    \n
    \n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '@shared/shared.module';\nimport { AuthRoutingModule } from './auth-routing.module';\nimport { B2cSigninPhoneComponent } from './components/b2c-signin/b2c-signin-phone.component';\nimport { B2cSigninComponent } from './components/b2c-signin/b2c-signin.component';\nimport { LoginComponent } from './components/login/login.component';\nimport { LoginPhoneComponent } from './components/login-phone/login-phone.component';\n\n@NgModule({\n declarations: [LoginComponent, B2cSigninComponent, B2cSigninPhoneComponent, LoginPhoneComponent],\n imports: [CommonModule, RouterModule, AuthRoutingModule, ReactiveFormsModule, SharedModule],\n exports: [LoginComponent],\n})\nexport class AuthModule {}\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nvar PerformanceEvents;\r\n(function (PerformanceEvents) {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n PerformanceEvents[\"AcquireTokenByCode\"] = \"acquireTokenByCode\";\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n PerformanceEvents[\"AcquireTokenByRefreshToken\"] = \"acquireTokenByRefreshToken\";\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n PerformanceEvents[\"AcquireTokenSilent\"] = \"acquireTokenSilent\";\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n PerformanceEvents[\"AcquireTokenSilentAsync\"] = \"acquireTokenSilentAsync\";\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n PerformanceEvents[\"AcquireTokenPopup\"] = \"acquireTokenPopup\";\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n PerformanceEvents[\"CryptoOptsGetPublicKeyThumbprint\"] = \"cryptoOptsGetPublicKeyThumbprint\";\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n PerformanceEvents[\"CryptoOptsSignJwt\"] = \"cryptoOptsSignJwt\";\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n PerformanceEvents[\"SilentCacheClientAcquireToken\"] = \"silentCacheClientAcquireToken\";\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n PerformanceEvents[\"SilentIframeClientAcquireToken\"] = \"silentIframeClientAcquireToken\";\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n PerformanceEvents[\"SilentRefreshClientAcquireToken\"] = \"silentRefreshClientAcquireToken\";\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n PerformanceEvents[\"SsoSilent\"] = \"ssoSilent\";\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n PerformanceEvents[\"StandardInteractionClientGetDiscoveredAuthority\"] = \"standardInteractionClientGetDiscoveredAuthority\";\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n PerformanceEvents[\"FetchAccountIdWithNativeBroker\"] = \"fetchAccountIdWithNativeBroker\";\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n PerformanceEvents[\"NativeInteractionClientAcquireToken\"] = \"nativeInteractionClientAcquireToken\";\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n PerformanceEvents[\"BaseClientCreateTokenRequestHeaders\"] = \"baseClientCreateTokenRequestHeaders\";\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n PerformanceEvents[\"BrokerHandhshake\"] = \"brokerHandshake\";\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n PerformanceEvents[\"AcquireTokenByRefreshTokenInBroker\"] = \"acquireTokenByRefreshTokenInBroker\";\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n PerformanceEvents[\"AcquireTokenByBroker\"] = \"acquireTokenByBroker\";\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n PerformanceEvents[\"RefreshTokenClientExecuteTokenRequest\"] = \"refreshTokenClientExecuteTokenRequest\";\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n PerformanceEvents[\"RefreshTokenClientAcquireToken\"] = \"refreshTokenClientAcquireToken\";\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n PerformanceEvents[\"RefreshTokenClientAcquireTokenWithCachedRefreshToken\"] = \"refreshTokenClientAcquireTokenWithCachedRefreshToken\";\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n PerformanceEvents[\"RefreshTokenClientAcquireTokenByRefreshToken\"] = \"refreshTokenClientAcquireTokenByRefreshToken\";\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n PerformanceEvents[\"RefreshTokenClientCreateTokenRequestBody\"] = \"refreshTokenClientCreateTokenRequestBody\";\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n PerformanceEvents[\"AcquireTokenFromCache\"] = \"acquireTokenFromCache\";\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n PerformanceEvents[\"AcquireTokenBySilentIframe\"] = \"acquireTokenBySilentIframe\";\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n PerformanceEvents[\"InitializeBaseRequest\"] = \"initializeBaseRequest\";\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n PerformanceEvents[\"InitializeSilentRequest\"] = \"initializeSilentRequest\";\r\n PerformanceEvents[\"InitializeClientApplication\"] = \"initializeClientApplication\";\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n PerformanceEvents[\"SilentIframeClientTokenHelper\"] = \"silentIframeClientTokenHelper\";\r\n /**\r\n * SilentHandler\r\n */\r\n PerformanceEvents[\"SilentHandlerInitiateAuthRequest\"] = \"silentHandlerInitiateAuthRequest\";\r\n PerformanceEvents[\"SilentHandlerMonitorIframeForHash\"] = \"silentHandlerMonitorIframeForHash\";\r\n PerformanceEvents[\"SilentHandlerLoadFrame\"] = \"silentHandlerLoadFrame\";\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n PerformanceEvents[\"StandardInteractionClientCreateAuthCodeClient\"] = \"standardInteractionClientCreateAuthCodeClient\";\r\n PerformanceEvents[\"StandardInteractionClientGetClientConfiguration\"] = \"standardInteractionClientGetClientConfiguration\";\r\n PerformanceEvents[\"StandardInteractionClientInitializeAuthorizationRequest\"] = \"standardInteractionClientInitializeAuthorizationRequest\";\r\n PerformanceEvents[\"StandardInteractionClientInitializeAuthorizationCodeRequest\"] = \"standardInteractionClientInitializeAuthorizationCodeRequest\";\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n PerformanceEvents[\"GetAuthCodeUrl\"] = \"getAuthCodeUrl\";\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n PerformanceEvents[\"HandleCodeResponseFromServer\"] = \"handleCodeResponseFromServer\";\r\n PerformanceEvents[\"HandleCodeResponseFromHash\"] = \"handleCodeResponseFromHash\";\r\n PerformanceEvents[\"UpdateTokenEndpointAuthority\"] = \"updateTokenEndpointAuthority\";\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n PerformanceEvents[\"AuthClientAcquireToken\"] = \"authClientAcquireToken\";\r\n PerformanceEvents[\"AuthClientExecuteTokenRequest\"] = \"authClientExecuteTokenRequest\";\r\n PerformanceEvents[\"AuthClientCreateTokenRequestBody\"] = \"authClientCreateTokenRequestBody\";\r\n PerformanceEvents[\"AuthClientCreateQueryString\"] = \"authClientCreateQueryString\";\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PerformanceEvents[\"PopTokenGenerateCnf\"] = \"popTokenGenerateCnf\";\r\n PerformanceEvents[\"PopTokenGenerateKid\"] = \"popTokenGenerateKid\";\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n PerformanceEvents[\"HandleServerTokenResponse\"] = \"handleServerTokenResponse\";\r\n /**\r\n * Authority functions\r\n */\r\n PerformanceEvents[\"AuthorityFactoryCreateDiscoveredInstance\"] = \"authorityFactoryCreateDiscoveredInstance\";\r\n PerformanceEvents[\"AuthorityResolveEndpointsAsync\"] = \"authorityResolveEndpointsAsync\";\r\n PerformanceEvents[\"AuthorityGetCloudDiscoveryMetadataFromNetwork\"] = \"authorityGetCloudDiscoveryMetadataFromNetwork\";\r\n PerformanceEvents[\"AuthorityUpdateCloudDiscoveryMetadata\"] = \"authorityUpdateCloudDiscoveryMetadata\";\r\n PerformanceEvents[\"AuthorityGetEndpointMetadataFromNetwork\"] = \"authorityGetEndpointMetadataFromNetwork\";\r\n PerformanceEvents[\"AuthorityUpdateEndpointMetadata\"] = \"authorityUpdateEndpointMetadata\";\r\n PerformanceEvents[\"AuthorityUpdateMetadataWithRegionalInformation\"] = \"authorityUpdateMetadataWithRegionalInformation\";\r\n /**\r\n * Region Discovery functions\r\n */\r\n PerformanceEvents[\"RegionDiscoveryDetectRegion\"] = \"regionDiscoveryDetectRegion\";\r\n PerformanceEvents[\"RegionDiscoveryGetRegionFromIMDS\"] = \"regionDiscoveryGetRegionFromIMDS\";\r\n PerformanceEvents[\"RegionDiscoveryGetCurrentVersion\"] = \"regionDiscoveryGetCurrentVersion\";\r\n PerformanceEvents[\"AcquireTokenByCodeAsync\"] = \"acquireTokenByCodeAsync\";\r\n PerformanceEvents[\"GetEndpointMetadataFromNetwork\"] = \"getEndpointMetadataFromNetwork\";\r\n PerformanceEvents[\"GetCloudDiscoveryMetadataFromNetworkMeasurement\"] = \"getCloudDiscoveryMetadataFromNetworkMeasurement\";\r\n PerformanceEvents[\"HandleRedirectPromiseMeasurement\"] = \"handleRedirectPromiseMeasurement\";\r\n PerformanceEvents[\"UpdateCloudDiscoveryMetadataMeasurement\"] = \"updateCloudDiscoveryMetadataMeasurement\";\r\n PerformanceEvents[\"UsernamePasswordClientAcquireToken\"] = \"usernamePasswordClientAcquireToken\";\r\n PerformanceEvents[\"NativeMessageHandlerHandshake\"] = \"nativeMessageHandlerHandshake\";\r\n /**\r\n * Cache operations\r\n */\r\n PerformanceEvents[\"ClearTokensAndKeysWithClaims\"] = \"clearTokensAndKeysWithClaims\";\r\n})(PerformanceEvents || (PerformanceEvents = {}));\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nvar PerformanceEventStatus;\r\n(function (PerformanceEventStatus) {\r\n PerformanceEventStatus[PerformanceEventStatus[\"NotStarted\"] = 0] = \"NotStarted\";\r\n PerformanceEventStatus[PerformanceEventStatus[\"InProgress\"] = 1] = \"InProgress\";\r\n PerformanceEventStatus[PerformanceEventStatus[\"Completed\"] = 2] = \"Completed\";\r\n})(PerformanceEventStatus || (PerformanceEventStatus = {}));\r\nvar IntFields = new Set([\r\n \"accessTokenSize\",\r\n \"durationMs\",\r\n \"idTokenSize\",\r\n \"matsSilentStatus\",\r\n \"matsHttpStatus\",\r\n \"refreshTokenSize\",\r\n \"queuedTimeMs\",\r\n \"startTimeMs\",\r\n \"status\",\r\n]);\n\nexport { IntFields, PerformanceEventStatus, PerformanceEvents };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nvar ServerError = /** @class */ (function (_super) {\r\n __extends(ServerError, _super);\r\n function ServerError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"ServerError\";\r\n Object.setPrototypeOf(_this, ServerError.prototype);\r\n return _this;\r\n }\r\n return ServerError;\r\n}(AuthError));\n\nexport { ServerError };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { Constants } from '../utils/Constants.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nvar InteractionRequiredServerErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\nvar InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n/**\r\n * Interaction required errors defined by the SDK\r\n */\r\nvar InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No refresh token found in the cache. Please sign-in.\"\r\n },\r\n native_account_unavailable: {\r\n code: \"native_account_unavailable\",\r\n desc: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nvar InteractionRequiredAuthError = /** @class */ (function (_super) {\r\n __extends(InteractionRequiredAuthError, _super);\r\n function InteractionRequiredAuthError(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n Object.setPrototypeOf(_this, InteractionRequiredAuthError.prototype);\r\n _this.timestamp = timestamp || Constants.EMPTY_STRING;\r\n _this.traceId = traceId || Constants.EMPTY_STRING;\r\n _this.correlationId = correlationId || Constants.EMPTY_STRING;\r\n _this.claims = claims || Constants.EMPTY_STRING;\r\n _this.name = \"InteractionRequiredAuthError\";\r\n return _this;\r\n }\r\n /**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\n InteractionRequiredAuthError.isInteractionRequiredError = function (errorCode, errorString, subError) {\r\n var isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n var isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n var isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some(function (irErrorCode) {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n };\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n InteractionRequiredAuthError.createNoTokensFoundError = function () {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the native broker returns ACCOUNT_UNAVAILABLE status, indicating that the account was removed and interactive sign-in is required\r\n * @returns\r\n */\r\n InteractionRequiredAuthError.createNativeAccountUnavailableError = function () {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.native_account_unavailable.code, InteractionRequiredAuthErrorMessage.native_account_unavailable.desc);\r\n };\r\n return InteractionRequiredAuthError;\r\n}(AuthError));\n\nexport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar JoseHeaderErrorMessage = {\r\n missingKidError: {\r\n code: \"missing_kid_error\",\r\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\"\r\n },\r\n missingAlgError: {\r\n code: \"missing_alg_error\",\r\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\"\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar JoseHeaderError = /** @class */ (function (_super) {\r\n __extends(JoseHeaderError, _super);\r\n function JoseHeaderError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"JoseHeaderError\";\r\n Object.setPrototypeOf(_this, JoseHeaderError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when keyId isn't set on JOSE header.\r\n */\r\n JoseHeaderError.createMissingKidError = function () {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingKidError.code, JoseHeaderErrorMessage.missingKidError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when algorithm isn't set on JOSE header.\r\n */\r\n JoseHeaderError.createMissingAlgError = function () {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingAlgError.code, JoseHeaderErrorMessage.missingAlgError.desc);\r\n };\r\n return JoseHeaderError;\r\n}(AuthError));\n\nexport { JoseHeaderError, JoseHeaderErrorMessage };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { JoseHeaderError } from '../error/JoseHeaderError.js';\nimport { JsonTypes } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar JoseHeader = /** @class */ (function () {\r\n function JoseHeader(options) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions\r\n * @returns\r\n */\r\n JoseHeader.getShrHeaderString = function (shrHeaderOptions) {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw JoseHeaderError.createMissingKidError();\r\n }\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw JoseHeaderError.createMissingAlgError();\r\n }\r\n var shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type pop, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || JsonTypes.Pop,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg\r\n });\r\n return JSON.stringify(shrHeader);\r\n };\r\n return JoseHeader;\r\n}());\n\nexport { JoseHeader };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nvar MathUtils = /** @class */ (function () {\r\n function MathUtils() {\r\n }\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n MathUtils.decimalToHex = function (num) {\r\n var hex = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n };\r\n return MathUtils;\r\n}());\n\nexport { MathUtils };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { MathUtils } from '../utils/MathUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar GuidGenerator = /** @class */ (function () {\r\n function GuidGenerator(cryptoObj) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n GuidGenerator.prototype.generateGuid = function () {\r\n try {\r\n var buffer = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n var guidHolder = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n var hex = \"0123456789abcdef\";\r\n var r = 0;\r\n var guidResponse = Constants.EMPTY_STRING;\r\n for (var i = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n }\r\n else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n }\r\n else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n };\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n GuidGenerator.prototype.isGuid = function (guid) {\r\n var regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n };\r\n return GuidGenerator;\r\n}());\n\nexport { GuidGenerator };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar BrowserStringUtils = /** @class */ (function () {\r\n function BrowserStringUtils() {\r\n }\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr\r\n */\r\n BrowserStringUtils.stringToUtf8Arr = function (sDOMStr) {\r\n var nChr;\r\n var nArrLen = 0;\r\n var nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (var nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n var aBytes = new Uint8Array(nArrLen);\r\n /* transcription... */\r\n for (var nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n }\r\n else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n return aBytes;\r\n };\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString\r\n */\r\n BrowserStringUtils.stringToArrayBuffer = function (dataString) {\r\n var data = new ArrayBuffer(dataString.length);\r\n var dataView = new Uint8Array(data);\r\n for (var i = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n };\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes\r\n */\r\n BrowserStringUtils.utf8ArrToString = function (aBytes) {\r\n var sView = Constants.EMPTY_STRING;\r\n for (var nPart = void 0, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart);\r\n }\r\n return sView;\r\n };\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk\r\n */\r\n BrowserStringUtils.getSortedObjectString = function (obj) {\r\n return JSON.stringify(obj, Object.keys(obj).sort());\r\n };\r\n return BrowserStringUtils;\r\n}());\n\nexport { BrowserStringUtils };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar Base64Encode = /** @class */ (function () {\r\n function Base64Encode() {\r\n }\r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input\r\n */\r\n Base64Encode.prototype.urlEncode = function (input) {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n };\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr\r\n */\r\n Base64Encode.prototype.urlEncodeArr = function (inputArr) {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n };\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input\r\n */\r\n Base64Encode.prototype.encode = function (input) {\r\n var inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n };\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes\r\n */\r\n Base64Encode.prototype.base64EncArr = function (aBytes) {\r\n var eqLen = (3 - (aBytes.length % 3)) % 3;\r\n var sB64Enc = Constants.EMPTY_STRING;\r\n for (var nMod3 = void 0, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(this.uint6ToB64(nUint24 >>> 18 & 63), this.uint6ToB64(nUint24 >>> 12 & 63), this.uint6ToB64(nUint24 >>> 6 & 63), this.uint6ToB64(nUint24 & 63));\r\n nUint24 = 0;\r\n }\r\n }\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n };\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6\r\n */\r\n Base64Encode.prototype.uint6ToB64 = function (nUint6) {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n };\r\n return Base64Encode;\r\n}());\n\nexport { Base64Encode };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar Base64Decode = /** @class */ (function () {\r\n function Base64Decode() {\r\n }\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input\r\n */\r\n Base64Decode.prototype.decode = function (input) {\r\n var encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n var inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n };\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String\r\n * @param nBlockSize\r\n */\r\n Base64Decode.prototype.base64DecToArr = function (base64String, nBlockSize) {\r\n var sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, Constants.EMPTY_STRING);\r\n var nInLen = sB64Enc.length;\r\n var nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n var aBytes = new Uint8Array(nOutLen);\r\n for (var nMod3 = void 0, nMod4 = void 0, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n return aBytes;\r\n };\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum\r\n */\r\n Base64Decode.prototype.b64ToUint6 = function (charNum) {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ?\r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n };\r\n return Base64Decode;\r\n}());\n\nexport { Base64Decode };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Constant byte array length\r\nvar RANDOM_BYTE_ARR_LENGTH = 32;\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nvar PkceGenerator = /** @class */ (function () {\r\n function PkceGenerator(cryptoObj) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n PkceGenerator.prototype.generateCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var codeVerifier, codeChallenge;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n codeVerifier = this.generateCodeVerifier();\r\n return [4 /*yield*/, this.generateCodeChallengeFromVerifier(codeVerifier)];\r\n case 1:\r\n codeChallenge = _a.sent();\r\n return [2 /*return*/, {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n PkceGenerator.prototype.generateCodeVerifier = function () {\r\n try {\r\n // Generate random values as utf-8\r\n var buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n var pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n }\r\n catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n };\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n PkceGenerator.prototype.generateCodeChallengeFromVerifier = function (pkceCodeVerifier) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pkceHashedCodeVerifier, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.cryptoObj.sha256Digest(pkceCodeVerifier)];\r\n case 1:\r\n pkceHashedCodeVerifier = _a.sent();\r\n // encode hash as base64\r\n return [2 /*return*/, this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier))];\r\n case 2:\r\n e_1 = _a.sent();\r\n throw BrowserAuthError.createPkceNotGeneratedError(e_1);\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return PkceGenerator;\r\n}());\n\nexport { PkceGenerator };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ModernBrowserCrypto = /** @class */ (function () {\r\n function ModernBrowserCrypto() {\r\n }\r\n ModernBrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n return window.crypto.getRandomValues(dataBuffer);\r\n };\r\n ModernBrowserCrypto.prototype.generateKey = function (algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.generateKey(algorithm, extractable, keyUsages)];\r\n });\r\n });\r\n };\r\n ModernBrowserCrypto.prototype.exportKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key)];\r\n });\r\n });\r\n };\r\n ModernBrowserCrypto.prototype.importKey = function (keyData, algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages)];\r\n });\r\n });\r\n };\r\n ModernBrowserCrypto.prototype.sign = function (algorithm, key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.sign(algorithm, key, data)];\r\n });\r\n });\r\n };\r\n ModernBrowserCrypto.prototype.digest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.digest(algorithm, data)];\r\n });\r\n });\r\n };\r\n return ModernBrowserCrypto;\r\n}());\n\nexport { ModernBrowserCrypto };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __spread, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MsrBrowserCrypto = /** @class */ (function () {\r\n function MsrBrowserCrypto() {\r\n }\r\n MsrBrowserCrypto.prototype.initPrng = function (entropy) {\r\n // Turn into array, as initPrng seems to not always like Uint8Array (even though it should support both)\r\n return window.msrCrypto.initPrng(__spread(entropy));\r\n };\r\n MsrBrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n return window.msrCrypto.getRandomValues(dataBuffer);\r\n };\r\n MsrBrowserCrypto.prototype.generateKey = function (algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.generateKey(algorithm, extractable, keyUsages)];\r\n });\r\n });\r\n };\r\n MsrBrowserCrypto.prototype.exportKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.exportKey(KEY_FORMAT_JWK, key)];\r\n });\r\n });\r\n };\r\n MsrBrowserCrypto.prototype.importKey = function (keyData, algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages)];\r\n });\r\n });\r\n };\r\n MsrBrowserCrypto.prototype.sign = function (algorithm, key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.sign(algorithm, key, data)];\r\n });\r\n });\r\n };\r\n MsrBrowserCrypto.prototype.digest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.digest(algorithm, data)];\r\n });\r\n });\r\n };\r\n return MsrBrowserCrypto;\r\n}());\n\nexport { MsrBrowserCrypto };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Constants } from '@azure/msal-common';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MsBrowserCrypto = /** @class */ (function () {\r\n function MsBrowserCrypto() {\r\n }\r\n MsBrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n return window[\"msCrypto\"].getRandomValues(dataBuffer);\r\n };\r\n MsBrowserCrypto.prototype.generateKey = function (algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msGenerateKey = window[\"msCrypto\"].subtle.generateKey(algorithm, extractable, keyUsages);\r\n msGenerateKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msGenerateKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n MsBrowserCrypto.prototype.exportKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", function (e) {\r\n var resultBuffer = e.target.result;\r\n var resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, Constants.EMPTY_STRING)\r\n .replace(/\\n/g, Constants.EMPTY_STRING)\r\n .replace(/\\t/g, Constants.EMPTY_STRING)\r\n .split(\" \").join(Constants.EMPTY_STRING)\r\n .replace(\"\\u0000\", Constants.EMPTY_STRING);\r\n try {\r\n resolve(JSON.parse(resultString));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n msExportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n MsBrowserCrypto.prototype.importKey = function (keyData, algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyString, keyBuffer;\r\n return __generator(this, function (_a) {\r\n keyString = BrowserStringUtils.getSortedObjectString(keyData);\r\n keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, algorithm, extractable, keyUsages);\r\n msImportKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msImportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n MsBrowserCrypto.prototype.sign = function (algorithm, key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msSign = window[\"msCrypto\"].subtle.sign(algorithm, key, data);\r\n msSign.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msSign.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n MsBrowserCrypto.prototype.digest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n return MsBrowserCrypto;\r\n}());\n\nexport { MsBrowserCrypto };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { ModernBrowserCrypto } from './ModernBrowserCrypto.js';\nimport { MsrBrowserCrypto } from './MsrBrowserCrypto.js';\nimport { MsBrowserCrypto } from './MsBrowserCrypto.js';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nvar PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nvar S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nvar MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nvar PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]);\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nvar BrowserCrypto = /** @class */ (function () {\r\n function BrowserCrypto(logger, cryptoOptions) {\r\n var _a, _b;\r\n this.logger = logger;\r\n this.cryptoOptions = cryptoOptions;\r\n if (this.hasBrowserCrypto()) {\r\n // Use standard modern web crypto if available\r\n this.logger.verbose(\"BrowserCrypto: modern crypto interface available\");\r\n this.subtleCrypto = new ModernBrowserCrypto();\r\n }\r\n else if (this.hasIECrypto()) {\r\n // For IE11, use msCrypto interface\r\n this.logger.verbose(\"BrowserCrypto: MS crypto interface available\");\r\n this.subtleCrypto = new MsBrowserCrypto();\r\n }\r\n else if (this.hasMsrCrypto() && ((_a = this.cryptoOptions) === null || _a === void 0 ? void 0 : _a.useMsrCrypto)) {\r\n // For other browsers, use MSR Crypto if found\r\n this.logger.verbose(\"BrowserCrypto: MSR crypto interface available\");\r\n this.subtleCrypto = new MsrBrowserCrypto();\r\n }\r\n else {\r\n if (this.hasMsrCrypto()) {\r\n this.logger.info(\"BrowserCrypto: MSR Crypto interface available but system.cryptoOptions.useMsrCrypto not enabled\");\r\n }\r\n this.logger.error(\"BrowserCrypto: No crypto interfaces available.\");\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto, msCrypto, or msrCrypto interfaces not available.\");\r\n }\r\n // Mainly needed for MSR Crypto: https://github.com/microsoft/MSR-JavaScript-Crypto#random-number-generator-prng\r\n if (this.subtleCrypto.initPrng) {\r\n this.logger.verbose(\"BrowserCrypto: Interface requires entropy\");\r\n if (!((_b = this.cryptoOptions) === null || _b === void 0 ? void 0 : _b.entropy)) {\r\n this.logger.error(\"BrowserCrypto: Interface requires entropy but none provided.\");\r\n throw BrowserConfigurationAuthError.createEntropyNotProvided();\r\n }\r\n this.logger.verbose(\"BrowserCrypto: Entropy provided\");\r\n this.subtleCrypto.initPrng(this.cryptoOptions.entropy);\r\n }\r\n this.keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n BrowserCrypto.prototype.hasIECrypto = function () {\r\n return \"msCrypto\" in window;\r\n };\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n BrowserCrypto.prototype.hasBrowserCrypto = function () {\r\n return \"crypto\" in window;\r\n };\r\n /**\r\n * Check whether MSR crypto polyfill is available\r\n */\r\n BrowserCrypto.prototype.hasMsrCrypto = function () {\r\n return \"msrCrypto\" in window;\r\n };\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString\r\n */\r\n BrowserCrypto.prototype.sha256Digest = function (dataString) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var data;\r\n return __generator(this, function (_a) {\r\n data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n // MSR Crypto wants object with name property, instead of string\r\n return [2 /*return*/, this.subtleCrypto.digest({ name: S256_HASH_ALG }, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer\r\n */\r\n BrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n return this.subtleCrypto.getRandomValues(dataBuffer);\r\n };\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.generateKeyPair = function (extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.subtleCrypto.generateKey(this.keygenAlgorithmOptions, extractable, usages)];\r\n });\r\n });\r\n };\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key\r\n * @param format\r\n */\r\n BrowserCrypto.prototype.exportJwk = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.subtleCrypto.exportKey(key)];\r\n });\r\n });\r\n };\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key\r\n * @param format\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.importJwk = function (key, extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.subtleCrypto.importKey(key, this.keygenAlgorithmOptions, extractable, usages)];\r\n });\r\n });\r\n };\r\n /**\r\n * Signs given data with given key\r\n * @param key\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.sign = function (key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.subtleCrypto.sign(this.keygenAlgorithmOptions, key, data)];\r\n });\r\n });\r\n };\r\n return BrowserCrypto;\r\n}());\n\nexport { BrowserCrypto };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DB_NAME, DB_VERSION, DB_TABLE_NAME } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nvar DatabaseStorage = /** @class */ (function () {\r\n function DatabaseStorage() {\r\n this.dbName = DB_NAME;\r\n this.version = DB_VERSION;\r\n this.tableName = DB_TABLE_NAME;\r\n this.dbOpen = false;\r\n }\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n DatabaseStorage.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var openDB = window.indexedDB.open(_this.dbName, _this.version);\r\n openDB.addEventListener(\"upgradeneeded\", function (e) {\r\n var event = e;\r\n event.target.result.createObjectStore(_this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.db = event.target.result;\r\n _this.dbOpen = true;\r\n resolve();\r\n });\r\n openDB.addEventListener(\"error\", function () { return reject(BrowserAuthError.createDatabaseUnavailableError()); });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Closes the connection to IndexedDB database when all pending transactions\r\n * complete.\r\n */\r\n DatabaseStorage.prototype.closeConnection = function () {\r\n var db = this.db;\r\n if (db && this.dbOpen) {\r\n db.close();\r\n this.dbOpen = false;\r\n }\r\n };\r\n /**\r\n * Opens database if it's not already open\r\n */\r\n DatabaseStorage.prototype.validateDbIsOpen = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.dbOpen) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.open()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGet = objectStore.get(key);\r\n dbGet.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n dbGet.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key\r\n * @param payload\r\n */\r\n DatabaseStorage.prototype.setItem = function (key, payload) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbPut = objectStore.put(payload, key);\r\n dbPut.addEventListener(\"success\", function () {\r\n _this.closeConnection();\r\n resolve();\r\n });\r\n dbPut.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes item from IndexedDB under given key\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbDelete = objectStore.delete(key);\r\n dbDelete.addEventListener(\"success\", function () {\r\n _this.closeConnection();\r\n resolve();\r\n });\r\n dbDelete.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the storage object as an iterable array of strings.\r\n */\r\n DatabaseStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGetKeys = objectStore.getAllKeys();\r\n dbGetKeys.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n dbGetKeys.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Checks whether there is an object under the search key in the object store\r\n */\r\n DatabaseStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbContainsKey = objectStore.count(key);\r\n dbContainsKey.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result === 1);\r\n });\r\n dbContainsKey.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\r\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\r\n * with IndexedDB database versions.\r\n */\r\n DatabaseStorage.prototype.deleteDatabase = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n // Check if database being deleted exists\r\n if (this.db && this.dbOpen) {\r\n this.closeConnection();\r\n }\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\r\n deleteDbRequest.addEventListener(\"success\", function () { return resolve(true); });\r\n deleteDbRequest.addEventListener(\"blocked\", function () { return resolve(true); });\r\n deleteDbRequest.addEventListener(\"error\", function () { return reject(false); });\r\n })];\r\n });\r\n });\r\n };\r\n return DatabaseStorage;\r\n}());\n\nexport { DatabaseStorage };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MemoryStorage = /** @class */ (function () {\r\n function MemoryStorage() {\r\n this.cache = new Map();\r\n }\r\n MemoryStorage.prototype.getItem = function (key) {\r\n return this.cache.get(key) || null;\r\n };\r\n MemoryStorage.prototype.setItem = function (key, value) {\r\n this.cache.set(key, value);\r\n };\r\n MemoryStorage.prototype.removeItem = function (key) {\r\n this.cache.delete(key);\r\n };\r\n MemoryStorage.prototype.getKeys = function () {\r\n var cacheKeys = [];\r\n this.cache.forEach(function (value, key) {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n };\r\n MemoryStorage.prototype.containsKey = function (key) {\r\n return this.cache.has(key);\r\n };\r\n MemoryStorage.prototype.clear = function () {\r\n this.cache.clear();\r\n };\r\n return MemoryStorage;\r\n}());\n\nexport { MemoryStorage };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { DatabaseStorage } from './DatabaseStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\r\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\r\n */\r\nvar AsyncMemoryStorage = /** @class */ (function () {\r\n function AsyncMemoryStorage(logger, storeName) {\r\n this.inMemoryCache = new MemoryStorage();\r\n this.indexedDBCache = new DatabaseStorage();\r\n this.logger = logger;\r\n this.storeName = storeName;\r\n }\r\n AsyncMemoryStorage.prototype.handleDatabaseAccessError = function (error) {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\r\n this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\r\n }\r\n else {\r\n throw error;\r\n }\r\n };\r\n /**\r\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\r\n * storage object if item isn't found in-memory.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var item, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n item = this.inMemoryCache.getItem(key);\r\n if (!!item) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getItem(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.handleDatabaseAccessError(e_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, item];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\r\n * storage object with the given key.\r\n * @param key\r\n * @param value\r\n */\r\n AsyncMemoryStorage.prototype.setItem = function (key, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.setItem(key, value);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.setItem(key, value)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_2 = _a.sent();\r\n this.handleDatabaseAccessError(e_2);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.removeItem(key);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.removeItem(key)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _a.sent();\r\n this.handleDatabaseAccessError(e_3);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the\r\n * asynchronous storage object.\r\n */\r\n AsyncMemoryStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cacheKeys, e_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cacheKeys = this.inMemoryCache.getKeys();\r\n if (!(cacheKeys.length === 0)) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getKeys()];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_4 = _a.sent();\r\n this.handleDatabaseAccessError(e_4);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, cacheKeys];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns true or false if the given key is present in the cache.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var containsKey, e_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n containsKey = this.inMemoryCache.containsKey(key);\r\n if (!!containsKey) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.containsKey(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_5 = _a.sent();\r\n this.handleDatabaseAccessError(e_5);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, containsKey];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Clears in-memory Map\r\n */\r\n AsyncMemoryStorage.prototype.clearInMemory = function () {\r\n // InMemory cache is a Map instance, clear is straightforward\r\n this.logger.verbose(\"Deleting in-memory keystore \" + this.storeName);\r\n this.inMemoryCache.clear();\r\n this.logger.verbose(\"In-memory keystore \" + this.storeName + \" deleted\");\r\n };\r\n /**\r\n * Tries to delete the IndexedDB database\r\n * @returns\r\n */\r\n AsyncMemoryStorage.prototype.clearPersistent = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var dbDeleted, e_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n this.logger.verbose(\"Deleting persistent keystore\");\r\n return [4 /*yield*/, this.indexedDBCache.deleteDatabase()];\r\n case 1:\r\n dbDeleted = _a.sent();\r\n if (dbDeleted) {\r\n this.logger.verbose(\"Persistent keystore deleted\");\r\n }\r\n return [2 /*return*/, dbDeleted];\r\n case 2:\r\n e_6 = _a.sent();\r\n this.handleDatabaseAccessError(e_6);\r\n return [2 /*return*/, false];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return AsyncMemoryStorage;\r\n}());\n\nexport { AsyncMemoryStorage };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AsyncMemoryStorage } from './AsyncMemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CryptoKeyStoreNames;\r\n(function (CryptoKeyStoreNames) {\r\n CryptoKeyStoreNames[\"asymmetricKeys\"] = \"asymmetricKeys\";\r\n CryptoKeyStoreNames[\"symmetricKeys\"] = \"symmetricKeys\";\r\n})(CryptoKeyStoreNames || (CryptoKeyStoreNames = {}));\r\n/**\r\n * MSAL CryptoKeyStore DB Version 2\r\n */\r\nvar CryptoKeyStore = /** @class */ (function () {\r\n function CryptoKeyStore(logger) {\r\n this.logger = logger;\r\n this.asymmetricKeys = new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.asymmetricKeys);\r\n this.symmetricKeys = new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.symmetricKeys);\r\n }\r\n CryptoKeyStore.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Delete in-memory keystores\r\n this.asymmetricKeys.clearInMemory();\r\n this.symmetricKeys.clearInMemory();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.asymmetricKeys.clearPersistent()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof Error) {\r\n this.logger.error(\"Clearing keystore failed with error: \" + e_1.message);\r\n }\r\n else {\r\n this.logger.error(\"Clearing keystore failed with unknown error\");\r\n }\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return CryptoKeyStore;\r\n}());\n\nexport { CryptoKeyStore, CryptoKeyStoreNames };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, JoseHeader } from '@azure/msal-common';\nimport { GuidGenerator } from './GuidGenerator.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\nimport { Base64Decode } from '../encode/Base64Decode.js';\nimport { PkceGenerator } from './PkceGenerator.js';\nimport { BrowserCrypto } from './BrowserCrypto.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { CryptoKeyStore } from '../cache/CryptoKeyStore.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nvar CryptoOps = /** @class */ (function () {\r\n function CryptoOps(logger, performanceClient, cryptoConfig) {\r\n this.logger = logger;\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto(this.logger, cryptoConfig);\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = new CryptoKeyStore(this.logger);\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n CryptoOps.prototype.createNewGuid = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n /**\r\n * Encodes input string to base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Encode = function (input) {\r\n return this.b64Encode.encode(input);\r\n };\r\n /**\r\n * Decodes input string from base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Decode = function (input) {\r\n return this.b64Decode.decode(input);\r\n };\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n CryptoOps.prototype.generatePkceCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.pkceGenerator.generateCodes()];\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n CryptoOps.prototype.getPublicKeyThumbprint = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var publicKeyThumbMeasurement, keyPair, publicKeyJwk, pubKeyThumprintObj, publicJwkString, publicJwkHash, privateKeyJwk, unextractablePrivateKey;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n publicKeyThumbMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\r\n return [4 /*yield*/, this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES)];\r\n case 1:\r\n keyPair = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _b.sent();\r\n pubKeyThumprintObj = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n publicJwkString = BrowserStringUtils.getSortedObjectString(pubKeyThumprintObj);\r\n return [4 /*yield*/, this.hashString(publicJwkString)];\r\n case 3:\r\n publicJwkHash = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.privateKey)];\r\n case 4:\r\n privateKeyJwk = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"])];\r\n case 5:\r\n unextractablePrivateKey = _b.sent();\r\n // Store Keypair data in keystore\r\n return [4 /*yield*/, this.cache.asymmetricKeys.setItem(publicJwkHash, {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n })];\r\n case 6:\r\n // Store Keypair data in keystore\r\n _b.sent();\r\n if (publicKeyThumbMeasurement) {\r\n publicKeyThumbMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n return [2 /*return*/, publicJwkHash];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid\r\n */\r\n CryptoOps.prototype.removeTokenBindingKey = function (kid) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyFound;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cache.asymmetricKeys.removeItem(kid)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, this.cache.asymmetricKeys.containsKey(kid)];\r\n case 2:\r\n keyFound = _a.sent();\r\n return [2 /*return*/, !keyFound];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n CryptoOps.prototype.clearKeystore = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cache.clear()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload\r\n * @param kid\r\n */\r\n CryptoOps.prototype.signJwt = function (payload, kid, correlationId) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var signJwtMeasurement, cachedKeyPair, publicKeyJwk, publicKeyJwkString, encodedKeyIdThumbprint, shrHeader, encodedShrHeader, encodedPayload, tokenString, tokenBuffer, signatureBuffer, encodedSignature, signedJwt;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n signJwtMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\r\n return [4 /*yield*/, this.cache.asymmetricKeys.getItem(kid)];\r\n case 1:\r\n cachedKeyPair = _b.sent();\r\n if (!cachedKeyPair) {\r\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\r\n }\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(cachedKeyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _b.sent();\r\n publicKeyJwkString = BrowserStringUtils.getSortedObjectString(publicKeyJwk);\r\n encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));\r\n shrHeader = JoseHeader.getShrHeaderString({ kid: encodedKeyIdThumbprint, alg: publicKeyJwk.alg });\r\n encodedShrHeader = this.b64Encode.urlEncode(shrHeader);\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n tokenString = encodedShrHeader + \".\" + encodedPayload;\r\n tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n return [4 /*yield*/, this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer)];\r\n case 3:\r\n signatureBuffer = _b.sent();\r\n encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n signedJwt = tokenString + \".\" + encodedSignature;\r\n if (signJwtMeasurement) {\r\n signJwtMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n return [2 /*return*/, signedJwt];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n * @param plainText\r\n */\r\n CryptoOps.prototype.hashString = function (plainText) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var hashBuffer, hashBytes;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.browserCrypto.sha256Digest(plainText)];\r\n case 1:\r\n hashBuffer = _a.sent();\r\n hashBytes = new Uint8Array(hashBuffer);\r\n return [2 /*return*/, this.b64Encode.urlEncodeArr(hashBytes)];\r\n }\r\n });\r\n });\r\n };\r\n CryptoOps.POP_KEY_USAGES = [\"sign\", \"verify\"];\r\n CryptoOps.EXTRACTABLE = true;\r\n return CryptoOps;\r\n}());\n\nexport { CryptoOps };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(LogLevel || (LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nvar Logger = /** @class */ (function () {\r\n function Logger(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = LogLevel.Info;\r\n var defaultLoggerCallback = function () {\r\n return;\r\n };\r\n var setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback = setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level = typeof (setLoggerOptions.logLevel) === \"number\" ? setLoggerOptions.logLevel : LogLevel.Info;\r\n this.correlationId = setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n Logger.createDefaultLoggerOptions = function () {\r\n return {\r\n loggerCallback: function () {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info\r\n };\r\n };\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n Logger.prototype.clone = function (packageName, packageVersion, correlationId) {\r\n return new Logger({ loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId }, packageName, packageVersion);\r\n };\r\n /**\r\n * Log message with required options.\r\n */\r\n Logger.prototype.logMessage = function (logMessage, options) {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n var timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n var logHeader;\r\n if (!StringUtils.isEmpty(options.correlationId)) {\r\n logHeader = \"[\" + timestamp + \"] : [\" + options.correlationId + \"]\";\r\n }\r\n else if (!StringUtils.isEmpty(this.correlationId)) {\r\n logHeader = \"[\" + timestamp + \"] : [\" + this.correlationId + \"]\";\r\n }\r\n else {\r\n logHeader = \"[\" + timestamp + \"]\";\r\n }\r\n var log = logHeader + \" : \" + this.packageName + \"@\" + this.packageVersion + \" : \" + LogLevel[options.logLevel] + \" - \" + logMessage;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n };\r\n /**\r\n * Execute callback with message.\r\n */\r\n Logger.prototype.executeCallback = function (level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n };\r\n /**\r\n * Logs error messages.\r\n */\r\n Logger.prototype.error = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n Logger.prototype.errorPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs warning messages.\r\n */\r\n Logger.prototype.warning = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n Logger.prototype.warningPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs info messages.\r\n */\r\n Logger.prototype.info = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n Logger.prototype.infoPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs verbose messages.\r\n */\r\n Logger.prototype.verbose = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n Logger.prototype.verbosePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs trace messages.\r\n */\r\n Logger.prototype.trace = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n Logger.prototype.tracePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n Logger.prototype.isPiiLoggingEnabled = function () {\r\n return this.piiLoggingEnabled || false;\r\n };\r\n return Logger;\r\n}());\n\nexport { LogLevel, Logger };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __assign } from '../../_virtual/_tslib.js';\nimport { IntFields, PerformanceEventStatus } from './PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PerformanceClient = /** @class */ (function () {\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n */\r\n function PerformanceClient(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.queueMeasurements = new Map();\r\n this.preQueueTimeByCorrelationId = new Map();\r\n }\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n PerformanceClient.prototype.startPerformanceMeasurement = function (measureName, correlationId) {\r\n return {};\r\n };\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this incorrectly-named function will be removed at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n PerformanceClient.prototype.startPerformanceMeasuremeant = function (measureName, correlationId) {\r\n return {};\r\n };\r\n /**\r\n * Get integral fields.\r\n * Override to change the set.\r\n */\r\n PerformanceClient.prototype.getIntFields = function () {\r\n return IntFields;\r\n };\r\n /**\r\n * Gets map of pre-queue times by correlation Id\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns {number}\r\n */\r\n PerformanceClient.prototype.getPreQueueTime = function (eventName, correlationId) {\r\n var preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId);\r\n if (!preQueueEvent) {\r\n this.logger.trace(\"PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: \" + correlationId + \", unable to add queue measurement\");\r\n return;\r\n }\r\n else if (preQueueEvent.name !== eventName) {\r\n this.logger.trace(\"PerformanceClient.getPreQueueTime: no pre-queue time found for \" + eventName + \", unable to add queue measurement\");\r\n return;\r\n }\r\n return preQueueEvent.time;\r\n };\r\n /**\r\n * Calculates the difference between current time and time when function was queued.\r\n * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\r\n *\r\n * @param {number} preQueueTime\r\n * @param {number} currentTime\r\n * @returns {number}\r\n */\r\n PerformanceClient.prototype.calculateQueuedTime = function (preQueueTime, currentTime) {\r\n if (preQueueTime < 1) {\r\n this.logger.trace(\"PerformanceClient: preQueueTime should be a positive integer and not \" + preQueueTime);\r\n return 0;\r\n }\r\n if (currentTime < 1) {\r\n this.logger.trace(\"PerformanceClient: currentTime should be a positive integer and not \" + currentTime);\r\n return 0;\r\n }\r\n if (currentTime < preQueueTime) {\r\n this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\r\n return 0;\r\n }\r\n return currentTime - preQueueTime;\r\n };\r\n /**\r\n * Adds queue measurement time to QueueMeasurements array for given correlation ID.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n PerformanceClient.prototype.addQueueMeasurement = function (eventName, correlationId, queueTime, manuallyCompleted) {\r\n if (!correlationId) {\r\n this.logger.trace(\"PerformanceClient.addQueueMeasurement: correlationId not provided for \" + eventName + \", cannot add queue measurement\");\r\n return;\r\n }\r\n if (queueTime === 0) {\r\n // Possible for there to be no queue time after calculation\r\n this.logger.trace(\"PerformanceClient.addQueueMeasurement: queue time provided for \" + eventName + \" is \" + queueTime);\r\n }\r\n else if (!queueTime) {\r\n this.logger.trace(\"PerformanceClient.addQueueMeasurement: no queue time provided for \" + eventName);\r\n return;\r\n }\r\n var queueMeasurement = { eventName: eventName, queueTime: queueTime, manuallyCompleted: manuallyCompleted };\r\n // Adds to existing correlation Id if present in queueMeasurements\r\n var existingMeasurements = this.queueMeasurements.get(correlationId);\r\n if (existingMeasurements) {\r\n existingMeasurements.push(queueMeasurement);\r\n this.queueMeasurements.set(correlationId, existingMeasurements);\r\n }\r\n else {\r\n // Sets new correlation Id if not present in queueMeasurements\r\n this.logger.trace(\"PerformanceClient.addQueueMeasurement: adding correlationId \" + correlationId + \" to queue measurements\");\r\n var measurementArray = [queueMeasurement];\r\n this.queueMeasurements.set(correlationId, measurementArray);\r\n }\r\n // Delete processed pre-queue event.\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n };\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n PerformanceClient.prototype.startMeasurement = function (measureName, correlationId) {\r\n var _this = this;\r\n var _a, _b;\r\n // Generate a placeholder correlation if the request does not provide one\r\n var eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(\"PerformanceClient: No correlation id provided for \" + measureName + \", generating\", eventCorrelationId);\r\n }\r\n // Duplicate code to address spelling error will be removed at the next major version bump.\r\n this.logger.trace(\"PerformanceClient: Performance measurement started for \" + measureName, eventCorrelationId);\r\n var performanceMeasurement = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\r\n performanceMeasurement.startMeasurement();\r\n var inProgressEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n appName: (_a = this.applicationTelemetry) === null || _a === void 0 ? void 0 : _a.appName,\r\n appVersion: (_b = this.applicationTelemetry) === null || _b === void 0 ? void 0 : _b.appVersion,\r\n };\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n endMeasurement: function (event) {\r\n return _this.endMeasurement(__assign(__assign({}, inProgressEvent), event), performanceMeasurement);\r\n },\r\n discardMeasurement: function () {\r\n return _this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n addStaticFields: function (fields) {\r\n return _this.addStaticFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: function (counters) {\r\n return _this.increment(counters, inProgressEvent.correlationId);\r\n },\r\n measurement: performanceMeasurement,\r\n event: inProgressEvent\r\n };\r\n };\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n * Adds a new field named as \"[event name]DurationMs\" for sub-measurements, completes and emits an event\r\n * otherwise.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @param {IPerformanceMeasurement} measurement\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n PerformanceClient.prototype.endMeasurement = function (event, measurement) {\r\n var _this = this;\r\n var _a, _b;\r\n var rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (!rootEvent) {\r\n this.logger.trace(\"PerformanceClient: Measurement not found for \" + event.eventId, event.correlationId);\r\n return null;\r\n }\r\n var isRoot = event.eventId === rootEvent.eventId;\r\n var queueInfo = {\r\n totalQueueTime: 0,\r\n totalQueueCount: 0,\r\n manuallyCompletedCount: 0\r\n };\r\n if (isRoot) {\r\n queueInfo = this.getQueueInfo(event.correlationId);\r\n this.discardCache(rootEvent.correlationId);\r\n }\r\n else {\r\n (_a = rootEvent.incompleteSubMeasurements) === null || _a === void 0 ? void 0 : _a.delete(event.eventId);\r\n }\r\n measurement === null || measurement === void 0 ? void 0 : measurement.endMeasurement();\r\n var durationMs = measurement === null || measurement === void 0 ? void 0 : measurement.flushMeasurement();\r\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\r\n if (!durationMs) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", rootEvent.correlationId);\r\n return null;\r\n }\r\n this.logger.trace(\"PerformanceClient: Performance measurement ended for \" + event.name + \": \" + durationMs + \" ms\", event.correlationId);\r\n // Add sub-measurement attribute to root event.\r\n if (!isRoot) {\r\n rootEvent[event.name + \"DurationMs\"] = Math.floor(durationMs);\r\n return __assign({}, rootEvent);\r\n }\r\n var finalEvent = __assign(__assign({}, rootEvent), event);\r\n var incompleteSubsCount = 0;\r\n // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed.\r\n (_b = finalEvent.incompleteSubMeasurements) === null || _b === void 0 ? void 0 : _b.forEach(function (subMeasurement) {\r\n _this.logger.trace(\"PerformanceClient: Incomplete submeasurement \" + subMeasurement.name + \" found for \" + event.name, finalEvent.correlationId);\r\n incompleteSubsCount++;\r\n });\r\n finalEvent.incompleteSubMeasurements = undefined;\r\n finalEvent = __assign(__assign({}, finalEvent), { durationMs: Math.round(durationMs), queuedTimeMs: queueInfo.totalQueueTime, queuedCount: queueInfo.totalQueueCount, queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount, status: PerformanceEventStatus.Completed, incompleteSubsCount: incompleteSubsCount });\r\n this.truncateIntegralFields(finalEvent, this.getIntFields());\r\n this.emitEvents([finalEvent], event.correlationId);\r\n return finalEvent;\r\n };\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n PerformanceClient.prototype.addStaticFields = function (fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n var event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n this.eventsByCorrelationId.set(correlationId, __assign(__assign({}, event), fields));\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n };\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param counters {Counters}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n PerformanceClient.prototype.increment = function (counters, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n var event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n for (var counter in counters) {\r\n if (!event.hasOwnProperty(counter)) {\r\n event[counter] = 0;\r\n }\r\n event[counter] += counters[counter];\r\n }\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n };\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n PerformanceClient.prototype.cacheEventByCorrelationId = function (event) {\r\n var rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (rootEvent) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement for \" + event.name + \" added/updated\", event.correlationId);\r\n rootEvent.incompleteSubMeasurements = rootEvent.incompleteSubMeasurements || new Map();\r\n rootEvent.incompleteSubMeasurements.set(event.eventId, { name: event.name, startTimeMs: event.startTimeMs });\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Performance measurement for \" + event.name + \" started\", event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, __assign({}, event));\r\n }\r\n };\r\n PerformanceClient.prototype.getQueueInfo = function (correlationId) {\r\n var queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\r\n if (!queueMeasurementForCorrelationId) {\r\n this.logger.trace(\"PerformanceClient: no queue measurements found for for correlationId: \" + correlationId);\r\n }\r\n var totalQueueTime = 0;\r\n var totalQueueCount = 0;\r\n var manuallyCompletedCount = 0;\r\n queueMeasurementForCorrelationId === null || queueMeasurementForCorrelationId === void 0 ? void 0 : queueMeasurementForCorrelationId.forEach(function (measurement) {\r\n totalQueueTime += measurement.queueTime;\r\n totalQueueCount++;\r\n manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0;\r\n });\r\n return {\r\n totalQueueTime: totalQueueTime,\r\n totalQueueCount: totalQueueCount,\r\n manuallyCompletedCount: manuallyCompletedCount\r\n };\r\n };\r\n /**\r\n * Removes measurements for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n PerformanceClient.prototype.discardMeasurements = function (correlationId) {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n };\r\n /**\r\n * Removes cache for a given correlation id.\r\n *\r\n * @param {string} correlationId correlation identifier\r\n */\r\n PerformanceClient.prototype.discardCache = function (correlationId) {\r\n this.discardMeasurements(correlationId);\r\n this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\r\n this.queueMeasurements.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n };\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n PerformanceClient.prototype.addPerformanceCallback = function (callback) {\r\n var callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(\"PerformanceClient: Performance callback registered with id: \" + callbackId);\r\n return callbackId;\r\n };\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n PerformanceClient.prototype.removePerformanceCallback = function (callbackId) {\r\n var result = this.callbacks.delete(callbackId);\r\n if (result) {\r\n this.logger.verbose(\"PerformanceClient: Performance callback \" + callbackId + \" removed.\");\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: Performance callback \" + callbackId + \" not removed.\");\r\n }\r\n return result;\r\n };\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n PerformanceClient.prototype.emitEvents = function (events, correlationId) {\r\n var _this = this;\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n this.callbacks.forEach(function (callback, callbackId) {\r\n _this.logger.trace(\"PerformanceClient: Emitting event to callback \" + callbackId, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n };\r\n /**\r\n * Enforce truncation of integral fields in performance event.\r\n * @param {PerformanceEvent} event performance event to update.\r\n * @param {Set} intFields integral fields.\r\n */\r\n PerformanceClient.prototype.truncateIntegralFields = function (event, intFields) {\r\n intFields.forEach(function (key) {\r\n if (key in event && typeof event[key] === \"number\") {\r\n event[key] = Math.floor(event[key]);\r\n }\r\n });\r\n };\r\n return PerformanceClient;\r\n}());\n\nexport { PerformanceClient };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { PerformanceClient } from './PerformanceClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubPerformanceMeasurement = /** @class */ (function () {\r\n function StubPerformanceMeasurement() {\r\n }\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n StubPerformanceMeasurement.prototype.startMeasurement = function () { };\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n StubPerformanceMeasurement.prototype.endMeasurement = function () { };\r\n StubPerformanceMeasurement.prototype.flushMeasurement = function () {\r\n return null;\r\n };\r\n return StubPerformanceMeasurement;\r\n}());\r\nvar StubPerformanceClient = /** @class */ (function (_super) {\r\n __extends(StubPerformanceClient, _super);\r\n function StubPerformanceClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n StubPerformanceClient.prototype.generateId = function () {\r\n return \"callback-id\";\r\n };\r\n StubPerformanceClient.prototype.startPerformanceMeasuremeant = function () {\r\n return new StubPerformanceMeasurement();\r\n };\r\n StubPerformanceClient.prototype.startPerformanceMeasurement = function () {\r\n return new StubPerformanceMeasurement();\r\n };\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n StubPerformanceClient.prototype.calculateQueuedTime = function (preQueueTime, currentTime) {\r\n return 0;\r\n };\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n StubPerformanceClient.prototype.addQueueMeasurement = function (eventName, correlationId, queueTime) {\r\n return;\r\n };\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n StubPerformanceClient.prototype.setPreQueueTime = function (eventName, correlationId) {\r\n return;\r\n };\r\n return StubPerformanceClient;\r\n}(PerformanceClient));\n\nexport { StubPerformanceClient, StubPerformanceMeasurement };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: function () {\r\n var notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: function () {\r\n var notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: function () {\r\n var notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n generatePkceCodes: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n getPublicKeyThumbprint: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n removeTokenBindingKey: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n clearKeystore: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n signJwt: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n hashString: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - hashString() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\n\nexport { DEFAULT_CRYPTO_IMPLEMENTATION };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { CredentialType, CacheType, Separators, Constants, AuthenticationScheme } from '../../utils/Constants.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: -------\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\r\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\r\n * userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\r\n * }\r\n */\r\nvar CredentialEntity = /** @class */ (function () {\r\n function CredentialEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n CredentialEntity.prototype.generateAccountId = function () {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n };\r\n /**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\n CredentialEntity.prototype.generateCredentialId = function () {\r\n return CredentialEntity.generateCredentialIdForCacheKey(this.credentialType, this.clientId, this.realm, this.familyId);\r\n };\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n CredentialEntity.prototype.generateTarget = function () {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n };\r\n /**\r\n * generates credential key\r\n */\r\n CredentialEntity.prototype.generateCredentialKey = function () {\r\n return CredentialEntity.generateCredentialCacheKey(this.homeAccountId, this.environment, this.credentialType, this.clientId, this.realm, this.target, this.familyId, this.tokenType, this.requestedClaimsHash);\r\n };\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n CredentialEntity.prototype.generateType = function () {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * generates credential key\r\n * -\\-----\r\n */\r\n CredentialEntity.generateCredentialCacheKey = function (homeAccountId, environment, credentialType, clientId, realm, target, familyId, tokenType, requestedClaimsHash) {\r\n var credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\r\n this.generateSchemeForCacheKey(tokenType)\r\n ];\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n CredentialEntity.generateAccountIdForCacheKey = function (homeAccountId, environment) {\r\n var accountId = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n CredentialEntity.generateCredentialIdForCacheKey = function (credentialType, clientId, realm, familyId) {\r\n var clientOrFamilyId = credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n var credentialId = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || Constants.EMPTY_STRING,\r\n ];\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n CredentialEntity.generateTargetForCacheKey = function (scopes) {\r\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\r\n };\r\n /**\r\n * Generate requested claims key component as per schema: \r\n */\r\n CredentialEntity.generateClaimsHashForCacheKey = function (requestedClaimsHash) {\r\n return (requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\r\n };\r\n /**\r\n * Generate scheme key componenet as per schema: \r\n */\r\n CredentialEntity.generateSchemeForCacheKey = function (tokenType) {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\r\n };\r\n return CredentialEntity;\r\n}());\n\nexport { CredentialEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nvar IdTokenEntity = /** @class */ (function (_super) {\r\n __extends(IdTokenEntity, _super);\r\n function IdTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n IdTokenEntity.createIdTokenEntity = function (homeAccountId, environment, idToken, clientId, tenantId) {\r\n var idTokenEntity = new IdTokenEntity();\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n return idTokenEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n IdTokenEntity.isIdTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n };\r\n return IdTokenEntity;\r\n}(CredentialEntity));\n\nexport { IdTokenEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { Constants, OIDC_SCOPES } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nvar ScopeSet = /** @class */ (function () {\r\n function ScopeSet(inputScopes) {\r\n var _this = this;\r\n // Filter empty string and null/undefined array items\r\n var scopeArr = inputScopes ? StringUtils.trimArrayEntries(__spreadArrays(inputScopes)) : [];\r\n var filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(function (scope) { return _this.scopes.add(scope); });\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n ScopeSet.fromString = function (inputScopeString) {\r\n var scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n var inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n };\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString\r\n * @returns\r\n */\r\n ScopeSet.createSearchScopes = function (inputScopeString) {\r\n var scopeSet = new ScopeSet(inputScopeString);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n }\r\n else {\r\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return scopeSet;\r\n };\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n ScopeSet.prototype.validateInputScopes = function (inputScopes) {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError();\r\n }\r\n };\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.containsScope = function (scope) {\r\n var lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n var lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n };\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n ScopeSet.prototype.containsScopeSet = function (scopeSet) {\r\n var _this = this;\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(function (scope) { return _this.containsScope(scope); }));\r\n };\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n ScopeSet.prototype.containsOnlyOIDCScopes = function () {\r\n var _this = this;\r\n var defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n if (_this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n };\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n ScopeSet.prototype.appendScope = function (newScope) {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n };\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n ScopeSet.prototype.appendScopes = function (newScopes) {\r\n var _this = this;\r\n try {\r\n newScopes.forEach(function (newScope) { return _this.appendScope(newScope); });\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n };\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.removeScope = function (scope) {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n };\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n ScopeSet.prototype.removeOIDCScopes = function () {\r\n var _this = this;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n _this.scopes.delete(defaultScope);\r\n });\r\n };\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.unionScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n var unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n this.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n return unionScopes;\r\n };\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.intersectingScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n var unionScopes = this.unionScopeSets(otherScopes);\r\n var sizeOtherScopes = otherScopes.getScopeCount();\r\n var sizeThisScopes = this.getScopeCount();\r\n var sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n };\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n ScopeSet.prototype.getScopeCount = function () {\r\n return this.scopes.size;\r\n };\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n ScopeSet.prototype.asArray = function () {\r\n var array = [];\r\n this.scopes.forEach(function (val) { return array.push(val); });\r\n return array;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n ScopeSet.prototype.printScopes = function () {\r\n if (this.scopes) {\r\n var scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n ScopeSet.prototype.printScopesLowerCase = function () {\r\n return this.printScopes().toLowerCase();\r\n };\r\n return ScopeSet;\r\n}());\n\nexport { ScopeSet };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { Separators, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, crypto) {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n try {\r\n var decodedClientInfo = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError(e.message);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (StringUtils.isEmpty(homeAccountId)) {\r\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\r\n }\r\n var clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\r\n };\r\n}\n\nexport { buildClientInfo, buildClientInfoFromHomeAccountId };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nvar AuthorityType;\r\n(function (AuthorityType) {\r\n AuthorityType[AuthorityType[\"Default\"] = 0] = \"Default\";\r\n AuthorityType[AuthorityType[\"Adfs\"] = 1] = \"Adfs\";\r\n AuthorityType[AuthorityType[\"Dsts\"] = 2] = \"Dsts\";\r\n AuthorityType[AuthorityType[\"Ciam\"] = 3] = \"Ciam\";\r\n})(AuthorityType || (AuthorityType = {}));\n\nexport { AuthorityType };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { Separators, CacheAccountType, CacheType, Constants } from '../../utils/Constants.js';\nimport { buildClientInfo } from '../../account/ClientInfo.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\nimport { AuthorityType } from '../../authority/AuthorityType.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * nativeAccountId: Account identifier on the native device\r\n * }\r\n */\r\nvar AccountEntity = /** @class */ (function () {\r\n function AccountEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n AccountEntity.prototype.generateAccountId = function () {\r\n var accountId = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n AccountEntity.prototype.generateAccountKey = function () {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n };\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n AccountEntity.prototype.generateType = function () {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n AccountEntity.prototype.getAccountInfo = function () {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims,\r\n nativeAccountId: this.nativeAccountId\r\n };\r\n };\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n AccountEntity.generateAccountCacheKey = function (accountInterface) {\r\n var accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || Constants.EMPTY_STRING,\r\n accountInterface.tenantId || Constants.EMPTY_STRING,\r\n ];\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n AccountEntity.createAccount = function (clientInfo, homeAccountId, idToken, authority, cloudGraphHostName, msGraphHost, environment, nativeAccountId) {\r\n var _a, _b, _c, _d, _e, _f;\r\n var account = new AccountEntity();\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n account.nativeAccountId = nativeAccountId;\r\n var env = environment || (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.tid) || Constants.EMPTY_STRING;\r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.oid) || ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.sub) || Constants.EMPTY_STRING;\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n var preferredUsername = (_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.preferred_username;\r\n var email = ((_e = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _e === void 0 ? void 0 : _e.emails) ? idToken.claims.emails[0] : null;\r\n account.username = preferredUsername || email || Constants.EMPTY_STRING;\r\n account.name = (_f = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _f === void 0 ? void 0 : _f.name;\r\n }\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n return account;\r\n };\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n AccountEntity.createGenericAccount = function (homeAccountId, idToken, authority, cloudGraphHostName, msGraphHost, environment) {\r\n var _a, _b, _c, _d;\r\n var account = new AccountEntity();\r\n account.authorityType = (authority &&\r\n authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = Constants.EMPTY_STRING;\r\n var env = environment || authority && authority.getPreferredCache();\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.oid) || ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.sub) || Constants.EMPTY_STRING;\r\n // upn claim for most ADFS scenarios\r\n account.username = ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.upn) || Constants.EMPTY_STRING;\r\n account.name = ((_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.name) || Constants.EMPTY_STRING;\r\n account.idTokenClaims = idToken === null || idToken === void 0 ? void 0 : idToken.claims;\r\n }\r\n account.environment = env;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n return account;\r\n };\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n AccountEntity.generateHomeAccountId = function (serverClientInfo, authType, logger, cryptoObj, idToken) {\r\n var _a;\r\n var accountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.sub) ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs || authType === AuthorityType.Dsts) {\r\n return accountId;\r\n }\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n var clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccountEntity.isAccountEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n };\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n AccountEntity.accountInfoIsEqual = function (accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n var claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n var accountAClaims = (accountA.idTokenClaims || {});\r\n var accountBClaims = (accountB.idTokenClaims || {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\r\n (accountAClaims.nonce === accountBClaims.nonce);\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId) &&\r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment) &&\r\n (accountA.nativeAccountId === accountB.nativeAccountId) &&\r\n claimsMatch;\r\n };\r\n return AccountEntity;\r\n}());\n\nexport { AccountEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nvar AuthToken = /** @class */ (function () {\r\n function AuthToken(rawToken, crypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n AuthToken.extractTokenClaims = function (encodedToken, crypto) {\r\n var decodedToken = StringUtils.decodeAuthToken(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n var base64TokenPayload = decodedToken.JWSPayload;\r\n // base64Decode() should throw an error if there is an issue\r\n var base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n };\r\n /**\r\n * Determine if the token's max_age has transpired\r\n */\r\n AuthToken.checkMaxAge = function (authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n var fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if ((maxAge === 0) || ((Date.now() - fiveMinuteSkew) > (authTime + maxAge))) {\r\n throw ClientAuthError.createMaxAgeTranspiredError();\r\n }\r\n };\r\n return AuthToken;\r\n}());\n\nexport { AuthToken };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-common\";\r\nvar version = \"13.3.1\";\n\nexport { name, version };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator, __assign, __extends } from '../_virtual/_tslib.js';\nimport { Separators, CredentialType, AuthenticationScheme, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.js';\nimport { ScopeSet } from '../request/ScopeSet.js';\nimport { AccountEntity } from './entities/AccountEntity.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { name, version } from '../packageMetadata.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nvar CacheManager = /** @class */ (function () {\r\n function CacheManager(clientId, cryptoImpl, logger) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name, version);\r\n }\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n CacheManager.prototype.getAllAccounts = function () {\r\n var _this = this;\r\n var allAccountKeys = this.getAccountKeys();\r\n if (allAccountKeys.length < 1) {\r\n return [];\r\n }\r\n var accountEntities = allAccountKeys.reduce(function (accounts, key) {\r\n var entity = _this.getAccount(key);\r\n if (!entity) {\r\n return accounts;\r\n }\r\n accounts.push(entity);\r\n return accounts;\r\n }, []);\r\n if (accountEntities.length < 1) {\r\n return [];\r\n }\r\n else {\r\n var allAccounts = accountEntities.map(function (accountEntity) {\r\n return _this.getAccountInfoFromEntity(accountEntity);\r\n });\r\n return allAccounts;\r\n }\r\n };\r\n /**\r\n * Gets accountInfo object based on provided filters\r\n */\r\n CacheManager.prototype.getAccountInfoFilteredBy = function (accountFilter) {\r\n var allAccounts = this.getAccountsFilteredBy(accountFilter);\r\n if (allAccounts.length > 0) {\r\n return this.getAccountInfoFromEntity(allAccounts[0]);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n CacheManager.prototype.getAccountInfoFromEntity = function (accountEntity) {\r\n var accountInfo = accountEntity.getAccountInfo();\r\n var idToken = this.getIdToken(accountInfo);\r\n if (idToken) {\r\n accountInfo.idToken = idToken.secret;\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\r\n }\r\n return accountInfo;\r\n };\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n CacheManager.prototype.saveCacheRecord = function (cacheRecord) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n if (!!!cacheRecord.accessToken) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.saveAccessToken(cacheRecord.accessToken)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n CacheManager.prototype.saveAccessToken = function (credential) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var accessTokenFilter, tokenKeys, currentScopes, removedAccessTokens;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n accessTokenFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash\r\n };\r\n tokenKeys = this.getTokenKeys();\r\n currentScopes = ScopeSet.fromString(credential.target);\r\n removedAccessTokens = [];\r\n tokenKeys.accessToken.forEach(function (key) {\r\n if (!_this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n var tokenEntity = _this.getAccessTokenCredential(key);\r\n if (tokenEntity && _this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n var tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens.push(_this.removeAccessToken(key));\r\n }\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccessTokens)];\r\n case 1:\r\n _a.sent();\r\n this.setAccessTokenCredential(credential);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredBy = function (accountFilter) {\r\n var _this = this;\r\n var allAccountKeys = this.getAccountKeys();\r\n var matchingAccounts = [];\r\n allAccountKeys.forEach(function (cacheKey) {\r\n if (!_this.isAccountKey(cacheKey, accountFilter.homeAccountId, accountFilter.realm)) {\r\n // Don't parse value if the key doesn't match the account filters\r\n return;\r\n }\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!accountFilter.homeAccountId && !_this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.localAccountId && !_this.matchLocalAccountId(entity, accountFilter.localAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.username && !_this.matchUsername(entity, accountFilter.username)) {\r\n return;\r\n }\r\n if (!!accountFilter.environment && !_this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n if (!!accountFilter.realm && !_this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n if (!!accountFilter.nativeAccountId && !_this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n matchingAccounts.push(entity);\r\n });\r\n return matchingAccounts;\r\n };\r\n /**\r\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\r\n * @param key\r\n * @param homeAccountId\r\n * @param tenantId\r\n * @returns\r\n */\r\n CacheManager.prototype.isAccountKey = function (key, homeAccountId, tenantId) {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\r\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n if (homeAccountId && !key.toLowerCase().includes(homeAccountId.toLowerCase())) {\r\n return false;\r\n }\r\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\r\n return false;\r\n }\r\n // Do not check environment as aliasing can cause false negatives\r\n return true;\r\n };\r\n /**\r\n * Returns true if the given key matches our credential key schema.\r\n * @param key\r\n */\r\n CacheManager.prototype.isCredentialKey = function (key) {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\r\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n var lowerCaseKey = key.toLowerCase();\r\n // Credential keys must indicate what credential type they represent\r\n if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > -1) {\r\n // Refresh tokens must contain the client id or family id\r\n var clientIdValidation = \"\" + CredentialType.REFRESH_TOKEN + Separators.CACHE_KEY_SEPARATOR + this.clientId + Separators.CACHE_KEY_SEPARATOR;\r\n var familyIdValidation = \"\" + CredentialType.REFRESH_TOKEN + Separators.CACHE_KEY_SEPARATOR + THE_FAMILY_ID + Separators.CACHE_KEY_SEPARATOR;\r\n if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n }\r\n else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\r\n // Tokens must contain the clientId\r\n return false;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity\r\n * @param filter\r\n * @returns\r\n */\r\n CacheManager.prototype.credentialMatchesFilter = function (entity, filter) {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n if (!!filter.userAssertionHash && !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if ((typeof filter.homeAccountId === \"string\") && !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n if (!!filter.environment && !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n if (!!filter.credentialType && !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!filter.tokenType && !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredBy = function (filter) {\r\n return this.getAppMetadataFilteredByInternal(filter.environment, filter.clientId);\r\n };\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredByInternal = function (environment, clientId) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAppMetadata = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!_this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n };\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAuthorityMetadataByAlias = function (host) {\r\n var _this = this;\r\n var allCacheKeys = this.getAuthorityMetadataKeys();\r\n var matchedEntity = null;\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!_this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(_this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n };\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n CacheManager.prototype.removeAllAccounts = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allAccountKeys, removedAccounts;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n allAccountKeys = this.getAccountKeys();\r\n removedAccounts = [];\r\n allAccountKeys.forEach(function (cacheKey) {\r\n removedAccounts.push(_this.removeAccount(cacheKey));\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccounts)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccount = function (accountKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var account;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n return [4 /*yield*/, this.removeAccountContext(account)];\r\n case 1:\r\n _a.sent();\r\n this.removeItem(accountKey);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccountContext = function (account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allTokenKeys, accountId, removedCredentials;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n allTokenKeys = this.getTokenKeys();\r\n accountId = account.generateAccountId();\r\n removedCredentials = [];\r\n allTokenKeys.idToken.forEach(function (key) {\r\n if (key.indexOf(accountId) === 0) {\r\n _this.removeIdToken(key);\r\n }\r\n });\r\n allTokenKeys.accessToken.forEach(function (key) {\r\n if (key.indexOf(accountId) === 0) {\r\n removedCredentials.push(_this.removeAccessToken(key));\r\n }\r\n });\r\n allTokenKeys.refreshToken.forEach(function (key) {\r\n if (key.indexOf(accountId) === 0) {\r\n _this.removeRefreshToken(key);\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedCredentials)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n CacheManager.prototype.removeAccessToken = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var credential, accessTokenWithAuthSchemeEntity, kid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n credential = this.getAccessTokenCredential(key);\r\n if (!credential) {\r\n return [2 /*return*/];\r\n }\r\n if (!(credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())) return [3 /*break*/, 4];\r\n if (!(credential.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 4];\r\n accessTokenWithAuthSchemeEntity = credential;\r\n kid = accessTokenWithAuthSchemeEntity.keyId;\r\n if (!kid) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.cryptoImpl.removeTokenBindingKey(kid)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n throw ClientAuthError.createBindingKeyNotRemovedError();\r\n case 4: return [2 /*return*/, this.removeItem(key)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n CacheManager.prototype.removeAppMetadata = function () {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach(function (cacheKey) {\r\n if (_this.isAppMetadata(cacheKey)) {\r\n _this.removeItem(cacheKey);\r\n }\r\n });\r\n return true;\r\n };\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n * @param authScheme\r\n */\r\n CacheManager.prototype.readCacheRecord = function (account, request, environment) {\r\n var tokenKeys = this.getTokenKeys();\r\n var cachedAccount = this.readAccountFromCache(account);\r\n var cachedIdToken = this.getIdToken(account, tokenKeys);\r\n var cachedAccessToken = this.getAccessToken(account, request, tokenKeys);\r\n var cachedRefreshToken = this.getRefreshToken(account, false, tokenKeys);\r\n var cachedAppMetadata = this.readAppMetadataFromCache(environment);\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n };\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n CacheManager.prototype.readAccountFromCache = function (account) {\r\n var accountKey = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n };\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n CacheManager.prototype.getIdToken = function (account, tokenKeys) {\r\n var _this = this;\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n var idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: account.tenantId,\r\n };\r\n var idTokens = this.getIdTokensByFilter(idTokenFilter, tokenKeys);\r\n var numIdTokens = idTokens.length;\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple id tokens found, clearing them\");\r\n idTokens.forEach(function (idToken) {\r\n _this.removeIdToken(idToken.generateCredentialKey());\r\n });\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning id token\");\r\n return idTokens[0];\r\n };\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter\r\n * @returns\r\n */\r\n CacheManager.prototype.getIdTokensByFilter = function (filter, tokenKeys) {\r\n var _this = this;\r\n var idTokenKeys = tokenKeys && tokenKeys.idToken || this.getTokenKeys().idToken;\r\n var idTokens = [];\r\n idTokenKeys.forEach(function (key) {\r\n if (!_this.idTokenKeyMatchesFilter(key, __assign({ clientId: _this.clientId }, filter))) {\r\n return;\r\n }\r\n var idToken = _this.getIdTokenCredential(key);\r\n if (idToken && _this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.push(idToken);\r\n }\r\n });\r\n return idTokens;\r\n };\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @returns\r\n */\r\n CacheManager.prototype.idTokenKeyMatchesFilter = function (inputKey, filter) {\r\n var key = inputKey.toLowerCase();\r\n if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Removes idToken from the cache\r\n * @param key\r\n */\r\n CacheManager.prototype.removeIdToken = function (key) {\r\n this.removeItem(key);\r\n };\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key\r\n */\r\n CacheManager.prototype.removeRefreshToken = function (key) {\r\n this.removeItem(key);\r\n };\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param authScheme\r\n */\r\n CacheManager.prototype.getAccessToken = function (account, request, tokenKeys) {\r\n var _this = this;\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\");\r\n var scopes = ScopeSet.createSearchScopes(request.scopes);\r\n var authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n var credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\r\n var accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n var accessTokenKeys = tokenKeys && tokenKeys.accessToken || this.getTokenKeys().accessToken;\r\n var accessTokens = [];\r\n accessTokenKeys.forEach(function (key) {\r\n // Validate key\r\n if (_this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n var accessToken = _this.getAccessTokenCredential(key);\r\n // Validate value\r\n if (accessToken && _this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n var numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\");\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\");\r\n accessTokens.forEach(function (accessToken) {\r\n _this.removeAccessToken(accessToken.generateCredentialKey());\r\n });\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\");\r\n return accessTokens[0];\r\n };\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @param keyMustContainAllScopes\r\n * @returns\r\n */\r\n CacheManager.prototype.accessTokenKeyMatchesFilter = function (inputKey, filter, keyMustContainAllScopes) {\r\n var key = inputKey.toLowerCase();\r\n if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.requestedClaimsHash && key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.target) {\r\n var scopes = filter.target.asArray();\r\n for (var i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes && !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n }\r\n else if (!keyMustContainAllScopes && key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter\r\n * @returns\r\n */\r\n CacheManager.prototype.getAccessTokensByFilter = function (filter) {\r\n var _this = this;\r\n var tokenKeys = this.getTokenKeys();\r\n var accessTokens = [];\r\n tokenKeys.accessToken.forEach(function (key) {\r\n if (!_this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n var accessToken = _this.getAccessTokenCredential(key);\r\n if (accessToken && _this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n return accessTokens;\r\n };\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n CacheManager.prototype.getRefreshToken = function (account, familyRT, tokenKeys) {\r\n var _this = this;\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n var id = familyRT ? THE_FAMILY_ID : undefined;\r\n var refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n var refreshTokenKeys = tokenKeys && tokenKeys.refreshToken || this.getTokenKeys().refreshToken;\r\n var refreshTokens = [];\r\n refreshTokenKeys.forEach(function (key) {\r\n // Validate key\r\n if (_this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n var refreshToken = _this.getRefreshTokenCredential(key);\r\n // Validate value\r\n if (refreshToken && _this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n var numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0];\r\n };\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n CacheManager.prototype.refreshTokenKeyMatchesFilter = function (inputKey, filter) {\r\n var key = inputKey.toLowerCase();\r\n if (filter.familyId && key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId && filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n CacheManager.prototype.readAppMetadataFromCache = function (environment) {\r\n var appMetadataFilter = {\r\n environment: environment,\r\n clientId: this.clientId,\r\n };\r\n var appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n var appMetadataEntries = Object.keys(appMetadata).map(function (key) { return appMetadata[key]; });\r\n var numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n return appMetadataEntries[0];\r\n };\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.isAppMetadataFOCI = function (environment) {\r\n var appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n };\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n CacheManager.prototype.matchHomeAccountId = function (entity, homeAccountId) {\r\n return !!((typeof entity.homeAccountId === \"string\") && (homeAccountId === entity.homeAccountId));\r\n };\r\n /**\r\n * helper to match account ids\r\n * @param entity\r\n * @param localAccountId\r\n * @returns\r\n */\r\n CacheManager.prototype.matchLocalAccountId = function (entity, localAccountId) {\r\n return !!((typeof entity.localAccountId === \"string\") && (localAccountId === entity.localAccountId));\r\n };\r\n /**\r\n * helper to match usernames\r\n * @param entity\r\n * @param username\r\n * @returns\r\n */\r\n CacheManager.prototype.matchUsername = function (entity, username) {\r\n return !!((typeof entity.username === \"string\") && (username.toLowerCase() === entity.username.toLowerCase()));\r\n };\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n CacheManager.prototype.matchUserAssertionHash = function (entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\r\n };\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n CacheManager.prototype.matchEnvironment = function (entity, environment) {\r\n var cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n CacheManager.prototype.matchCredentialType = function (entity, credentialType) {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n };\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n CacheManager.prototype.matchClientId = function (entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n };\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n CacheManager.prototype.matchFamilyId = function (entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n };\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n CacheManager.prototype.matchRealm = function (entity, realm) {\r\n return !!(entity.realm && realm === entity.realm);\r\n };\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n CacheManager.prototype.matchNativeAccountId = function (entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n };\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n CacheManager.prototype.matchTarget = function (entity, target) {\r\n var isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n var entityScopeSet = ScopeSet.fromString(entity.target);\r\n return entityScopeSet.containsScopeSet(target);\r\n };\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.matchTokenType = function (entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n };\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.matchKeyId = function (entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n };\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAppMetadata = function (key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n };\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAuthorityMetadata = function (key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n };\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n CacheManager.prototype.generateAuthorityMetadataCacheKey = function (authority) {\r\n return AUTHORITY_METADATA_CONSTANTS.CACHE_KEY + \"-\" + this.clientId + \"-\" + authority;\r\n };\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n CacheManager.toObject = function (obj, json) {\r\n for (var propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n };\r\n return CacheManager;\r\n}());\r\nvar DefaultStorageClass = /** @class */ (function (_super) {\r\n __extends(DefaultStorageClass, _super);\r\n function DefaultStorageClass() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultStorageClass.prototype.setAccount = function () {\r\n var notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccount = function () {\r\n var notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAppMetadata = function () {\r\n var notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAppMetadata = function () {\r\n var notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadataKeys = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.removeItem = function () {\r\n var notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.containsKey = function () {\r\n var notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getKeys = function () {\r\n var notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccountKeys = function () {\r\n var notImplErr = \"Storage interface - getAccountKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getTokenKeys = function () {\r\n var notImplErr = \"Storage interface - getTokenKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n };\r\n DefaultStorageClass.prototype.updateCredentialCacheKey = function () {\r\n var notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n return DefaultStorageClass;\r\n}(CacheManager));\n\nexport { CacheManager, DefaultStorageClass };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nvar TimeUtils = /** @class */ (function () {\r\n function TimeUtils() {\r\n }\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n TimeUtils.nowSeconds = function () {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n };\r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n TimeUtils.isTokenExpired = function (expiresOn, offset) {\r\n // check for access token expiry\r\n var expirationSec = Number(expiresOn) || 0;\r\n var offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n };\r\n /**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\n TimeUtils.wasClockTurnedBack = function (cachedAt) {\r\n var cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\n TimeUtils.delay = function (t, value) {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });\r\n };\r\n return TimeUtils;\r\n}());\n\nexport { TimeUtils };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType, AuthenticationScheme } from '../../utils/Constants.js';\nimport { TimeUtils } from '../../utils/TimeUtils.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\nimport { AuthToken } from '../../account/AuthToken.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nvar AccessTokenEntity = /** @class */ (function (_super) {\r\n __extends(AccessTokenEntity, _super);\r\n function AccessTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n AccessTokenEntity.createAccessTokenEntity = function (homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, cryptoUtils, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n var _a, _b;\r\n var atEntity = new AccessTokenEntity();\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n var currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n /*\r\n * Token expiry time.\r\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.userAssertionHash = userAssertionHash;\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (((_a = atEntity.tokenType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n var tokenClaims = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\r\n if (!((_b = tokenClaims === null || tokenClaims === void 0 ? void 0 : tokenClaims.cnf) === null || _b === void 0 ? void 0 : _b.kid)) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccessTokenEntity.isAccessTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n };\r\n return AccessTokenEntity;\r\n}(CredentialEntity));\n\nexport { AccessTokenEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nvar RefreshTokenEntity = /** @class */ (function (_super) {\r\n __extends(RefreshTokenEntity, _super);\r\n function RefreshTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n RefreshTokenEntity.createRefreshTokenEntity = function (homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash) {\r\n var rtEntity = new RefreshTokenEntity();\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n return rtEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n RefreshTokenEntity.isRefreshTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n };\r\n return RefreshTokenEntity;\r\n}(CredentialEntity));\n\nexport { RefreshTokenEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { Separators, APP_METADATA } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata--\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nvar AppMetadataEntity = /** @class */ (function () {\r\n function AppMetadataEntity() {\r\n }\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\n AppMetadataEntity.prototype.generateAppMetadataKey = function () {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n };\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n AppMetadataEntity.generateAppMetadataCacheKey = function (environment, clientId) {\r\n var appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n AppMetadataEntity.createAppMetadataEntity = function (clientId, environment, familyId) {\r\n var appMetadata = new AppMetadataEntity();\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n return appMetadata;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AppMetadataEntity.isAppMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n };\r\n return AppMetadataEntity;\r\n}());\n\nexport { AppMetadataEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { SERVER_TELEM_CONSTANTS } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryEntity = /** @class */ (function () {\r\n function ServerTelemetryEntity() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n ServerTelemetryEntity.isServerTelemetryEntity = function (key, entity) {\r\n var validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ServerTelemetryEntity;\r\n}());\n\nexport { ServerTelemetryEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.js';\nimport { TimeUtils } from '../../utils/TimeUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityMetadataEntity = /** @class */ (function () {\r\n function AuthorityMetadataEntity() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateCloudDiscoveryMetadata = function (metadata, fromNetwork) {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n };\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateEndpointMetadata = function (metadata, fromNetwork) {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n this.jwks_uri = metadata.jwks_uri;\r\n };\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority\r\n */\r\n AuthorityMetadataEntity.prototype.updateCanonicalAuthority = function (authority) {\r\n this.canonical_authority = authority;\r\n };\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n AuthorityMetadataEntity.prototype.resetExpiresAt = function () {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n };\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n AuthorityMetadataEntity.prototype.isExpired = function () {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AuthorityMetadataEntity.isAuthorityMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n };\r\n return AuthorityMetadataEntity;\r\n}());\n\nexport { AuthorityMetadataEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { ThrottlingConstants } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingEntity = /** @class */ (function () {\r\n function ThrottlingEntity() {\r\n }\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n ThrottlingEntity.isThrottlingEntity = function (key, entity) {\r\n var validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ThrottlingEntity;\r\n}());\n\nexport { ThrottlingEntity };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { StringUtils } from './StringUtils.js';\nimport { Constants } from './Constants.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nvar ProtocolUtils = /** @class */ (function () {\r\n function ProtocolUtils() {\r\n }\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n ProtocolUtils.setRequestState = function (cryptoObj, userState, meta) {\r\n var libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? \"\" + libraryState + Constants.RESOURCE_DELIM + userState : libraryState;\r\n };\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.generateLibraryState = function (cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n var stateObj = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n var stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n };\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.parseRequestState = function (cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n var splitState = state.split(Constants.RESOURCE_DELIM);\r\n var libraryState = splitState[0];\r\n var userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\r\n var libraryStateString = cryptoObj.base64Decode(libraryState);\r\n var libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj\r\n };\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n return ProtocolUtils;\r\n}());\n\nexport { ProtocolUtils };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CcsCredentialType;\r\n(function (CcsCredentialType) {\r\n CcsCredentialType[\"HOME_ACCOUNT_ID\"] = \"home_account_id\";\r\n CcsCredentialType[\"UPN\"] = \"UPN\";\r\n})(CcsCredentialType || (CcsCredentialType = {}));\n\nexport { CcsCredentialType };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { BrowserCacheLocation } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserStorage = /** @class */ (function () {\r\n function BrowserStorage(cacheLocation) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n BrowserStorage.prototype.validateWindowStorage = function (cacheLocation) {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n var storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n };\r\n BrowserStorage.prototype.getItem = function (key) {\r\n return this.windowStorage.getItem(key);\r\n };\r\n BrowserStorage.prototype.setItem = function (key, value) {\r\n this.windowStorage.setItem(key, value);\r\n };\r\n BrowserStorage.prototype.removeItem = function (key) {\r\n this.windowStorage.removeItem(key);\r\n };\r\n BrowserStorage.prototype.getKeys = function () {\r\n return Object.keys(this.windowStorage);\r\n };\r\n BrowserStorage.prototype.containsKey = function (key) {\r\n return this.windowStorage.hasOwnProperty(key);\r\n };\r\n return BrowserStorage;\r\n}());\n\nexport { BrowserStorage };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { StringUtils, ProtocolUtils, ClientAuthError, UrlString } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserProtocolUtils = /** @class */ (function () {\r\n function BrowserProtocolUtils() {\r\n }\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto\r\n * @param state\r\n */\r\n BrowserProtocolUtils.extractBrowserRequestState = function (browserCrypto, state) {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n try {\r\n var requestStateObj = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta;\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n BrowserProtocolUtils.parseServerResponseFromHash = function (locationHash) {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n var hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n };\r\n return BrowserProtocolUtils;\r\n}());\n\nexport { BrowserProtocolUtils };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __spread } from '../_virtual/_tslib.js';\nimport { CredentialType, RefreshTokenEntity, CacheManager, AccessTokenEntity, IdTokenEntity, AccountEntity, ClientAuthError, AppMetadataEntity, ServerTelemetryEntity, AuthorityMetadataEntity, Constants, PersistentCacheKeys, ThrottlingEntity, StringUtils, ProtocolUtils, CcsCredentialType, IdToken, DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserCacheLocation, StaticCacheKeys, InMemoryCacheKeys, TemporaryCacheKeys } from '../utils/BrowserConstants.js';\nimport { BrowserStorage } from './BrowserStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nvar BrowserCacheManager = /** @class */ (function (_super) {\r\n __extends(BrowserCacheManager, _super);\r\n function BrowserCacheManager(clientId, cacheConfig, cryptoImpl, logger) {\r\n var _this = _super.call(this, clientId, cryptoImpl, logger) || this;\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n _this.COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n _this.cacheConfig = cacheConfig;\r\n _this.logger = logger;\r\n _this.internalStorage = new MemoryStorage();\r\n _this.browserStorage = _this.setupBrowserStorage(_this.cacheConfig.cacheLocation);\r\n _this.temporaryCacheStorage = _this.setupTemporaryCacheStorage(_this.cacheConfig.temporaryCacheLocation, _this.cacheConfig.cacheLocation);\r\n // Migrate cache entries from older versions of MSAL.\r\n if (cacheConfig.cacheMigrationEnabled) {\r\n _this.migrateCacheEntries();\r\n _this.createKeyMaps();\r\n }\r\n return _this;\r\n }\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupBrowserStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n return new BrowserStorage(cacheLocation);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n };\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured temporaryCacheLocation.\r\n * @param temporaryCacheLocation\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupTemporaryCacheStorage = function (temporaryCacheLocation, cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n /*\r\n * When users do not explicitly choose their own temporaryCacheLocation,\r\n * temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n */\r\n return new BrowserStorage(temporaryCacheLocation || BrowserCacheLocation.SessionStorage);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n };\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntries = function () {\r\n var _this = this;\r\n var idTokenKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ID_TOKEN;\r\n var clientInfoKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.CLIENT_INFO;\r\n var errorKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR;\r\n var errorDescKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR_DESC;\r\n var idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n var clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n var errorValue = this.browserStorage.getItem(errorKey);\r\n var errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n var values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n var keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n keysToMigrate.forEach(function (cacheKey, index) { return _this.migrateCacheEntry(cacheKey, values[index]); });\r\n };\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntry = function (newKey, value) {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n };\r\n /**\r\n * Searches all cache entries for MSAL accounts and creates the account key map\r\n * This is used to migrate users from older versions of MSAL which did not create the map.\r\n * @returns\r\n */\r\n BrowserCacheManager.prototype.createKeyMaps = function () {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager - createKeyMaps called.\");\r\n var accountKeys = this.getItem(StaticCacheKeys.ACCOUNT_KEYS);\r\n var tokenKeys = this.getItem(StaticCacheKeys.TOKEN_KEYS + \".\" + this.clientId);\r\n if (accountKeys && tokenKeys) {\r\n this.logger.verbose(\"BrowserCacheManager:createKeyMaps - account and token key maps already exist, skipping migration.\");\r\n // Key maps already exist, no need to iterate through cache\r\n return;\r\n }\r\n var allKeys = this.browserStorage.getKeys();\r\n allKeys.forEach(function (key) {\r\n if (_this.isCredentialKey(key)) {\r\n // Get item, parse, validate and write key to map\r\n var value = _this.getItem(key);\r\n if (value) {\r\n var credObj = _this.validateAndParseJson(value);\r\n if (credObj && credObj.hasOwnProperty(\"credentialType\")) {\r\n switch (credObj[\"credentialType\"]) {\r\n case CredentialType.ID_TOKEN:\r\n if (IdTokenEntity.isIdTokenEntity(credObj)) {\r\n _this.logger.trace(\"BrowserCacheManager:createKeyMaps - idToken found, saving key to token key map\");\r\n _this.logger.tracePii(\"BrowserCacheManager:createKeyMaps - idToken with key: \" + key + \" found, saving key to token key map\");\r\n var idTokenEntity = CacheManager.toObject(new IdTokenEntity(), credObj);\r\n var newKey = _this.updateCredentialCacheKey(key, idTokenEntity);\r\n _this.addTokenKey(newKey, CredentialType.ID_TOKEN);\r\n return;\r\n }\r\n else {\r\n _this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching idToken schema with value containing idToken credentialType field but value failed IdTokenEntity validation, skipping.\");\r\n _this.logger.tracePii(\"BrowserCacheManager:createKeyMaps - failed idToken validation on key: \" + key);\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n if (AccessTokenEntity.isAccessTokenEntity(credObj)) {\r\n _this.logger.trace(\"BrowserCacheManager:createKeyMaps - accessToken found, saving key to token key map\");\r\n _this.logger.tracePii(\"BrowserCacheManager:createKeyMaps - accessToken with key: \" + key + \" found, saving key to token key map\");\r\n var accessTokenEntity = CacheManager.toObject(new AccessTokenEntity(), credObj);\r\n var newKey = _this.updateCredentialCacheKey(key, accessTokenEntity);\r\n _this.addTokenKey(newKey, CredentialType.ACCESS_TOKEN);\r\n return;\r\n }\r\n else {\r\n _this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching accessToken schema with value containing accessToken credentialType field but value failed AccessTokenEntity validation, skipping.\");\r\n _this.logger.tracePii(\"BrowserCacheManager:createKeyMaps - failed accessToken validation on key: \" + key);\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n if (RefreshTokenEntity.isRefreshTokenEntity(credObj)) {\r\n _this.logger.trace(\"BrowserCacheManager:createKeyMaps - refreshToken found, saving key to token key map\");\r\n _this.logger.tracePii(\"BrowserCacheManager:createKeyMaps - refreshToken with key: \" + key + \" found, saving key to token key map\");\r\n var refreshTokenEntity = CacheManager.toObject(new RefreshTokenEntity(), credObj);\r\n var newKey = _this.updateCredentialCacheKey(key, refreshTokenEntity);\r\n _this.addTokenKey(newKey, CredentialType.REFRESH_TOKEN);\r\n return;\r\n }\r\n else {\r\n _this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching refreshToken schema with value containing refreshToken credentialType field but value failed RefreshTokenEntity validation, skipping.\");\r\n _this.logger.tracePii(\"BrowserCacheManager:createKeyMaps - failed refreshToken validation on key: \" + key);\r\n }\r\n break;\r\n // If credentialType isn't one of our predefined ones, it may not be an MSAL cache value. Ignore.\r\n }\r\n }\r\n }\r\n }\r\n if (_this.isAccountKey(key)) {\r\n var value = _this.getItem(key);\r\n if (value) {\r\n var accountObj = _this.validateAndParseJson(value);\r\n if (accountObj && AccountEntity.isAccountEntity(accountObj)) {\r\n _this.logger.trace(\"BrowserCacheManager:createKeyMaps - account found, saving key to account key map\");\r\n _this.logger.tracePii(\"BrowserCacheManager:createKeyMaps - account with key: \" + key + \" found, saving key to account key map\");\r\n _this.addAccountKeyToMap(key);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n BrowserCacheManager.prototype.validateAndParseJson = function (jsonValue) {\r\n try {\r\n var parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getItem = function (key) {\r\n return this.browserStorage.getItem(key);\r\n };\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setItem = function (key, value) {\r\n this.browserStorage.setItem(key, value);\r\n };\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n BrowserCacheManager.prototype.getAccount = function (accountKey) {\r\n this.logger.trace(\"BrowserCacheManager.getAccount called\");\r\n var account = this.getItem(accountKey);\r\n if (!account) {\r\n this.removeAccountKeyFromMap(accountKey);\r\n return null;\r\n }\r\n var parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n this.removeAccountKeyFromMap(accountKey);\r\n return null;\r\n }\r\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\r\n };\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setAccount = function (account) {\r\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\r\n var key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n this.addAccountKeyToMap(key);\r\n };\r\n /**\r\n * Returns the array of account keys currently cached\r\n * @returns\r\n */\r\n BrowserCacheManager.prototype.getAccountKeys = function () {\r\n this.logger.trace(\"BrowserCacheManager.getAccountKeys called\");\r\n var accountKeys = this.getItem(StaticCacheKeys.ACCOUNT_KEYS);\r\n if (accountKeys) {\r\n return JSON.parse(accountKeys);\r\n }\r\n this.logger.verbose(\"BrowserCacheManager.getAccountKeys - No account keys found\");\r\n return [];\r\n };\r\n /**\r\n * Add a new account to the key map\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.addAccountKeyToMap = function (key) {\r\n this.logger.trace(\"BrowserCacheManager.addAccountKeyToMap called\");\r\n this.logger.tracePii(\"BrowserCacheManager.addAccountKeyToMap called with key: \" + key);\r\n var accountKeys = this.getAccountKeys();\r\n if (accountKeys.indexOf(key) === -1) {\r\n // Only add key if it does not already exist in the map\r\n accountKeys.push(key);\r\n this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys));\r\n this.logger.verbose(\"BrowserCacheManager.addAccountKeyToMap account key added\");\r\n }\r\n else {\r\n this.logger.verbose(\"BrowserCacheManager.addAccountKeyToMap account key already exists in map\");\r\n }\r\n };\r\n /**\r\n * Remove an account from the key map\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeAccountKeyFromMap = function (key) {\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap called\");\r\n this.logger.tracePii(\"BrowserCacheManager.removeAccountKeyFromMap called with key: \" + key);\r\n var accountKeys = this.getAccountKeys();\r\n var removalIndex = accountKeys.indexOf(key);\r\n if (removalIndex > -1) {\r\n accountKeys.splice(removalIndex, 1);\r\n this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys));\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap account key removed\");\r\n }\r\n else {\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap key not found in existing map\");\r\n }\r\n };\r\n /**\r\n * Extends inherited removeAccount function to include removal of the account key from the map\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeAccount = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n _super.prototype.removeAccount.call(this, key);\r\n this.removeAccountKeyFromMap(key);\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Removes given idToken from the cache and from the key map\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeIdToken = function (key) {\r\n _super.prototype.removeIdToken.call(this, key);\r\n this.removeTokenKey(key, CredentialType.ID_TOKEN);\r\n };\r\n /**\r\n * Removes given accessToken from the cache and from the key map\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeAccessToken = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n _super.prototype.removeAccessToken.call(this, key);\r\n this.removeTokenKey(key, CredentialType.ACCESS_TOKEN);\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Removes given refreshToken from the cache and from the key map\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeRefreshToken = function (key) {\r\n _super.prototype.removeRefreshToken.call(this, key);\r\n this.removeTokenKey(key, CredentialType.REFRESH_TOKEN);\r\n };\r\n /**\r\n * Gets the keys for the cached tokens associated with this clientId\r\n * @returns\r\n */\r\n BrowserCacheManager.prototype.getTokenKeys = function () {\r\n this.logger.trace(\"BrowserCacheManager.getTokenKeys called\");\r\n var item = this.getItem(StaticCacheKeys.TOKEN_KEYS + \".\" + this.clientId);\r\n if (item) {\r\n var tokenKeys = this.validateAndParseJson(item);\r\n if (tokenKeys &&\r\n tokenKeys.hasOwnProperty(\"idToken\") &&\r\n tokenKeys.hasOwnProperty(\"accessToken\") &&\r\n tokenKeys.hasOwnProperty(\"refreshToken\")) {\r\n return tokenKeys;\r\n }\r\n else {\r\n this.logger.error(\"BrowserCacheManager.getTokenKeys - Token keys found but in an unknown format. Returning empty key map.\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"BrowserCacheManager.getTokenKeys - No token keys found\");\r\n }\r\n return {\r\n idToken: [],\r\n accessToken: [],\r\n refreshToken: []\r\n };\r\n };\r\n /**\r\n * Adds the given key to the token key map\r\n * @param key\r\n * @param type\r\n */\r\n BrowserCacheManager.prototype.addTokenKey = function (key, type) {\r\n this.logger.trace(\"BrowserCacheManager addTokenKey called\");\r\n var tokenKeys = this.getTokenKeys();\r\n switch (type) {\r\n case CredentialType.ID_TOKEN:\r\n if (tokenKeys.idToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - idToken added to map\");\r\n tokenKeys.idToken.push(key);\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n if (tokenKeys.accessToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - accessToken added to map\");\r\n tokenKeys.accessToken.push(key);\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n if (tokenKeys.refreshToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - refreshToken added to map\");\r\n tokenKeys.refreshToken.push(key);\r\n }\r\n break;\r\n default:\r\n this.logger.error(\"BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: \" + type);\r\n ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n this.setItem(StaticCacheKeys.TOKEN_KEYS + \".\" + this.clientId, JSON.stringify(tokenKeys));\r\n };\r\n /**\r\n * Removes the given key from the token key map\r\n * @param key\r\n * @param type\r\n */\r\n BrowserCacheManager.prototype.removeTokenKey = function (key, type) {\r\n this.logger.trace(\"BrowserCacheManager removeTokenKey called\");\r\n var tokenKeys = this.getTokenKeys();\r\n switch (type) {\r\n case CredentialType.ID_TOKEN:\r\n this.logger.infoPii(\"BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: \" + key + \" from map\");\r\n var idRemoval = tokenKeys.idToken.indexOf(key);\r\n if (idRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - idToken removed from map\");\r\n tokenKeys.idToken.splice(idRemoval, 1);\r\n }\r\n else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n this.logger.infoPii(\"BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: \" + key + \" from map\");\r\n var accessRemoval = tokenKeys.accessToken.indexOf(key);\r\n if (accessRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - accessToken removed from map\");\r\n tokenKeys.accessToken.splice(accessRemoval, 1);\r\n }\r\n else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n this.logger.infoPii(\"BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: \" + key + \" from map\");\r\n var refreshRemoval = tokenKeys.refreshToken.indexOf(key);\r\n if (refreshRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - refreshToken removed from map\");\r\n tokenKeys.refreshToken.splice(refreshRemoval, 1);\r\n }\r\n else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n default:\r\n this.logger.error(\"BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: \" + type);\r\n ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n this.setItem(StaticCacheKeys.TOKEN_KEYS + \".\" + this.clientId, JSON.stringify(tokenKeys));\r\n };\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n BrowserCacheManager.prototype.getIdTokenCredential = function (idTokenKey) {\r\n var value = this.getItem(idTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n return null;\r\n }\r\n var parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n };\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n BrowserCacheManager.prototype.setIdTokenCredential = function (idToken) {\r\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\r\n var idTokenKey = idToken.generateCredentialKey();\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n this.addTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n };\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getAccessTokenCredential = function (accessTokenKey) {\r\n var value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n return null;\r\n }\r\n var parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n };\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n BrowserCacheManager.prototype.setAccessTokenCredential = function (accessToken) {\r\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n var accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n this.addTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n };\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n BrowserCacheManager.prototype.getRefreshTokenCredential = function (refreshTokenKey) {\r\n var value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n return null;\r\n }\r\n var parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n };\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n BrowserCacheManager.prototype.setRefreshTokenCredential = function (refreshToken) {\r\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n var refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n this.addTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n };\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n BrowserCacheManager.prototype.getAppMetadata = function (appMetadataKey) {\r\n var value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n BrowserCacheManager.prototype.setAppMetadata = function (appMetadata) {\r\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\r\n var appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n };\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n BrowserCacheManager.prototype.getServerTelemetry = function (serverTelemetryKey) {\r\n var value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n BrowserCacheManager.prototype.setServerTelemetry = function (serverTelemetryKey, serverTelemetry) {\r\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadata = function (key) {\r\n var value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadataKeys = function () {\r\n var _this = this;\r\n var allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter(function (key) {\r\n return _this.isAuthorityMetadata(key);\r\n });\r\n };\r\n /**\r\n * Sets wrapper metadata in memory\r\n * @param wrapperSKU\r\n * @param wrapperVersion\r\n */\r\n BrowserCacheManager.prototype.setWrapperMetadata = function (wrapperSKU, wrapperVersion) {\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\r\n };\r\n /**\r\n * Returns wrapper metadata from in-memory storage\r\n */\r\n BrowserCacheManager.prototype.getWrapperMetadata = function () {\r\n var sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || Constants.EMPTY_STRING;\r\n var version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\r\n return [sku, version];\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n BrowserCacheManager.prototype.setAuthorityMetadata = function (key, entity) {\r\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n };\r\n /**\r\n * Gets the active account\r\n */\r\n BrowserCacheManager.prototype.getActiveAccount = function () {\r\n var activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\r\n var activeAccountValueFilters = this.getItem(activeAccountKeyFilters);\r\n if (!activeAccountValueFilters) {\r\n // if new active account cache type isn't found, it's an old version, so look for that instead\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account filters cache schema found, looking for legacy schema\");\r\n var activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n var activeAccountValueLocal = this.getItem(activeAccountKeyLocal);\r\n if (!activeAccountValueLocal) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\r\n return null;\r\n }\r\n var activeAccount = this.getAccountInfoByFilter({ localAccountId: activeAccountValueLocal })[0] || null;\r\n if (activeAccount) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Legacy active account cache schema found\");\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Adding active account filters cache schema\");\r\n this.setActiveAccount(activeAccount);\r\n return activeAccount;\r\n }\r\n return null;\r\n }\r\n var activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters);\r\n if (activeAccountValueObj) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Active account filters schema found\");\r\n return this.getAccountInfoByFilter({\r\n homeAccountId: activeAccountValueObj.homeAccountId,\r\n localAccountId: activeAccountValueObj.localAccountId\r\n })[0] || null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\r\n return null;\r\n };\r\n /**\r\n * Sets the active account's localAccountId in cache\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.setActiveAccount = function (account) {\r\n var activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\r\n var activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n var activeAccountValue = {\r\n homeAccountId: account.homeAccountId,\r\n localAccountId: account.localAccountId\r\n };\r\n this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue));\r\n this.browserStorage.setItem(activeAccountKeyLocal, account.localAccountId);\r\n }\r\n else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.browserStorage.removeItem(activeAccountKey);\r\n this.browserStorage.removeItem(activeAccountKeyLocal);\r\n }\r\n };\r\n /**\r\n * Gets a list of accounts that match all of the filters provided\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByFilter = function (accountFilter) {\r\n var allAccounts = this.getAllAccounts();\r\n this.logger.trace(\"BrowserCacheManager.getAccountInfoByFilter: total \" + allAccounts.length + \" accounts found\");\r\n return allAccounts.filter(function (accountObj) {\r\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\r\n return false;\r\n }\r\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n /**\r\n * Checks the cache for accounts matching loginHint or SID\r\n * @param loginHint\r\n * @param sid\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByHints = function (loginHint, sid) {\r\n var matchingAccounts = this.getAllAccounts().filter(function (accountInfo) {\r\n if (sid) {\r\n var accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\r\n return sid === accountSid;\r\n }\r\n if (loginHint) {\r\n return loginHint === accountInfo.username;\r\n }\r\n return false;\r\n });\r\n if (matchingAccounts.length === 1) {\r\n return matchingAccounts[0];\r\n }\r\n else if (matchingAccounts.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\r\n }\r\n return null;\r\n };\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n BrowserCacheManager.prototype.getThrottlingCache = function (throttlingCacheKey) {\r\n var value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n };\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n BrowserCacheManager.prototype.setThrottlingCache = function (throttlingCacheKey, throttlingCache) {\r\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n };\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getTemporaryCache = function (cacheKey, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n var itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n return itemCookie;\r\n }\r\n }\r\n var value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n // If temp cache item not found in session/memory, check local storage for items set by old versions\r\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\r\n var item = this.browserStorage.getItem(key);\r\n if (item) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\r\n return item;\r\n }\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\r\n return value;\r\n };\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setTemporaryCache = function (cacheKey, value, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n };\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeItem = function (key) {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n };\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.containsKey = function (key) {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n };\r\n /**\r\n * Gets all keys in window.\r\n */\r\n BrowserCacheManager.prototype.getKeys = function () {\r\n return __spread(this.browserStorage.getKeys(), this.temporaryCacheStorage.getKeys());\r\n };\r\n /**\r\n * Clears all cache entries created by MSAL.\r\n */\r\n BrowserCacheManager.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: \r\n // Removes all accounts and their credentials\r\n return [4 /*yield*/, this.removeAllAccounts()];\r\n case 1:\r\n // Removes all accounts and their credentials\r\n _a.sent();\r\n this.removeAppMetadata();\r\n // Removes all remaining MSAL cache items\r\n this.getKeys().forEach(function (cacheKey) {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((_this.browserStorage.containsKey(cacheKey) || _this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(_this.clientId) !== -1))) {\r\n _this.removeItem(cacheKey);\r\n }\r\n });\r\n this.internalStorage.clear();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Clears all access tokes that have claims prior to saving the current one\r\n * @param credential\r\n * @returns\r\n */\r\n BrowserCacheManager.prototype.clearTokensAndKeysWithClaims = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenKeys, removedAccessTokens;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"BrowserCacheManager.clearTokensAndKeysWithClaims called\");\r\n tokenKeys = this.getTokenKeys();\r\n removedAccessTokens = [];\r\n tokenKeys.accessToken.forEach(function (key) {\r\n // if the access token has claims in its key, remove the token key and the token\r\n var credential = _this.getAccessTokenCredential(key);\r\n if ((credential === null || credential === void 0 ? void 0 : credential.requestedClaimsHash) && key.includes(credential.requestedClaimsHash.toLowerCase())) {\r\n removedAccessTokens.push(_this.removeAccessToken(key));\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccessTokens)];\r\n case 1:\r\n _a.sent();\r\n // warn if any access tokens are removed\r\n if (removedAccessTokens.length > 0) {\r\n this.logger.warning(removedAccessTokens.length + \" access tokens with claims in the cache keys have been removed from the cache.\");\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n BrowserCacheManager.prototype.setItemCookie = function (cookieName, cookieValue, expires) {\r\n var cookieStr = encodeURIComponent(cookieName) + \"=\" + encodeURIComponent(cookieValue) + \";path=/;SameSite=Lax;\";\r\n if (expires) {\r\n var expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += \"expires=\" + expireTime + \";\";\r\n }\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n document.cookie = cookieStr;\r\n };\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.getItemCookie = function (cookieName) {\r\n var name = encodeURIComponent(cookieName) + \"=\";\r\n var cookieList = document.cookie.split(\";\");\r\n for (var i = 0; i < cookieList.length; i++) {\r\n var cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n BrowserCacheManager.prototype.clearMsalCookies = function () {\r\n var _this = this;\r\n var cookiePrefix = Constants.CACHE_PREFIX + \".\" + this.clientId;\r\n var cookieList = document.cookie.split(\";\");\r\n cookieList.forEach(function (cookie) {\r\n while (cookie.charAt(0) === \" \") {\r\n // eslint-disable-next-line no-param-reassign\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n var cookieKey = cookie.split(\"=\")[0];\r\n _this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n };\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.clearItemCookie = function (cookieName) {\r\n this.setItemCookie(cookieName, Constants.EMPTY_STRING, -1);\r\n };\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n BrowserCacheManager.prototype.getCookieExpirationTime = function (cookieLifeDays) {\r\n var today = new Date();\r\n var expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n };\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n BrowserCacheManager.prototype.getCache = function () {\r\n return this.browserStorage;\r\n };\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n BrowserCacheManager.prototype.setCache = function () {\r\n // sets nothing\r\n };\r\n /**\r\n * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n BrowserCacheManager.prototype.generateCacheKey = function (key) {\r\n var generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return Constants.CACHE_PREFIX + \".\" + this.clientId + \".\" + key;\r\n }\r\n return JSON.stringify(key);\r\n };\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateAuthorityKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.AUTHORITY + \".\" + stateId);\r\n };\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateNonceKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.NONCE_IDTOKEN + \".\" + stateId);\r\n };\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n BrowserCacheManager.prototype.generateStateKey = function (stateString) {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.REQUEST_STATE + \".\" + stateId);\r\n };\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n BrowserCacheManager.prototype.getCachedAuthority = function (cachedState) {\r\n var stateCacheKey = this.generateStateKey(cachedState);\r\n var state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n };\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.updateCacheEntries = function (state, nonce, authorityInstance, loginHint, account) {\r\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n var stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n // Cache the nonce\r\n var nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n // Cache authorityKey\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n if (account) {\r\n var ccsCredential = {\r\n credential: account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n else if (!StringUtils.isEmpty(loginHint)) {\r\n var ccsCredential = {\r\n credential: loginHint,\r\n type: CcsCredentialType.UPN\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n };\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.resetRequestCache = function (state) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(function (key) {\r\n if (key.indexOf(state) !== -1) {\r\n _this.removeItem(key);\r\n }\r\n });\r\n }\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n this.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByState = function (stateString) {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n var stateKey = this.generateStateKey(stateString);\r\n var cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.infoPii(\"BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: \" + cachedState);\r\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\r\n }\r\n this.clearMsalCookies();\r\n };\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByInteractionType = function (interactionType) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach(function (key) {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n // Retrieve state value, return if not a valid value\r\n var stateValue = _this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n var parsedState = BrowserProtocolUtils.extractBrowserRequestState(_this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n _this.logger.infoPii(\"BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: \" + stateValue);\r\n _this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n this.setInteractionInProgress(false);\r\n };\r\n BrowserCacheManager.prototype.cacheCodeRequest = function (authCodeRequest, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\r\n var encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n };\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n BrowserCacheManager.prototype.getCachedRequest = function (state, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n var encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n var parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest));\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n var cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n return parsedRequest;\r\n };\r\n /**\r\n * Gets cached native request for redirect flows\r\n */\r\n BrowserCacheManager.prototype.getCachedNativeRequest = function () {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\r\n var cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\r\n if (!cachedRequest) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\r\n return null;\r\n }\r\n var parsedRequest = this.validateAndParseJson(cachedRequest);\r\n if (!parsedRequest) {\r\n this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\r\n return null;\r\n }\r\n return parsedRequest;\r\n };\r\n BrowserCacheManager.prototype.isInteractionInProgress = function (matchClientId) {\r\n var clientId = this.getInteractionInProgress();\r\n if (matchClientId) {\r\n return clientId === this.clientId;\r\n }\r\n else {\r\n return !!clientId;\r\n }\r\n };\r\n BrowserCacheManager.prototype.getInteractionInProgress = function () {\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n return this.getTemporaryCache(key, false);\r\n };\r\n BrowserCacheManager.prototype.setInteractionInProgress = function (inProgress) {\r\n // Ensure we don't overwrite interaction in progress for a different clientId\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n if (inProgress) {\r\n if (this.getInteractionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n }\r\n else {\r\n // No interaction is in progress\r\n this.setTemporaryCache(key, this.clientId, false);\r\n }\r\n }\r\n else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\r\n this.removeItem(key);\r\n }\r\n };\r\n /**\r\n * Returns username retrieved from ADAL or MSAL v1 idToken\r\n */\r\n BrowserCacheManager.prototype.getLegacyLoginHint = function () {\r\n // Only check for adal/msal token if no SSO params are being used\r\n var adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\r\n }\r\n // Check for cached MSAL v1 id token\r\n var msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\r\n if (msalIdTokenString) {\r\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\r\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\r\n }\r\n var cachedIdTokenString = msalIdTokenString || adalIdTokenString;\r\n if (cachedIdTokenString) {\r\n var cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\r\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\r\n return cachedIdToken.claims.preferred_username;\r\n }\r\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\r\n return cachedIdToken.claims.upn;\r\n }\r\n else {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Updates a credential's cache key if the current cache key is outdated\r\n */\r\n BrowserCacheManager.prototype.updateCredentialCacheKey = function (currentCacheKey, credential) {\r\n var updatedCacheKey = credential.generateCredentialKey();\r\n if (currentCacheKey !== updatedCacheKey) {\r\n var cacheItem = this.getItem(currentCacheKey);\r\n if (cacheItem) {\r\n this.removeItem(currentCacheKey);\r\n this.setItem(updatedCacheKey, cacheItem);\r\n this.logger.verbose(\"Updated an outdated \" + credential.credentialType + \" cache key\");\r\n return updatedCacheKey;\r\n }\r\n else {\r\n this.logger.error(\"Attempted to update an outdated \" + credential.credentialType + \" cache key but no item matching the outdated key was found in storage\");\r\n }\r\n }\r\n return currentCacheKey;\r\n };\r\n /**\r\n * Returns application id as redirect context during AcquireTokenRedirect flow.\r\n */\r\n BrowserCacheManager.prototype.getRedirectRequestContext = function () {\r\n return this.getTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, true);\r\n };\r\n /**\r\n * Sets application id as the redirect context during AcquireTokenRedirect flow.\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setRedirectRequestContext = function (value) {\r\n this.setTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, value, true);\r\n };\r\n return BrowserCacheManager;\r\n}(CacheManager));\r\nvar DEFAULT_BROWSER_CACHE_MANAGER = function (clientId, logger) {\r\n var cacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n cacheMigrationEnabled: false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\n\nexport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nvar ProtocolMode;\r\n(function (ProtocolMode) {\r\n ProtocolMode[\"AAD\"] = \"AAD\";\r\n ProtocolMode[\"OIDC\"] = \"OIDC\";\r\n})(ProtocolMode || (ProtocolMode = {}));\n\nexport { ProtocolMode };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AzureCloudInstance;\r\n(function (AzureCloudInstance) {\r\n // AzureCloudInstance is not specified.\r\n AzureCloudInstance[AzureCloudInstance[\"None\"] = 0] = \"None\";\r\n // Microsoft Azure public cloud\r\n AzureCloudInstance[\"AzurePublic\"] = \"https://login.microsoftonline.com\";\r\n // Microsoft PPE\r\n AzureCloudInstance[\"AzurePpe\"] = \"https://login.windows-ppe.net\";\r\n // Microsoft Chinese national cloud\r\n AzureCloudInstance[\"AzureChina\"] = \"https://login.chinacloudapi.cn\";\r\n // Microsoft German national cloud (\"Black Forest\")\r\n AzureCloudInstance[\"AzureGermany\"] = \"https://login.microsoftonline.de\";\r\n // US Government cloud\r\n AzureCloudInstance[\"AzureUsGovernment\"] = \"https://login.microsoftonline.us\";\r\n})(AzureCloudInstance || (AzureCloudInstance = {}));\n\nexport { AzureCloudInstance };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __assign, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { Logger, LogLevel } from '../logger/Logger.js';\nimport { Constants } from '../utils/Constants.js';\nimport { version } from '../packageMetadata.js';\nimport { AzureCloudInstance } from '../authority/AuthorityOptions.js';\nimport { DefaultStorageClass } from '../cache/CacheManager.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Token renewal offset default in seconds\r\nvar DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nvar DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false\r\n};\r\nvar DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: function () {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_CACHE_OPTIONS = {\r\n claimsBasedCachingEnabled: true\r\n};\r\nvar DEFAULT_NETWORK_IMPLEMENTATION = {\r\n sendGetRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n sendPostRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\r\nvar DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined\r\n};\r\nvar DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: \"\" + Constants.DEFAULT_COMMON_TENANT\r\n};\r\nvar DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\"\r\n }\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration(_a) {\r\n var userAuthOptions = _a.authOptions, userSystemOptions = _a.systemOptions, userLoggerOption = _a.loggerOptions, userCacheOptions = _a.cacheOptions, storageImplementation = _a.storageInterface, networkImplementation = _a.networkInterface, cryptoImplementation = _a.cryptoInterface, clientCredentials = _a.clientCredentials, libraryInfo = _a.libraryInfo, telemetry = _a.telemetry, serverTelemetryManager = _a.serverTelemetryManager, persistencePlugin = _a.persistencePlugin, serializableCache = _a.serializableCache;\r\n var loggerOptions = __assign(__assign({}, DEFAULT_LOGGER_IMPLEMENTATION), userLoggerOption);\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), userSystemOptions),\r\n loggerOptions: loggerOptions,\r\n cacheOptions: __assign(__assign({}, DEFAULT_CACHE_OPTIONS), userCacheOptions),\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: __assign(__assign({}, DEFAULT_LIBRARY_INFO), libraryInfo),\r\n telemetry: __assign(__assign({}, DEFAULT_TELEMETRY_OPTIONS), telemetry),\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return __assign({ clientCapabilities: [], azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, skipAuthorityMetadataCache: false }, authOptions);\r\n}\n\nexport { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubbedNetworkModule = {\r\n sendGetRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n },\r\n sendPostRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n }\r\n};\n\nexport { StubbedNetworkModule };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NavigationClient = /** @class */ (function () {\r\n function NavigationClient() {\r\n }\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.prototype.navigateInternal = function (url, options) {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n };\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.prototype.navigateExternal = function (url, options) {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n };\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.defaultNavigateWindow = function (url, options) {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n }\r\n else {\r\n window.location.assign(url);\r\n }\r\n return new Promise(function (resolve) {\r\n setTimeout(function () {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n };\r\n return NavigationClient;\r\n}());\n\nexport { NavigationClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-browser\";\r\nvar version = \"2.38.3\";\n\nexport { name, version };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { AccountEntity, CacheManager } from '@azure/msal-common';\nimport { EventType } from './EventType.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventHandler = /** @class */ (function () {\r\n function EventHandler(logger, browserCrypto) {\r\n this.eventCallbacks = new Map();\r\n this.logger = logger;\r\n this.browserCrypto = browserCrypto;\r\n this.listeningToStorageEvents = false;\r\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\r\n }\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n EventHandler.prototype.addEventCallback = function (callback) {\r\n if (typeof window !== \"undefined\") {\r\n var callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(\"Event callback registered with id: \" + callbackId);\r\n return callbackId;\r\n }\r\n return null;\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n EventHandler.prototype.removeEventCallback = function (callbackId) {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(\"Event callback \" + callbackId + \" removed.\");\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n EventHandler.prototype.enableAccountStorageEvents = function () {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n if (!this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Adding account storage listener.\");\r\n this.listeningToStorageEvents = true;\r\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\r\n }\r\n else {\r\n this.logger.verbose(\"Account storage listener already registered.\");\r\n }\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n EventHandler.prototype.disableAccountStorageEvents = function () {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n if (this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Removing account storage listener.\");\r\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\r\n this.listeningToStorageEvents = false;\r\n }\r\n else {\r\n this.logger.verbose(\"No account storage listener registered.\");\r\n }\r\n };\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n EventHandler.prototype.emitEvent = function (eventType, interactionType, payload, error) {\r\n var _this = this;\r\n if (typeof window !== \"undefined\") {\r\n var message_1 = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n this.logger.info(\"Emitting event: \" + eventType);\r\n this.eventCallbacks.forEach(function (callback, callbackId) {\r\n _this.logger.verbose(\"Emitting event to callback \" + callbackId + \": \" + eventType);\r\n callback.apply(null, [message_1]);\r\n });\r\n }\r\n };\r\n /**\r\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\r\n */\r\n EventHandler.prototype.handleAccountCacheChange = function (e) {\r\n try {\r\n var cacheValue = e.newValue || e.oldValue;\r\n if (!cacheValue) {\r\n return;\r\n }\r\n var parsedValue = JSON.parse(cacheValue);\r\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\r\n return;\r\n }\r\n var accountEntity = CacheManager.toObject(new AccountEntity(), parsedValue);\r\n var accountInfo = accountEntity.getAccountInfo();\r\n if (!e.oldValue && e.newValue) {\r\n this.logger.info(\"Account was added to cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\r\n }\r\n else if (!e.newValue && e.oldValue) {\r\n this.logger.info(\"Account was removed from cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\r\n }\r\n }\r\n catch (e) {\r\n return;\r\n }\r\n };\r\n return EventHandler;\r\n}());\n\nexport { EventHandler };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { ThrottlingConstants, Constants, HeaderNames } from '../utils/Constants.js';\nimport { ServerError } from '../error/ServerError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingUtils = /** @class */ (function () {\r\n function ThrottlingUtils() {\r\n }\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.generateThrottlingStorageKey = function (thumbprint) {\r\n return ThrottlingConstants.THROTTLING_PREFIX + \".\" + JSON.stringify(thumbprint);\r\n };\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.preProcess = function (cacheManager, thumbprint) {\r\n var _a;\r\n var key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n var value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key);\r\n return;\r\n }\r\n throw new ServerError(((_a = value.errorCodes) === null || _a === void 0 ? void 0 : _a.join(\" \")) || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n };\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n ThrottlingUtils.postProcess = function (cacheManager, thumbprint, response) {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n var thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\r\n }\r\n };\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseStatus = function (response) {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n };\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseForRetryAfter = function (response) {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n };\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n ThrottlingUtils.calculateThrottleTime = function (throttleTime) {\r\n var time = throttleTime <= 0 ? 0 : throttleTime;\r\n var currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n };\r\n ThrottlingUtils.removeThrottle = function (cacheManager, clientId, request, homeAccountIdentifier) {\r\n var thumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n var key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key);\r\n };\r\n return ThrottlingUtils;\r\n}());\n\nexport { ThrottlingUtils };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { ThrottlingUtils } from './ThrottlingUtils.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NetworkManager = /** @class */ (function () {\r\n function NetworkManager(networkClient, cacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n NetworkManager.prototype.sendPostRequest = function (thumbprint, tokenEndpoint, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkClient.sendPostRequestAsync(tokenEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n throw e_1;\r\n }\r\n else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e_1);\r\n }\r\n case 4:\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n return NetworkManager;\r\n}());\n\nexport { NetworkManager };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nvar RequestValidator = /** @class */ (function () {\r\n function RequestValidator() {\r\n }\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n RequestValidator.validateRedirectUri = function (redirectUri) {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n };\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n RequestValidator.validatePrompt = function (prompt) {\r\n var promptValues = [];\r\n for (var value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n };\r\n RequestValidator.validateClaims = function (claims) {\r\n try {\r\n JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeMethod = function (codeChallengeMethod) {\r\n if ([\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n };\r\n /**\r\n * Removes unnecessary, duplicate, and empty string query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n RequestValidator.sanitizeEQParams = function (eQParams, queryParams) {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach(function (value, key) {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n // remove empty string parameters\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n return Object.fromEntries(Object.entries(eQParams).filter(function (_a) {\r\n var value = _a[1];\r\n return value !== \"\";\r\n }));\r\n };\r\n return RequestValidator;\r\n}());\n\nexport { RequestValidator };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\nimport { AADServerParamKeys, Constants, ResponseMode, OIDC_DEFAULT_SCOPES, SSOTypes, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.js';\nimport { ScopeSet } from './ScopeSet.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { RequestValidator } from './RequestValidator.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RequestParameterBuilder = /** @class */ (function () {\r\n function RequestParameterBuilder() {\r\n this.parameters = new Map();\r\n }\r\n /**\r\n * add response_type = code\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeCode = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_type = token id_token\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeForTokenAndIdToken = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.TOKEN_RESPONSE_TYPE + \" \" + Constants.ID_TOKEN_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n RequestParameterBuilder.prototype.addResponseMode = function (responseMode) {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_MODE, encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY));\r\n };\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n RequestParameterBuilder.prototype.addNativeBroker = function () {\r\n this.parameters.set(AADServerParamKeys.NATIVE_BROKER, encodeURIComponent(\"1\"));\r\n };\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n RequestParameterBuilder.prototype.addScopes = function (scopes, addOidcScopes) {\r\n if (addOidcScopes === void 0) { addOidcScopes = true; }\r\n var requestScopes = addOidcScopes ? __spreadArrays(scopes || [], OIDC_DEFAULT_SCOPES) : scopes || [];\r\n var scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n };\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n RequestParameterBuilder.prototype.addClientId = function (clientId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n };\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addPostLogoutRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n RequestParameterBuilder.prototype.addIdTokenHint = function (idTokenHint) {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n };\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n RequestParameterBuilder.prototype.addDomainHint = function (domainHint) {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n };\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addLoginHint = function (loginHint) {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n };\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addCcsUpn = function (loginHint) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(\"UPN:\" + loginHint));\r\n };\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addCcsOid = function (clientInfo) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(\"Oid:\" + clientInfo.uid + \"@\" + clientInfo.utid));\r\n };\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n RequestParameterBuilder.prototype.addSid = function (sid) {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n };\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n RequestParameterBuilder.prototype.addClaims = function (claims, clientCapabilities) {\r\n var mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n };\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n RequestParameterBuilder.prototype.addCorrelationId = function (correlationId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n };\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n RequestParameterBuilder.prototype.addLibraryInfo = function (libraryInfo) {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n };\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n RequestParameterBuilder.prototype.addApplicationTelemetry = function (appTelemetry) {\r\n if (appTelemetry === null || appTelemetry === void 0 ? void 0 : appTelemetry.appName) {\r\n this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry === null || appTelemetry === void 0 ? void 0 : appTelemetry.appVersion) {\r\n this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\r\n }\r\n };\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n RequestParameterBuilder.prototype.addPrompt = function (prompt) {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(\"\" + AADServerParamKeys.PROMPT, encodeURIComponent(prompt));\r\n };\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n RequestParameterBuilder.prototype.addState = function (state) {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n };\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n RequestParameterBuilder.prototype.addNonce = function (nonce) {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n };\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestParameterBuilder.prototype.addCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n }\r\n else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addAuthorizationCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addDeviceCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n RequestParameterBuilder.prototype.addRefreshToken = function (refreshToken) {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n };\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n RequestParameterBuilder.prototype.addCodeVerifier = function (codeVerifier) {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n };\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n RequestParameterBuilder.prototype.addClientSecret = function (clientSecret) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n };\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertion = function (clientAssertion) {\r\n if (!StringUtils.isEmpty(clientAssertion)) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n };\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertionType = function (clientAssertionType) {\r\n if (!StringUtils.isEmpty(clientAssertionType)) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n };\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addOboAssertion = function (oboAssertion) {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addRequestTokenUse = function (tokenUse) {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addGrantType = function (grantType) {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n };\r\n /**\r\n * add client info\r\n *\r\n */\r\n RequestParameterBuilder.prototype.addClientInfo = function () {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n };\r\n /**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\n RequestParameterBuilder.prototype.addExtraQueryParameters = function (eQParams) {\r\n var _this = this;\r\n var sanitizedEQParams = RequestValidator.sanitizeEQParams(eQParams, this.parameters);\r\n Object.keys(sanitizedEQParams).forEach(function (key) {\r\n _this.parameters.set(key, eQParams[key]);\r\n });\r\n };\r\n RequestParameterBuilder.prototype.addClientCapabilitiesToClaims = function (claims, clientCapabilities) {\r\n var mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n };\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n RequestParameterBuilder.prototype.addUsername = function (username) {\r\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\r\n };\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n RequestParameterBuilder.prototype.addPassword = function (password) {\r\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\r\n };\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n RequestParameterBuilder.prototype.addPopToken = function (cnfString) {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n };\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n RequestParameterBuilder.prototype.addSshJwk = function (sshJwkString) {\r\n if (!StringUtils.isEmpty(sshJwkString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n };\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n RequestParameterBuilder.prototype.addServerTelemetry = function (serverTelemetryManager) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n };\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n RequestParameterBuilder.prototype.addThrottling = function () {\r\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n };\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n RequestParameterBuilder.prototype.addLogoutHint = function (logoutHint) {\r\n this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n };\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n RequestParameterBuilder.prototype.createQueryString = function () {\r\n var queryParameterArray = new Array();\r\n this.parameters.forEach(function (value, key) {\r\n queryParameterArray.push(key + \"=\" + value);\r\n });\r\n return queryParameterArray.join(\"&\");\r\n };\r\n return RequestParameterBuilder;\r\n}());\n\nexport { RequestParameterBuilder };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { buildClientConfiguration } from '../config/ClientConfiguration.js';\nimport { NetworkManager } from '../network/NetworkManager.js';\nimport { Logger } from '../logger/Logger.js';\nimport { HeaderNames, Constants } from '../utils/Constants.js';\nimport { name, version } from '../packageMetadata.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nvar BaseClient = /** @class */ (function () {\r\n function BaseClient(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n BaseClient.prototype.createTokenRequestHeaders = function (ccsCred) {\r\n var headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n var clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = \"Oid:\" + clientInfo.uid + \"@\" + clientInfo.utid;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = \"UPN: \" + ccsCred.credential;\r\n break;\r\n }\r\n }\r\n return headers;\r\n };\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n BaseClient.prototype.executePostToTokenEndpoint = function (tokenEndpoint, queryString, headers, thumbprint) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.networkManager.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers })];\r\n case 1:\r\n response = _a.sent();\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n BaseClient.prototype.updateAuthority = function (updatedAuthority) {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n };\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n BaseClient.prototype.createTokenQueryParameters = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n return BaseClient;\r\n}());\n\nexport { BaseClient };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CacheRecord = /** @class */ (function () {\r\n function CacheRecord(accountEntity, idTokenEntity, accessTokenEntity, refreshTokenEntity, appMetadataEntity) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n return CacheRecord;\r\n}());\n\nexport { CacheRecord };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar KeyLocation;\r\n(function (KeyLocation) {\r\n KeyLocation[\"SW\"] = \"sw\";\r\n KeyLocation[\"UHW\"] = \"uhw\";\r\n})(KeyLocation || (KeyLocation = {}));\r\nvar PopTokenGenerator = /** @class */ (function () {\r\n function PopTokenGenerator(cryptoUtils, performanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateCnf = function (request) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqCnf, reqCnfString, _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n return [4 /*yield*/, this.generateKid(request)];\r\n case 1:\r\n reqCnf = _d.sent();\r\n reqCnfString = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\r\n _c = {\r\n kid: reqCnf.kid,\r\n reqCnfString: reqCnfString\r\n };\r\n return [4 /*yield*/, this.cryptoUtils.hashString(reqCnfString)];\r\n case 2: return [2 /*return*/, (_c.reqCnfHash = _d.sent(),\r\n _c)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateKid = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var kidThumbprint;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n return [4 /*yield*/, this.cryptoUtils.getPublicKeyThumbprint(request)];\r\n case 1:\r\n kidThumbprint = _b.sent();\r\n return [2 /*return*/, {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.signPopToken = function (accessToken, keyId, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.signPayload(accessToken, keyId, request)];\r\n });\r\n });\r\n };\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.signPayload = function (payload, keyId, request, claims) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, resourceUrlString, resourceUrlComponents;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n resourceRequestMethod = request.resourceRequestMethod, resourceRequestUri = request.resourceRequestUri, shrClaims = request.shrClaims, shrNonce = request.shrNonce;\r\n resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\r\n resourceUrlComponents = resourceUrlString === null || resourceUrlString === void 0 ? void 0 : resourceUrlString.getUrlComponents();\r\n return [4 /*yield*/, this.cryptoUtils.signJwt(__assign({ at: payload, ts: TimeUtils.nowSeconds(), m: resourceRequestMethod === null || resourceRequestMethod === void 0 ? void 0 : resourceRequestMethod.toUpperCase(), u: resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.HostNameAndPort, nonce: shrNonce || this.cryptoUtils.createNewGuid(), p: resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.AbsolutePath, q: (resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined, client_claims: shrClaims || undefined }, claims), keyId, request.correlationId)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return PopTokenGenerator;\r\n}());\n\nexport { PopTokenGenerator };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ var TokenCacheContext = /** @class */ (function () {\r\n function TokenCacheContext(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n Object.defineProperty(TokenCacheContext.prototype, \"cacheHasChanged\", {\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get: function () {\r\n return this.hasChanged;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TokenCacheContext.prototype, \"tokenCache\", {\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get: function () {\r\n return this.cache;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return TokenCacheContext;\r\n}());\n\nexport { TokenCacheContext };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { buildClientInfo } from '../account/ClientInfo.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ServerError } from '../error/ServerError.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { ScopeSet } from '../request/ScopeSet.js';\nimport { AccountEntity } from '../cache/entities/AccountEntity.js';\nimport { AuthorityType } from '../authority/AuthorityType.js';\nimport { IdTokenEntity } from '../cache/entities/IdTokenEntity.js';\nimport { AccessTokenEntity } from '../cache/entities/AccessTokenEntity.js';\nimport { RefreshTokenEntity } from '../cache/entities/RefreshTokenEntity.js';\nimport { InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.js';\nimport { CacheRecord } from '../cache/entities/CacheRecord.js';\nimport { ProtocolUtils } from '../utils/ProtocolUtils.js';\nimport { Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { AppMetadataEntity } from '../cache/entities/AppMetadataEntity.js';\nimport { TokenCacheContext } from '../cache/persistence/TokenCacheContext.js';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nvar ResponseHandler = /** @class */ (function () {\r\n function ResponseHandler(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n ResponseHandler.prototype.validateServerAuthorizationCodeResponse = function (serverResponseHash, cachedState, cryptoObj) {\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror, serverResponseHash.timestamp || Constants.EMPTY_STRING, serverResponseHash.trace_id || Constants.EMPTY_STRING, serverResponseHash.correlation_id || Constants.EMPTY_STRING, serverResponseHash.claims || Constants.EMPTY_STRING);\r\n }\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n };\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n ResponseHandler.prototype.validateTokenResponse = function (serverResponse) {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING);\r\n }\r\n var errString = serverResponse.error_codes + \" - [\" + serverResponse.timestamp + \"]: \" + serverResponse.error_description + \" - Correlation ID: \" + serverResponse.correlation_id + \" - Trace ID: \" + serverResponse.trace_id;\r\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\r\n }\r\n };\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.handleServerTokenResponse = function (serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, authTime, requestStateObj, cacheRecord, cacheContext, key, account;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || (request.maxAge === 0)) {\r\n authTime = idTokenObj.claims.auth_time;\r\n if (!authTime) {\r\n throw ClientAuthError.createAuthTimeNotFoundError();\r\n }\r\n AuthToken.checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\r\n cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload);\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, , 5, 8]);\r\n if (!(this.persistencePlugin && this.serializableCache)) return [3 /*break*/, 3];\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n return [4 /*yield*/, this.persistencePlugin.beforeCacheAccess(cacheContext)];\r\n case 2:\r\n _b.sent();\r\n _b.label = 3;\r\n case 3:\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) {\r\n key = cacheRecord.account.generateAccountKey();\r\n account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, undefined, serverRequestId)];\r\n }\r\n }\r\n return [4 /*yield*/, this.cacheStorage.saveCacheRecord(cacheRecord)];\r\n case 4:\r\n _b.sent();\r\n return [3 /*break*/, 8];\r\n case 5:\r\n if (!(this.persistencePlugin && this.serializableCache && cacheContext)) return [3 /*break*/, 7];\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n return [4 /*yield*/, this.persistencePlugin.afterCacheAccess(cacheContext)];\r\n case 6:\r\n _b.sent();\r\n _b.label = 7;\r\n case 7: return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse, serverRequestId)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateCacheRecord = function (serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload) {\r\n var env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n // IdToken: non AAD scenarios can have empty realm\r\n var cachedIdToken;\r\n var cachedAccount;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token || Constants.EMPTY_STRING, this.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING);\r\n cachedAccount = this.generateAccountEntity(serverTokenResponse, idTokenObj, authority, authCodePayload);\r\n }\r\n // AccessToken\r\n var cachedAccessToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n // If scopes not returned in server response, use request scopes\r\n var responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n var expiresIn = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n var extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n var refreshIn = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\r\n var tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n var extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n var refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token || Constants.EMPTY_STRING, this.clientId, idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant, responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n var cachedRefreshToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token || Constants.EMPTY_STRING, this.clientId, serverTokenResponse.foci, userAssertionHash);\r\n }\r\n // appMetadata\r\n var cachedAppMetadata = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n };\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateAccountEntity = function (serverTokenResponse, idToken, authority, authCodePayload) {\r\n var authorityType = authority.authorityType;\r\n var cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\r\n var msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\r\n }\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\r\n };\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n ResponseHandler.generateAuthenticationResult = function (cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenObj, requestState, serverTokenResponse, requestId) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var accessToken, responseScopes, expiresOn, extExpiresOn, familyId, popTokenGenerator, _d, secret, keyId, uid, tid;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n accessToken = Constants.EMPTY_STRING;\r\n responseScopes = [];\r\n expiresOn = null;\r\n familyId = Constants.EMPTY_STRING;\r\n if (!cacheRecord.accessToken) return [3 /*break*/, 4];\r\n if (!(cacheRecord.accessToken.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n _d = cacheRecord.accessToken, secret = _d.secret, keyId = _d.keyId;\r\n if (!keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(secret, keyId, request)];\r\n case 1:\r\n accessToken = _e.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n accessToken = cacheRecord.accessToken.secret;\r\n _e.label = 3;\r\n case 3:\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n _e.label = 4;\r\n case 4:\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n uid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.oid) || (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.sub) || Constants.EMPTY_STRING;\r\n tid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.tid) || Constants.EMPTY_STRING;\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if ((serverTokenResponse === null || serverTokenResponse === void 0 ? void 0 : serverTokenResponse.spa_accountid) && !!cacheRecord.account) {\r\n cacheRecord.account.nativeAccountId = serverTokenResponse === null || serverTokenResponse === void 0 ? void 0 : serverTokenResponse.spa_accountid;\r\n }\r\n return [2 /*return*/, {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: ((_a = cacheRecord.accessToken) === null || _a === void 0 ? void 0 : _a.tokenType) || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: ((_b = cacheRecord.account) === null || _b === void 0 ? void 0 : _b.cloudGraphHostName) || Constants.EMPTY_STRING,\r\n msGraphHost: ((_c = cacheRecord.account) === null || _c === void 0 ? void 0 : _c.msGraphHost) || Constants.EMPTY_STRING,\r\n code: serverTokenResponse === null || serverTokenResponse === void 0 ? void 0 : serverTokenResponse.spa_code,\r\n fromNativeBroker: false,\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n return ResponseHandler;\r\n}());\n\nexport { ResponseHandler };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign, __spreadArrays } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\nimport { Separators, AADServerParamKeys, AuthenticationScheme, GrantType, PromptValue, HeaderNames } from '../utils/Constants.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { RequestValidator } from '../request/RequestValidator.js';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nvar AuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(AuthorizationCodeClient, _super);\r\n function AuthorizationCodeClient(configuration, performanceClient) {\r\n var _this = _super.call(this, configuration, performanceClient) || this;\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n _this.includeRedirectUri = true;\r\n return _this;\r\n }\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.getAuthCodeUrl = function (request) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var queryString;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId);\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\r\n return [4 /*yield*/, this.createAuthCodeUrlQueryString(request)];\r\n case 1:\r\n queryString = _c.sent();\r\n return [2 /*return*/, UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.acquireToken = function (request, authCodePayload) {\r\n var _a, _b, _c, _d, _e, _f;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atsMeasurement, reqTimestamp, response, requestId, httpVerAuthority, responseHandler;\r\n var _this = this;\r\n return __generator(this, function (_g) {\r\n switch (_g.label) {\r\n case 0:\r\n if (!request || !request.code) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n atsMeasurement = (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.startMeasurement(\"AuthCodeClientAcquireToken\", request.correlationId);\r\n this.logger.info(\"in acquireToken call in auth-code client\");\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n return [4 /*yield*/, this.executeTokenRequest(this.authority, request)];\r\n case 1:\r\n response = _g.sent();\r\n requestId = (_d = response.headers) === null || _d === void 0 ? void 0 : _d[HeaderNames.X_MS_REQUEST_ID];\r\n httpVerAuthority = (_e = response.headers) === null || _e === void 0 ? void 0 : _e[HeaderNames.X_MS_HTTP_VERSION];\r\n if (httpVerAuthority) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.addStaticFields({\r\n httpVerAuthority: httpVerAuthority\r\n });\r\n }\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n (_f = this.performanceClient) === null || _f === void 0 ? void 0 : _f.setPreQueueTime(PerformanceEvents.HandleServerTokenResponse, request.correlationId);\r\n return [2 /*return*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId).then(function (result) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.logger.verbose(\"Error in fetching token in ACC\", request.correlationId);\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n AuthorizationCodeClient.prototype.handleFragmentResponse = function (hashFragment, cachedState) {\r\n // Handle responses.\r\n var responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n // Deserialize hash fragment response parameters.\r\n var hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n var serverParams = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n return __assign(__assign({}, serverParams), { \r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code });\r\n };\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n AuthorizationCodeClient.prototype.getLogoutUri = function (logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n var queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n };\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.executeTokenRequest = function (authority, request) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var queryParametersString, endpoint, requestBody, ccsCredential, clientInfo, headers, thumbprint;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n queryParametersString = this.createTokenQueryParameters(request);\r\n endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _c.sent();\r\n ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCredential = {\r\n credential: \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n return [2 /*return*/, this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createTokenRequestBody = function (request) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, clientAssertion, popTokenGenerator, reqCnfData, correlationId, ccsCred, clientInfo, clientInfo;\r\n var _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _d.sent();\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n _d.label = 3;\r\n case 3:\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCred = {\r\n credential: \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters((_c = {},\r\n _c[AADServerParamKeys.RETURN_SPA_CODE] = \"1\",\r\n _c));\r\n }\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createAuthCodeUrlQueryString = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, requestScopes, correlationId, accountSid, accountLoginHintClaim, clientInfo, clientInfo, clientInfo, popTokenGenerator, reqCnfData;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n requestScopes = __spreadArrays(request.scopes || [], request.extraScopesToConsent || []);\r\n parameterBuilder.addScopes(requestScopes);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n }\r\n else if (request.account) {\r\n accountSid = this.extractAccountSid(request.account);\r\n accountLoginHintClaim = this.extractLoginHint(request.account);\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n parameterBuilder.addLoginHint(accountLoginHintClaim);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n if (!request.nativeBroker) return [3 /*break*/, 2];\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _b.sent();\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n _b.label = 2;\r\n case 2: return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createLogoutUrlQueryString = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n AuthorizationCodeClient.prototype.extractAccountSid = function (account) {\r\n var _a;\r\n return ((_a = account.idTokenClaims) === null || _a === void 0 ? void 0 : _a.sid) || null;\r\n };\r\n AuthorizationCodeClient.prototype.extractLoginHint = function (account) {\r\n var _a;\r\n return ((_a = account.idTokenClaims) === null || _a === void 0 ? void 0 : _a.login_hint) || null;\r\n };\r\n return AuthorizationCodeClient;\r\n}(BaseClient));\n\nexport { AuthorizationCodeClient };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\nexport { isOpenIdConfigResponse };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar rawMetdataJSON = { \"endpointMetadata\": { \"https://login.microsoftonline.com/common/\": { \"token_endpoint\": \"https://login.microsoftonline.com/common/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.com/common/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.com/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.com/common/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.com/common/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.com\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pas.windows.net\" }, \"https://login.chinacloudapi.cn/common/\": { \"token_endpoint\": \"https://login.chinacloudapi.cn/common/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.chinacloudapi.cn/common/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\", \"authorization_endpoint\": \"https://login.chinacloudapi.cn/common/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.chinacloudapi.cn/common/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.chinacloudapi.cn/common/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.chinacloudapi.cn/common/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"partner.microsoftonline.cn\", \"cloud_graph_host_name\": \"graph.chinacloudapi.cn\", \"msgraph_host\": \"microsoftgraph.chinacloudapi.cn\", \"rbac_url\": \"https://pas.chinacloudapi.cn\" }, \"https://login.microsoftonline.us/common/\": { \"token_endpoint\": \"https://login.microsoftonline.us/common/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.us/common/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.us/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.us/common/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.us/common/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.us/common/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.us/common/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.us\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pasff.usgovcloudapi.net\" }, \"https://login.microsoftonline.com/consumers/\": { \"token_endpoint\": \"https://login.microsoftonline.com/consumers/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.com/consumers/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.com/consumers/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.com/consumers/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.com\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pas.windows.net\" }, \"https://login.chinacloudapi.cn/consumers/\": { \"token_endpoint\": \"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.chinacloudapi.cn/consumers/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.partner.microsoftonline.cn/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\", \"authorization_endpoint\": \"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.chinacloudapi.cn/consumers/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"partner.microsoftonline.cn\", \"cloud_graph_host_name\": \"graph.chinacloudapi.cn\", \"msgraph_host\": \"microsoftgraph.chinacloudapi.cn\", \"rbac_url\": \"https://pas.chinacloudapi.cn\" }, \"https://login.microsoftonline.us/consumers/\": { \"token_endpoint\": \"https://login.microsoftonline.us/consumers/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.us/consumers/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.us/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.us/consumers/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.us/consumers/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.us/consumers/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.us/consumers/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.us\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pasff.usgovcloudapi.net\" }, \"https://login.microsoftonline.com/organizations/\": { \"token_endpoint\": \"https://login.microsoftonline.com/organizations/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.com/organizations/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.com/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.com/organizations/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.com\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pas.windows.net\" }, \"https://login.chinacloudapi.cn/organizations/\": { \"token_endpoint\": \"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.chinacloudapi.cn/organizations/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\", \"authorization_endpoint\": \"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.chinacloudapi.cn/organizations/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"partner.microsoftonline.cn\", \"cloud_graph_host_name\": \"graph.chinacloudapi.cn\", \"msgraph_host\": \"microsoftgraph.chinacloudapi.cn\", \"rbac_url\": \"https://pas.chinacloudapi.cn\" }, \"https://login.microsoftonline.us/organizations/\": { \"token_endpoint\": \"https://login.microsoftonline.us/organizations/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.us/organizations/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.us/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.us/organizations/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.us/organizations/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.us/organizations/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.us/organizations/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.us\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pasff.usgovcloudapi.net\" } }, \"instanceDiscoveryMetadata\": { \"https://login.microsoftonline.com/common/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.chinacloudapi.cn/common/\": { \"tenant_discovery_endpoint\": \"https://login.chinacloudapi.cn/common/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.us/common/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.us/common/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.com/consumers/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.chinacloudapi.cn/consumers/\": { \"tenant_discovery_endpoint\": \"https://login.chinacloudapi.cn/consumers/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.us/consumers/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.us/consumers/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.com/organizations/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.chinacloudapi.cn/organizations/\": { \"tenant_discovery_endpoint\": \"https://login.chinacloudapi.cn/organizations/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.us/organizations/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.us/organizations/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] } } };\r\nvar EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nvar InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\n\nexport { EndpointMetadata, InstanceDiscoveryMetadata, rawMetdataJSON };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { RegionDiscoverySources, ResponseCodes, Constants } from '../utils/Constants.js';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RegionDiscovery = /** @class */ (function () {\r\n function RegionDiscovery(networkInterface, performanceClient, correlationId) {\r\n this.networkInterface = networkInterface;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n RegionDiscovery.prototype.detectRegion = function (environmentRegion, regionDiscoveryMetadata) {\r\n var _a, _b, _c, _d;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var autodetectedRegionName, options, localIMDSVersionResponse, currentIMDSVersion, currentIMDSVersionResponse;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n autodetectedRegionName = environmentRegion;\r\n if (!!autodetectedRegionName) return [3 /*break*/, 8];\r\n options = RegionDiscovery.IMDS_OPTIONS;\r\n _e.label = 1;\r\n case 1:\r\n _e.trys.push([1, 6, , 7]);\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return [4 /*yield*/, this.getRegionFromIMDS(Constants.IMDS_VERSION, options)];\r\n case 2:\r\n localIMDSVersionResponse = _e.sent();\r\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n if (!(localIMDSVersionResponse.status === ResponseCodes.httpBadRequest)) return [3 /*break*/, 5];\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n return [4 /*yield*/, this.getCurrentVersion(options)];\r\n case 3:\r\n currentIMDSVersion = _e.sent();\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return [2 /*return*/, null];\r\n }\r\n (_d = this.performanceClient) === null || _d === void 0 ? void 0 : _d.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return [4 /*yield*/, this.getRegionFromIMDS(currentIMDSVersion, options)];\r\n case 4:\r\n currentIMDSVersionResponse = _e.sent();\r\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n _e.label = 5;\r\n case 5: return [3 /*break*/, 7];\r\n case 6:\r\n _e.sent();\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return [2 /*return*/, null];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n _e.label = 9;\r\n case 9:\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return [2 /*return*/, autodetectedRegionName || null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n RegionDiscovery.prototype.getRegionFromIMDS = function (version, options) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_b) {\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return [2 /*return*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + \"?api-version=\" + version + \"&format=text\", options, Constants.IMDS_TIMEOUT)];\r\n });\r\n });\r\n };\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n RegionDiscovery.prototype.getCurrentVersion = function (options) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + \"?format=json\", options)];\r\n case 2:\r\n response = _b.sent();\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\r\n return [2 /*return*/, response.body[\"newest-versions\"][0]];\r\n }\r\n return [2 /*return*/, null];\r\n case 3:\r\n _b.sent();\r\n return [2 /*return*/, null];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // Options for the IMDS endpoint request\r\n RegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n };\r\n return RegionDiscovery;\r\n}());\n\nexport { RegionDiscovery };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthorityType } from './AuthorityType.js';\nimport { isOpenIdConfigResponse } from './OpenIdConfigResponse.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { Constants, AADAuthorityConstants, AuthorityMetadataSource, RegionDiscoveryOutcomes } from '../utils/Constants.js';\nimport { EndpointMetadata, InstanceDiscoveryMetadata } from './AuthorityMetadata.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ProtocolMode } from './ProtocolMode.js';\nimport { AuthorityMetadataEntity } from '../cache/entities/AuthorityMetadataEntity.js';\nimport { AzureCloudInstance } from './AuthorityOptions.js';\nimport { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.js';\nimport { isCloudInstanceDiscoveryErrorResponse } from './CloudInstanceDiscoveryErrorResponse.js';\nimport { RegionDiscovery } from './RegionDiscovery.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nvar Authority = /** @class */ (function () {\r\n function Authority(authority, networkInterface, cacheManager, authorityOptions, logger, performanceClient, correlationId) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.performanceClient, this.correlationId);\r\n }\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n Authority.prototype.getAuthorityType = function (authorityUri) {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n var pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n };\r\n Object.defineProperty(Authority.prototype, \"authorityType\", {\r\n // See above for AuthorityType\r\n get: function () {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"protocolMode\", {\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get: function () {\r\n return this.authorityOptions.protocolMode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"options\", {\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get: function () {\r\n return this.authorityOptions;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthority\", {\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get: function () {\r\n return this._canonicalAuthority.urlString;\r\n },\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set: function (url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthorityUrlComponents\", {\r\n /**\r\n * Get authority components.\r\n */\r\n get: function () {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"hostnameAndPort\", {\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tenant\", {\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"authorizationEndpoint\", {\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tokenEndpoint\", {\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"deviceCodeEndpoint\", {\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"endSessionEndpoint\", {\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw ClientAuthError.createLogoutNotSupportedError();\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"selfSignedJwtAudience\", {\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"jwksUri\", {\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n Authority.prototype.canReplaceTenant = function (authorityUri) {\r\n return authorityUri.PathSegments.length === 1\r\n && !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0])\r\n && this.getAuthorityType(authorityUri) === AuthorityType.Default\r\n && this.protocolMode === ProtocolMode.AAD;\r\n };\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n Authority.prototype.replaceTenant = function (urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n };\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n Authority.prototype.replacePath = function (urlString) {\r\n var _this = this;\r\n var endpoint = urlString;\r\n var cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n var cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n var cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n var currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach(function (currentPart, index) {\r\n var cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 && _this.canReplaceTenant(cachedAuthorityUrlComponents)) {\r\n var tenantId = (new UrlString(_this.metadata.authorization_endpoint)).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n _this.logger.verbose(\"Replacing tenant domain name \" + cachedPart + \" with id \" + tenantId);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(\"/\" + cachedPart + \"/\", \"/\" + currentPart + \"/\");\r\n }\r\n });\r\n return this.replaceTenant(endpoint);\r\n };\r\n Object.defineProperty(Authority.prototype, \"defaultOpenIdConfigurationEndpoint\", {\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get: function () {\r\n if (this.authorityType === AuthorityType.Adfs ||\r\n this.authorityType === AuthorityType.Dsts ||\r\n this.protocolMode === ProtocolMode.OIDC) {\r\n return this.canonicalAuthority + \".well-known/openid-configuration\";\r\n }\r\n return this.canonicalAuthority + \"v2.0/.well-known/openid-configuration\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n Authority.prototype.discoveryComplete = function () {\r\n return !!this.metadata;\r\n };\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n Authority.prototype.resolveEndpointsAsync = function () {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadataEntity, cloudDiscoverySource, endpointSource, cacheKey;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n return [4 /*yield*/, this.updateCloudDiscoveryMetadata(metadataEntity)];\r\n case 1:\r\n cloudDiscoverySource = _d.sent();\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n return [4 /*yield*/, this.updateEndpointMetadata(metadataEntity)];\r\n case 2:\r\n endpointSource = _d.sent();\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.updateEndpointMetadata = function (metadataEntity) {\r\n var _a, _b, _c, _d, _e, _f;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata, harcodedMetadata;\r\n return __generator(this, function (_g) {\r\n switch (_g.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n return [4 /*yield*/, this.getEndpointMetadataFromNetwork()];\r\n case 1:\r\n metadata = _g.sent();\r\n if (!metadata) return [3 /*break*/, 4];\r\n if (!((_c = this.authorityOptions.azureRegionConfiguration) === null || _c === void 0 ? void 0 : _c.azureRegion)) return [3 /*break*/, 3];\r\n (_d = this.performanceClient) === null || _d === void 0 ? void 0 : _d.setPreQueueTime(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n return [4 /*yield*/, this.updateMetadataWithRegionalInformation(metadata)];\r\n case 2:\r\n metadata = _g.sent();\r\n _g.label = 3;\r\n case 3:\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n case 4:\r\n harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (!(harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache)) return [3 /*break*/, 7];\r\n if (!((_e = this.authorityOptions.azureRegionConfiguration) === null || _e === void 0 ? void 0 : _e.azureRegion)) return [3 /*break*/, 6];\r\n (_f = this.performanceClient) === null || _f === void 0 ? void 0 : _f.setPreQueueTime(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n return [4 /*yield*/, this.updateMetadataWithRegionalInformation(harcodedMetadata)];\r\n case 5:\r\n harcodedMetadata = _g.sent();\r\n _g.label = 6;\r\n case 6:\r\n metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.HARDCODED_VALUES];\r\n case 7: throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.isAuthoritySameType = function (metadataEntity) {\r\n var cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n var cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n };\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n Authority.prototype.getEndpointMetadataFromConfig = function () {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n Authority.prototype.getEndpointMetadataFromNetwork = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var options, response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n options = {};\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.\r\n sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint, options)];\r\n case 2:\r\n response = _b.sent();\r\n return [2 /*return*/, isOpenIdConfigResponse(response.body) ? response.body : null];\r\n case 3:\r\n _b.sent();\r\n return [2 /*return*/, null];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n Authority.prototype.getEndpointMetadataFromHardcodedValues = function () {\r\n if (this.canonicalAuthority in EndpointMetadata) {\r\n return EndpointMetadata[this.canonicalAuthority];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n Authority.prototype.updateMetadataWithRegionalInformation = function (metadata) {\r\n var _a, _b, _c, _d;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var userConfiguredAzureRegion, autodetectedRegionName;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n userConfiguredAzureRegion = (_b = this.authorityOptions.azureRegionConfiguration) === null || _b === void 0 ? void 0 : _b.azureRegion;\r\n if (!userConfiguredAzureRegion) return [3 /*break*/, 2];\r\n if (userConfiguredAzureRegion !== Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used = userConfiguredAzureRegion;\r\n return [2 /*return*/, Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion)];\r\n }\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n return [4 /*yield*/, this.regionDiscovery.detectRegion((_d = this.authorityOptions.azureRegionConfiguration) === null || _d === void 0 ? void 0 : _d.environmentRegion, this.regionDiscoveryMetadata)];\r\n case 1:\r\n autodetectedRegionName = _e.sent();\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used = autodetectedRegionName;\r\n return [2 /*return*/, Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName)];\r\n }\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n _e.label = 2;\r\n case 2: return [2 /*return*/, metadata];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n Authority.prototype.updateCloudDiscoveryMetadata = function (metadataEntity) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata, metadataEntityExpired, harcodedMetadata;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n // attempt to read metadata from the config\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata in the config\");\r\n this.logger.verbosePii(\"Known Authorities: \" + (this.authorityOptions.knownAuthorities || Constants.NOT_APPLICABLE));\r\n this.logger.verbosePii(\"Authority Metadata: \" + (this.authorityOptions.authorityMetadata || Constants.NOT_APPLICABLE));\r\n this.logger.verbosePii(\"Canonical Authority: \" + (metadataEntity.canonical_authority || Constants.NOT_APPLICABLE));\r\n metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the config.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the cache.\");\r\n metadataEntityExpired = metadataEntity.isExpired();\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) {\r\n this.logger.verbose(\"Found metadata in the cache.\");\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the cache... Attempting to get cloud discovery metadata from the network.\");\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n return [4 /*yield*/, this.getCloudDiscoveryMetadataFromNetwork()];\r\n case 1:\r\n metadata = _c.sent();\r\n if (metadata) {\r\n this.logger.verbose(\"cloud discovery metadata was successfully returned from getCloudDiscoveryMetadataFromNetwork()\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata from the network... Attempting to get cloud discovery metadata from hardcoded values.\");\r\n harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\r\n if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.HARDCODED_VALUES];\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n this.logger.error(\"Did not find cloud discovery metadata from hardcoded values... Metadata could not be obtained from config, cache, network or hardcoded values. Throwing Untrusted Authority Error.\");\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromConfig = function () {\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n var parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n var metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n };\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromNetwork = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var instanceDiscoveryEndpoint, options, match, response, typedResponseBody, metadata, error_1, typedError;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n instanceDiscoveryEndpoint = \"\" + Constants.AAD_INSTANCE_DISCOVERY_ENDPT + this.canonicalAuthority + \"oauth2/v2.0/authorize\";\r\n options = {};\r\n match = null;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options)];\r\n case 2:\r\n response = _b.sent();\r\n typedResponseBody = void 0;\r\n metadata = void 0;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody = response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(\"tenant_discovery_endpoint is: \" + typedResponseBody.tenant_discovery_endpoint);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(\"A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: \" + response.status);\r\n typedResponseBody = response.body;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return [2 /*return*/, null];\r\n }\r\n this.logger.warning(\"The CloudInstanceDiscoveryErrorResponse error is \" + typedResponseBody.error);\r\n this.logger.warning(\"The CloudInstanceDiscoveryErrorResponse error description is \" + typedResponseBody.error_description);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return [2 /*return*/, null];\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n error_1 = _b.sent();\r\n if (error_1 instanceof AuthError) {\r\n this.logger.error(\"There was a network error while attempting to get the cloud discovery instance metadata.\\nError: \" + error_1.errorCode + \"\\nError Description: \" + error_1.errorMessage);\r\n }\r\n else {\r\n typedError = error_1;\r\n this.logger.error(\"A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: \" + typedError.name + \"\\nError Description: \" + typedError.message);\r\n }\r\n return [2 /*return*/, null];\r\n case 4:\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return [2 /*return*/, match];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromHarcodedValues = function () {\r\n if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\r\n return InstanceDiscoveryMetadata[this.canonicalAuthority];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n Authority.prototype.isInKnownAuthorities = function () {\r\n var _this = this;\r\n var matches = this.authorityOptions.knownAuthorities.filter(function (authority) {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === _this.hostnameAndPort;\r\n });\r\n return matches.length > 0;\r\n };\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n Authority.generateAuthority = function (authorityString, azureCloudOptions) {\r\n var authorityAzureCloudInstance;\r\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n var tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = azureCloudOptions.azureCloudInstance + \"/\" + tenant + \"/\";\r\n }\r\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\r\n };\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n Authority.createCloudDiscoveryMetadataFromHost = function (host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n };\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\n Authority.getCloudDiscoveryMetadataFromNetworkResponse = function (response, authority) {\r\n for (var i = 0; i < response.length; i++) {\r\n var metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n Authority.prototype.getPreferredCache = function () {\r\n if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n };\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n Authority.prototype.isAlias = function (host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n };\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n Authority.isPublicCloudAuthority = function (host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n };\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n Authority.buildRegionalAuthorityString = function (host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n var authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n var authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n var hostNameAndPort = region + \".\" + authorityUrlParts.HostNameAndPort;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = region + \".\" + Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX;\r\n }\r\n // Include the query string portion of the url\r\n var url = UrlString.constructAuthorityUriFromObject(__assign(__assign({}, authorityUrlInstance.getUrlComponents()), { HostNameAndPort: hostNameAndPort })).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return url + \"?\" + queryString;\r\n return url;\r\n };\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n Authority.replaceWithRegionalInformation = function (metadata, azureRegion) {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, Constants.REGIONAL_AUTH_NON_MSI_QUERY_STRING);\r\n if (metadata.end_session_endpoint) {\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n }\r\n return metadata;\r\n };\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n Authority.transformCIAMAuthority = function (authority) {\r\n var ciamAuthority = authority.endsWith(Constants.FORWARD_SLASH) ? authority : \"\" + authority + Constants.FORWARD_SLASH;\r\n var authorityUrl = new UrlString(authority);\r\n var authorityUrlComponents = authorityUrl.getUrlComponents();\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 && (authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL))) {\r\n var tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = \"\" + ciamAuthority + tenantIdOrDomain + Constants.AAD_TENANT_DOMAIN_SUFFIX;\r\n }\r\n return ciamAuthority;\r\n };\r\n // Reserved tenant domain names that will not be replaced with tenant id\r\n Authority.reservedTenantDomains = (new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS\r\n ]));\r\n return Authority;\r\n}());\n\nexport { Authority };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\nexport { isCloudInstanceDiscoveryResponse };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\nexport { isCloudInstanceDiscoveryErrorResponse };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Authority } from './Authority.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityFactory = /** @class */ (function () {\r\n function AuthorityFactory() {\r\n }\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createDiscoveredInstance = function (authorityUri, networkClient, cacheManager, authorityOptions, logger, performanceClient, correlationId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authorityUriFinal, acquireTokenAuthority, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n performanceClient === null || performanceClient === void 0 ? void 0 : performanceClient.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n authorityUriFinal = Authority.transformCIAMAuthority(authorityUri);\r\n acquireTokenAuthority = AuthorityFactory.createInstance(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, performanceClient, correlationId);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n performanceClient === null || performanceClient === void 0 ? void 0 : performanceClient.setPreQueueTime(PerformanceEvents.AuthorityResolveEndpointsAsync, correlationId);\r\n return [4 /*yield*/, acquireTokenAuthority.resolveEndpointsAsync()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, acquireTokenAuthority];\r\n case 3:\r\n e_1 = _a.sent();\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e_1);\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createInstance = function (authorityUrl, networkInterface, cacheManager, authorityOptions, logger, performanceClient, correlationId) {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, logger, performanceClient, correlationId);\r\n };\r\n return AuthorityFactory;\r\n}());\n\nexport { AuthorityFactory };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { SERVER_TELEM_CONSTANTS, CacheOutcome, Constants, Separators } from '../../utils/Constants.js';\nimport { ServerTelemetryEntity } from '../../cache/entities/ServerTelemetryEntity.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryManager = /** @class */ (function () {\r\n function ServerTelemetryManager(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NO_CACHE_HIT;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n ServerTelemetryManager.prototype.generateCurrentRequestHeaderValue = function () {\r\n var request = \"\" + this.apiId + SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR + this.cacheOutcome;\r\n var platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n var requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n ServerTelemetryManager.prototype.generateLastRequestHeaderValue = function () {\r\n var lastRequests = this.getLastRequests();\r\n var maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var failedRequests = lastRequests.failedRequests.slice(0, 2 * maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n var overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n var platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n ServerTelemetryManager.prototype.cacheFailedRequest = function (error) {\r\n var lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return;\r\n };\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n ServerTelemetryManager.prototype.incrementCacheHits = function () {\r\n var lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n };\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n ServerTelemetryManager.prototype.getLastRequests = function () {\r\n var initialValue = new ServerTelemetryEntity();\r\n var lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n };\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n ServerTelemetryManager.prototype.clearTelemetryCache = function () {\r\n var lastRequests = this.getLastRequests();\r\n var numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n var serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed * 2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n };\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n ServerTelemetryManager.maxErrorsToSend = function (serverTelemetryEntity) {\r\n var i;\r\n var maxErrors = 0;\r\n var dataSize = 0;\r\n var errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n var apiId = serverTelemetryEntity.failedRequests[2 * i] || Constants.EMPTY_STRING;\r\n var correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || Constants.EMPTY_STRING;\r\n var errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n };\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n ServerTelemetryManager.prototype.getRegionDiscoveryFields = function () {\r\n var regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n };\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n ServerTelemetryManager.prototype.updateRegionDiscoveryMetadata = function (regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n };\r\n /**\r\n * Set cache outcome\r\n */\r\n ServerTelemetryManager.prototype.setCacheOutcome = function (cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n };\r\n return ServerTelemetryManager;\r\n}());\n\nexport { ServerTelemetryManager };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator, __spread, __assign } from '../_virtual/_tslib.js';\nimport { AccountEntity, AuthenticationScheme, ClientConfigurationError, StringUtils, PerformanceEvents, UrlString, ServerTelemetryManager, AuthorityFactory } from '@azure/msal-common';\nimport { version } from '../packageMetadata.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BaseInteractionClient = /** @class */ (function () {\r\n function BaseInteractionClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) {\r\n this.config = config;\r\n this.browserStorage = storageImpl;\r\n this.browserCrypto = browserCrypto;\r\n this.networkClient = this.config.system.networkClient;\r\n this.eventHandler = eventHandler;\r\n this.navigationClient = navigationClient;\r\n this.nativeMessageHandler = nativeMessageHandler;\r\n this.correlationId = correlationId || this.browserCrypto.createNewGuid();\r\n this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\r\n this.performanceClient = performanceClient;\r\n }\r\n BaseInteractionClient.prototype.clearCacheOnLogout = function (account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!account) return [3 /*break*/, 5];\r\n if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.browserStorage.setActiveAccount(null);\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account))];\r\n case 2:\r\n _a.sent();\r\n this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\r\n return [3 /*break*/, 4];\r\n case 4: return [3 /*break*/, 9];\r\n case 5:\r\n _a.trys.push([5, 8, , 9]);\r\n this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\r\n // Clear all accounts and tokens\r\n return [4 /*yield*/, this.browserStorage.clear()];\r\n case 6:\r\n // Clear all accounts and tokens\r\n _a.sent();\r\n // Clear any stray keys from IndexedDB\r\n return [4 /*yield*/, this.browserCrypto.clearKeystore()];\r\n case 7:\r\n // Clear any stray keys from IndexedDB\r\n _a.sent();\r\n return [3 /*break*/, 9];\r\n case 8:\r\n _a.sent();\r\n this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\r\n return [3 /*break*/, 9];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initializer function for all request APIs\r\n * @param request\r\n */\r\n BaseInteractionClient.prototype.initializeBaseRequest = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, scopes, validatedRequest, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.InitializeBaseRequest, request.correlationId);\r\n this.logger.verbose(\"Initializing BaseAuthRequest\");\r\n authority = request.authority || this.config.auth.authority;\r\n if (!account) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.validateRequestAuthority(authority, account)];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n scopes = __spread(((request && request.scopes) || []));\r\n validatedRequest = __assign(__assign({}, request), { correlationId: this.correlationId, authority: authority,\r\n scopes: scopes });\r\n // Set authenticationScheme to BEARER if not explicitly set in the request\r\n if (!validatedRequest.authenticationScheme) {\r\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\r\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\r\n }\r\n else {\r\n if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (!request.sshJwk) {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n if (!request.sshKid) {\r\n throw ClientConfigurationError.createMissingSshKidError();\r\n }\r\n }\r\n this.logger.verbose(\"Authentication Scheme set to \\\"\" + validatedRequest.authenticationScheme + \"\\\" as configured in Auth request\");\r\n }\r\n if (!(this.config.cache.claimsBasedCachingEnabled && request.claims && !StringUtils.isEmptyObj(request.claims))) return [3 /*break*/, 4];\r\n _a = validatedRequest;\r\n return [4 /*yield*/, this.browserCrypto.hashString(request.claims)];\r\n case 3:\r\n _a.requestedClaimsHash = _b.sent();\r\n _b.label = 4;\r\n case 4: return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * @param requestRedirectUri\r\n * @returns Redirect URL\r\n *\r\n */\r\n BaseInteractionClient.prototype.getRedirectUri = function (requestRedirectUri) {\r\n this.logger.verbose(\"getRedirectUri called\");\r\n var redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\r\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\r\n };\r\n /*\r\n * If authority provided in the request does not match environment/authority specified\r\n * in the account or MSAL config, we throw an error.\r\n */\r\n BaseInteractionClient.prototype.validateRequestAuthority = function (authority, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var discoveredAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getDiscoveredAuthority(authority)];\r\n case 1:\r\n discoveredAuthority = _a.sent();\r\n if (!discoveredAuthority.isAlias(account.environment)) {\r\n throw ClientConfigurationError.createAuthorityMismatchError();\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * @param apiId\r\n * @param correlationId\r\n * @param forceRefresh\r\n */\r\n BaseInteractionClient.prototype.initializeServerTelemetryManager = function (apiId, forceRefresh) {\r\n this.logger.verbose(\"initializeServerTelemetryManager called\");\r\n var telemetryPayload = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: this.correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\r\n wrapperVer: this.browserStorage.getWrapperMetadata()[1]\r\n };\r\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\r\n };\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n BaseInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authorityOptions;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getDiscoveredAuthority called\");\r\n authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n if (!requestAuthority) return [3 /*break*/, 2];\r\n this.logger.verbose(\"Creating discovered authority with request authority\");\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n this.logger.verbose(\"Creating discovered authority with configured authority\");\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger)];\r\n case 3: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return BaseInteractionClient;\r\n}());\n\nexport { BaseInteractionClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { UrlString, Constants, PerformanceEvents, AuthorizationCodeClient, Authority, AuthorityFactory, ResponseMode, StringUtils, ProtocolUtils } from '@azure/msal-common';\nimport { BaseInteractionClient } from './BaseInteractionClient.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { version } from '../packageMetadata.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\r\n */\r\nvar StandardInteractionClient = /** @class */ (function (_super) {\r\n __extends(StandardInteractionClient, _super);\r\n function StandardInteractionClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Generates an auth code request tied to the url request.\r\n * @param request\r\n */\r\n StandardInteractionClient.prototype.initializeAuthorizationCodeRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var generatedPkceParams, authCodeRequest;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\r\n return [4 /*yield*/, this.browserCrypto.generatePkceCodes()];\r\n case 1:\r\n generatedPkceParams = _a.sent();\r\n authCodeRequest = __assign(__assign({}, request), { redirectUri: request.redirectUri, code: Constants.EMPTY_STRING, codeVerifier: generatedPkceParams.verifier });\r\n request.codeChallenge = generatedPkceParams.challenge;\r\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\r\n return [2 /*return*/, authCodeRequest];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initializer for the logout request.\r\n * @param logoutRequest\r\n */\r\n StandardInteractionClient.prototype.initializeLogoutRequest = function (logoutRequest) {\r\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);\r\n var validLogoutRequest = __assign({ correlationId: this.correlationId || this.browserCrypto.createNewGuid() }, logoutRequest);\r\n /**\r\n * Set logout_hint to be login_hint from ID Token Claims if present\r\n * and logoutHint attribute wasn't manually set in logout request\r\n */\r\n if (logoutRequest) {\r\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\r\n if (!logoutRequest.logoutHint) {\r\n if (logoutRequest.account) {\r\n var logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\r\n if (logoutHint) {\r\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\r\n validLogoutRequest.logoutHint = logoutHint;\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\r\n }\r\n /*\r\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\r\n * Otherwise, use passed uri, config, or current page.\r\n */\r\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\r\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n else if (this.config.auth.postLogoutRedirectUri === null) {\r\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\r\n }\r\n else if (this.config.auth.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n else {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\r\n }\r\n return validLogoutRequest;\r\n };\r\n /**\r\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\r\n * logout_hint in end session request.\r\n * @param account\r\n */\r\n StandardInteractionClient.prototype.getLogoutHintFromIdTokenClaims = function (account) {\r\n var idTokenClaims = account.idTokenClaims;\r\n if (idTokenClaims) {\r\n if (idTokenClaims.login_hint) {\r\n return idTokenClaims.login_hint;\r\n }\r\n else {\r\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\r\n }\r\n return null;\r\n };\r\n /**\r\n * Creates an Authorization Code Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n StandardInteractionClient.prototype.createAuthCodeClient = function (serverTelemetryManager, authorityUrl, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId);\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new AuthorizationCodeClient(clientConfig, this.performanceClient)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a Client Configuration object with the given request authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n StandardInteractionClient.prototype.getClientConfiguration = function (serverTelemetryManager, requestAuthority, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var discoveredAuthority, logger;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n return [4 /*yield*/, this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions)];\r\n case 1:\r\n discoveredAuthority = _a.sent();\r\n logger = this.config.system.loggerOptions;\r\n return [2 /*return*/, {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities\r\n },\r\n systemOptions: {\r\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\r\n preventCorsPreflight: true\r\n },\r\n loggerOptions: {\r\n loggerCallback: logger.loggerCallback,\r\n piiLoggingEnabled: logger.piiLoggingEnabled,\r\n logLevel: logger.logLevel,\r\n correlationId: this.correlationId\r\n },\r\n cacheOptions: {\r\n claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled\r\n },\r\n cryptoInterface: this.browserCrypto,\r\n networkInterface: this.networkClient,\r\n storageInterface: this.browserStorage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n libraryInfo: {\r\n sku: BrowserConstants.MSAL_SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n },\r\n telemetry: this.config.telemetry\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @param hash\r\n * @param interactionType\r\n */\r\n StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (serverParams, interactionType, requestCorrelationId) {\r\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\r\n if (!serverParams.state) {\r\n throw BrowserAuthError.createHashDoesNotContainStateError();\r\n }\r\n var platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\r\n if (!platformStateObj) {\r\n throw BrowserAuthError.createUnableToParseStateError();\r\n }\r\n if (platformStateObj.interactionType !== interactionType) {\r\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\r\n }\r\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\r\n return serverParams.state;\r\n };\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n StandardInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority, requestAzureCloudOptions) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getAuthorityMeasurement, authorityOptions, userAuthority, builtAuthority;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\r\n getAuthorityMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache\r\n };\r\n userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\r\n builtAuthority = Authority.generateAuthority(userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\r\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, this.correlationId);\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger, this.performanceClient, this.correlationId)\r\n .then(function (result) {\r\n getAuthorityMeasurement.endMeasurement({\r\n success: true,\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n getAuthorityMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n case 1: return [2 /*return*/, _b.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\r\n * @param request\r\n * @param interactionType\r\n */\r\n StandardInteractionClient.prototype.initializeAuthorizationRequest = function (request, interactionType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var redirectUri, browserState, state, validatedRequest, _a, account, legacyLoginHint;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId);\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\r\n redirectUri = this.getRedirectUri(request.redirectUri);\r\n browserState = {\r\n interactionType: interactionType\r\n };\r\n state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, this.correlationId);\r\n _a = [{}];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1:\r\n validatedRequest = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { redirectUri: redirectUri, state: state, nonce: request.nonce || this.browserCrypto.createNewGuid(), responseMode: ResponseMode.FRAGMENT }]);\r\n account = request.account || this.browserStorage.getActiveAccount();\r\n if (account) {\r\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\r\n this.logger.verbosePii(\"Setting validated request account: \" + account.homeAccountId, this.correlationId);\r\n validatedRequest.account = account;\r\n }\r\n // Check for ADAL/MSAL v1 SSO\r\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\r\n legacyLoginHint = this.browserStorage.getLegacyLoginHint();\r\n if (legacyLoginHint) {\r\n validatedRequest.loginHint = legacyLoginHint;\r\n }\r\n }\r\n return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n return StandardInteractionClient;\r\n}(BaseInteractionClient));\n\nexport { StandardInteractionClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { InteractionRequiredAuthError, AuthError } from '@azure/msal-common';\nimport { BrowserAuthError } from './BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeStatusCode;\r\n(function (NativeStatusCode) {\r\n NativeStatusCode[\"USER_INTERACTION_REQUIRED\"] = \"USER_INTERACTION_REQUIRED\";\r\n NativeStatusCode[\"USER_CANCEL\"] = \"USER_CANCEL\";\r\n NativeStatusCode[\"NO_NETWORK\"] = \"NO_NETWORK\";\r\n NativeStatusCode[\"TRANSIENT_ERROR\"] = \"TRANSIENT_ERROR\";\r\n NativeStatusCode[\"PERSISTENT_ERROR\"] = \"PERSISTENT_ERROR\";\r\n NativeStatusCode[\"DISABLED\"] = \"DISABLED\";\r\n NativeStatusCode[\"ACCOUNT_UNAVAILABLE\"] = \"ACCOUNT_UNAVAILABLE\";\r\n})(NativeStatusCode || (NativeStatusCode = {}));\r\nvar NativeAuthErrorMessage = {\r\n extensionError: {\r\n code: \"ContentError\"\r\n },\r\n userSwitch: {\r\n code: \"user_switch\",\r\n desc: \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\"\r\n },\r\n tokensNotFoundInCache: {\r\n code: \"tokens_not_found_in_internal_memory_cache\",\r\n desc: \"Tokens not cached in MSAL JS internal memory, please make the WAM request\"\r\n }\r\n};\r\nvar NativeAuthError = /** @class */ (function (_super) {\r\n __extends(NativeAuthError, _super);\r\n function NativeAuthError(errorCode, description, ext) {\r\n var _this = _super.call(this, errorCode, description) || this;\r\n Object.setPrototypeOf(_this, NativeAuthError.prototype);\r\n _this.name = \"NativeAuthError\";\r\n _this.ext = ext;\r\n return _this;\r\n }\r\n /**\r\n * These errors should result in a fallback to the 'standard' browser based auth flow.\r\n */\r\n NativeAuthError.prototype.isFatal = function () {\r\n if (this.ext && this.ext.status && (this.ext.status === NativeStatusCode.PERSISTENT_ERROR || this.ext.status === NativeStatusCode.DISABLED)) {\r\n return true;\r\n }\r\n switch (this.errorCode) {\r\n case NativeAuthErrorMessage.extensionError.code:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n };\r\n /**\r\n * Create the appropriate error object based on the WAM status code.\r\n * @param code\r\n * @param description\r\n * @param ext\r\n * @returns\r\n */\r\n NativeAuthError.createError = function (code, description, ext) {\r\n if (ext && ext.status) {\r\n switch (ext.status) {\r\n case NativeStatusCode.ACCOUNT_UNAVAILABLE:\r\n return InteractionRequiredAuthError.createNativeAccountUnavailableError();\r\n case NativeStatusCode.USER_INTERACTION_REQUIRED:\r\n return new InteractionRequiredAuthError(code, description);\r\n case NativeStatusCode.USER_CANCEL:\r\n return BrowserAuthError.createUserCancelledError();\r\n case NativeStatusCode.NO_NETWORK:\r\n return BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n return new NativeAuthError(code, description, ext);\r\n };\r\n /**\r\n * Creates user switch error when the user chooses a different account in the native broker prompt\r\n * @returns\r\n */\r\n NativeAuthError.createUserSwitchError = function () {\r\n return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\r\n };\r\n /**\r\n * Creates a tokens not found error when the internal cache look up fails\r\n * @returns NativeAuthError: tokensNotFoundInCache\r\n */\r\n NativeAuthError.createTokensNotFoundInCacheError = function () {\r\n return new NativeAuthError(NativeAuthErrorMessage.tokensNotFoundInCache.code, NativeAuthErrorMessage.tokensNotFoundInCache.desc);\r\n };\r\n return NativeAuthError;\r\n}(AuthError));\n\nexport { NativeAuthError, NativeAuthErrorMessage, NativeStatusCode };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\nimport { AuthenticationScheme, GrantType, HeaderNames, Errors } from '../utils/Constants.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { ServerError } from '../error/ServerError.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from '../error/InteractionRequiredAuthError.js';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nvar RefreshTokenClient = /** @class */ (function (_super) {\r\n __extends(RefreshTokenClient, _super);\r\n function RefreshTokenClient(configuration, performanceClient) {\r\n return _super.call(this, configuration, performanceClient) || this;\r\n }\r\n RefreshTokenClient.prototype.acquireToken = function (request) {\r\n var _a, _b, _c, _d, _e, _f, _g;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atsMeasurement, reqTimestamp, response, httpVerToken, requestId, responseHandler;\r\n var _this = this;\r\n return __generator(this, function (_h) {\r\n switch (_h.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n atsMeasurement = (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n this.logger.verbose(\"RefreshTokenClientAcquireToken called\", request.correlationId);\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 1:\r\n response = _h.sent();\r\n httpVerToken = (_d = response.headers) === null || _d === void 0 ? void 0 : _d[HeaderNames.X_MS_HTTP_VERSION];\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.addStaticFields({\r\n refreshTokenSize: ((_e = response.body.refresh_token) === null || _e === void 0 ? void 0 : _e.length) || 0,\r\n });\r\n if (httpVerToken) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.addStaticFields({\r\n httpVerToken: httpVerToken,\r\n });\r\n }\r\n requestId = (_f = response.headers) === null || _f === void 0 ? void 0 : _f[HeaderNames.X_MS_REQUEST_ID];\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n (_g = this.performanceClient) === null || _g === void 0 ? void 0 : _g.setPreQueueTime(PerformanceEvents.HandleServerTokenResponse, request.correlationId);\r\n return [2 /*return*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId).then(function (result) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.logger.verbose(\"Error in fetching refresh token\", request.correlationId);\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenByRefreshToken = function (request) {\r\n var _a, _b, _c, _d;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isFOCI, noFamilyRTInCache, clientMismatchErrorWithFamilyRT;\r\n return __generator(this, function (_e) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, true)];\r\n }\r\n catch (e) {\r\n noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\r\n clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n (_d = this.performanceClient) === null || _d === void 0 ? void 0 : _d.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n });\r\n });\r\n };\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenWithCachedRefreshToken = function (request, foci) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atsMeasurement, refreshToken, refreshTokenRequest;\r\n return __generator(this, function (_d) {\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n atsMeasurement = (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n this.logger.verbose(\"RefreshTokenClientAcquireTokenWithCachedRefreshToken called\", request.correlationId);\r\n refreshToken = this.cacheManager.getRefreshToken(request.account, foci);\r\n if (!refreshToken) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.discardMeasurement();\r\n throw InteractionRequiredAuthError.createNoTokensFoundError();\r\n }\r\n // attach cached RT size to the current measurement\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n refreshTokenRequest = __assign(__assign({}, request), { refreshToken: refreshToken.secret, authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n } });\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n return [2 /*return*/, this.acquireToken(refreshTokenRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n RefreshTokenClient.prototype.executeTokenRequest = function (request, authority) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, queryParametersString, endpoint, requestBody, headers, thumbprint;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n acquireTokenMeasurement = (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.startMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n queryParametersString = this.createTokenQueryParameters(request);\r\n endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _d.sent();\r\n headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n return [2 /*return*/, this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)\r\n .then(function (result) {\r\n acquireTokenMeasurement === null || acquireTokenMeasurement === void 0 ? void 0 : acquireTokenMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n acquireTokenMeasurement === null || acquireTokenMeasurement === void 0 ? void 0 : acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.createTokenRequestBody = function (request) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, acquireTokenMeasurement, parameterBuilder, clientAssertion, popTokenGenerator, reqCnfData, clientInfo;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n correlationId = request.correlationId;\r\n acquireTokenMeasurement = (_b = this.performanceClient) === null || _b === void 0 ? void 0 : _b.startMeasurement(PerformanceEvents.BaseClientCreateTokenRequestHeaders, correlationId);\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n parameterBuilder.addClientInfo();\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n parameterBuilder.addCorrelationId(correlationId);\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n (_c = this.performanceClient) === null || _c === void 0 ? void 0 : _c.setPreQueueTime(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _d.sent();\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n acquireTokenMeasurement === null || acquireTokenMeasurement === void 0 ? void 0 : acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n _d.label = 3;\r\n case 3:\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n acquireTokenMeasurement === null || acquireTokenMeasurement === void 0 ? void 0 : acquireTokenMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n return RefreshTokenClient;\r\n}(BaseClient));\n\nexport { RefreshTokenClient };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { RefreshTokenClient } from './RefreshTokenClient.js';\nimport { ClientAuthError, ClientAuthErrorMessage } from '../error/ClientAuthError.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { CacheOutcome } from '../utils/Constants.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentFlowClient = /** @class */ (function (_super) {\r\n __extends(SilentFlowClient, _super);\r\n function SilentFlowClient(configuration, performanceClient) {\r\n return _super.call(this, configuration, performanceClient) || this;\r\n }\r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1, refreshTokenClient;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.acquireCachedToken(request)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof ClientAuthError && e_1.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(request)];\r\n }\r\n else {\r\n throw e_1;\r\n }\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireCachedToken = function (request) {\r\n var _a, _b, _c, _d, _e;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var environment, cacheRecord;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0:\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n if (request.forceRefresh) {\r\n // Must refresh due to present force_refresh flag.\r\n (_a = this.serverTelemetryManager) === null || _a === void 0 ? void 0 : _a.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (!this.config.cacheOptions.claimsBasedCachingEnabled && !StringUtils.isEmptyObj(request.claims)) {\r\n // Must refresh due to presence of claims in request preventing cache lookup\r\n (_b = this.serverTelemetryManager) === null || _b === void 0 ? void 0 : _b.setCacheOutcome(CacheOutcome.CLAIMS_REQUESTED_CACHE_SKIPPED);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because claims-based caching is disabled and claims were requested.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n environment = request.authority || this.authority.getPreferredCache();\r\n cacheRecord = this.cacheManager.readCacheRecord(request.account, request, environment);\r\n if (!cacheRecord.accessToken) {\r\n // Must refresh due to non-existent access_token.\r\n (_c = this.serverTelemetryManager) === null || _c === void 0 ? void 0 : _c.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\r\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // Must refresh due to expired access_token.\r\n (_d = this.serverTelemetryManager) === null || _d === void 0 ? void 0 : _d.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within \" + this.config.systemOptions.tokenRenewalOffsetSeconds + \" seconds.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\r\n // Must refresh due to the refresh_in value.\r\n (_e = this.serverTelemetryManager) === null || _e === void 0 ? void 0 : _e.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [4 /*yield*/, this.generateResultFromCacheRecord(cacheRecord, request)];\r\n case 1: return [2 /*return*/, _f.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n SilentFlowClient.prototype.generateResultFromCacheRecord = function (cacheRecord, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, authTime;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n // token max_age check\r\n if (request.maxAge || (request.maxAge === 0)) {\r\n authTime = idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.auth_time;\r\n if (!authTime) {\r\n throw ClientAuthError.createAuthTimeNotFoundError();\r\n }\r\n AuthToken.checkMaxAge(authTime, request.maxAge);\r\n }\r\n return [4 /*yield*/, ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenObj)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return SilentFlowClient;\r\n}(BaseClient));\n\nexport { SilentFlowClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { AuthError, PerformanceEvents, SilentFlowClient } from '@azure/msal-common';\nimport { ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentCacheClient = /** @class */ (function (_super) {\r\n __extends(SilentCacheClient, _super);\r\n function SilentCacheClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Returns unexpired tokens from the cache, if available\r\n * @param silentRequest\r\n */\r\n SilentCacheClient.prototype.acquireToken = function (silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, serverTelemetryManager, silentAuthClient, cachedToken, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n return [4 /*yield*/, this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 1:\r\n silentAuthClient = _a.sent();\r\n this.logger.verbose(\"Silent auth client created\");\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, silentAuthClient.acquireCachedToken(silentRequest)];\r\n case 3:\r\n cachedToken = _a.sent();\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: true\r\n });\r\n return [2 /*return*/, cachedToken];\r\n case 4:\r\n error_1 = _a.sent();\r\n if (error_1 instanceof BrowserAuthError && error_1.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\r\n this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\r\n }\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: error_1 instanceof AuthError && error_1.errorCode || undefined,\r\n subErrorCode: error_1 instanceof AuthError && error_1.subError || undefined,\r\n success: false\r\n });\r\n throw error_1;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentCacheClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Creates an Silent Flow Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n SilentCacheClient.prototype.createSilentFlowClient = function (serverTelemetryManager, authorityUrl, azureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new SilentFlowClient(clientConfig, this.performanceClient)];\r\n }\r\n });\r\n });\r\n };\r\n SilentCacheClient.prototype.initializeSilentRequest = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.InitializeSilentRequest, this.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, this.correlationId);\r\n _a = [__assign({}, request)];\r\n return [4 /*yield*/, this.initializeBaseRequest(request, account)];\r\n case 1: return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { account: account, forceRefresh: request.forceRefresh || false }])];\r\n }\r\n });\r\n });\r\n };\r\n return SilentCacheClient;\r\n}(StandardInteractionClient));\n\nexport { SilentCacheClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __rest, __assign } from '../_virtual/_tslib.js';\nimport { ScopeSet, AuthToken, Constants, AccountEntity, AuthorityType, IdTokenEntity, AccessTokenEntity, CacheRecord, PerformanceEvents, TimeUtils, ClientAuthError, AuthenticationScheme, PopTokenGenerator, UrlString, OIDC_DEFAULT_SCOPES, PromptValue } from '@azure/msal-common';\nimport { BaseInteractionClient } from './BaseInteractionClient.js';\nimport { TemporaryCacheKeys, NativeExtensionMethod, NativeConstants, ApiId } from '../utils/BrowserConstants.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { SilentCacheClient } from './SilentCacheClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeInteractionClient = /** @class */ (function (_super) {\r\n __extends(NativeInteractionClient, _super);\r\n function NativeInteractionClient(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, nativeStorageImpl, correlationId) {\r\n var _this = _super.call(this, config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId) || this;\r\n _this.apiId = apiId;\r\n _this.accountId = accountId;\r\n _this.nativeMessageHandler = provider;\r\n _this.nativeStorageManager = nativeStorageImpl;\r\n _this.silentCacheClient = new SilentCacheClient(config, _this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\r\n return _this;\r\n }\r\n /**\r\n * Acquire token from native platform via browser extension\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeATMeasurement, reqTimestamp, nativeRequest, result, messageBody, response, validatedResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\r\n nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.initializeNativeRequest(request)];\r\n case 1:\r\n nativeRequest = _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.acquireTokensFromCache(this.accountId, nativeRequest)];\r\n case 3:\r\n result = _a.sent();\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: false,\r\n fromCache: true\r\n });\r\n return [2 /*return*/, result];\r\n case 4:\r\n _a.sent();\r\n // continue with a native call for any and all errors\r\n this.logger.info(\"MSAL internal Cache does not contain tokens, proceed to make a native call\");\r\n return [3 /*break*/, 5];\r\n case 5:\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 6:\r\n response = _a.sent();\r\n validatedResponse = this.validateNativeResponse(response);\r\n return [2 /*return*/, this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\r\n .then(function (result) {\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n nativeATMeasurement.endMeasurement({\r\n success: false,\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n isNativeBroker: true\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates silent flow request\r\n * @param request\r\n * @param cachedAccount\r\n * @returns CommonSilentFlowRequest\r\n */\r\n NativeInteractionClient.prototype.createSilentCacheRequest = function (request, cachedAccount) {\r\n return {\r\n authority: request.authority,\r\n correlationId: this.correlationId,\r\n scopes: ScopeSet.fromString(request.scope).asArray(),\r\n account: cachedAccount,\r\n forceRefresh: false,\r\n };\r\n };\r\n /**\r\n * Fetches the tokens from the cache if un-expired\r\n * @param nativeAccountId\r\n * @param request\r\n * @returns authenticationResult\r\n */\r\n NativeInteractionClient.prototype.acquireTokensFromCache = function (nativeAccountId, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var account, silentRequest, result, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!nativeAccountId) {\r\n this.logger.warning(\"NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided\");\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n account = this.browserStorage.getAccountInfoFilteredBy({ nativeAccountId: nativeAccountId });\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n silentRequest = this.createSilentCacheRequest(request, account);\r\n return [4 /*yield*/, this.silentCacheClient.acquireToken(silentRequest)];\r\n case 2:\r\n result = _a.sent();\r\n return [2 /*return*/, result];\r\n case 3:\r\n e_2 = _a.sent();\r\n throw e_2;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeRequest, messageBody, response, e_3, navigationOptions, redirectUri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\r\n return [4 /*yield*/, this.initializeNativeRequest(request)];\r\n case 1:\r\n nativeRequest = _a.sent();\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 3:\r\n response = _a.sent();\r\n this.validateNativeResponse(response);\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_3 = _a.sent();\r\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\r\n if (e_3 instanceof NativeAuthError && e_3.isFatal()) {\r\n throw e_3;\r\n }\r\n return [3 /*break*/, 5];\r\n case 5:\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\r\n navigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(redirectUri, navigationOptions)];\r\n case 6:\r\n _a.sent(); // Need to treat this as external to ensure handleRedirectPromise is run again\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\r\n */\r\n NativeInteractionClient.prototype.handleRedirectPromise = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedRequest, prompt, request, messageBody, reqTimestamp, response, result, e_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n cachedRequest = this.browserStorage.getCachedNativeRequest();\r\n if (!cachedRequest) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n prompt = cachedRequest.prompt, request = __rest(cachedRequest, [\"prompt\"]);\r\n if (prompt) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window.\");\r\n }\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: request\r\n };\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 2:\r\n response = _a.sent();\r\n this.validateNativeResponse(response);\r\n result = this.handleNativeResponse(response, request, reqTimestamp);\r\n this.browserStorage.setInteractionInProgress(false);\r\n return [2 /*return*/, result];\r\n case 3:\r\n e_4 = _a.sent();\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e_4;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Logout from native platform via browser extension\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.logout = function () {\r\n this.logger.trace(\"NativeInteractionClient - logout called.\");\r\n return Promise.reject(\"Logout not implemented yet\");\r\n };\r\n /**\r\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\r\n * @param response\r\n * @param request\r\n * @param reqTimestamp\r\n */\r\n NativeInteractionClient.prototype.handleNativeResponse = function (response, request, reqTimestamp) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, authorityPreferredCache, idTokenObj, homeAccountIdentifier, accountEntity, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\r\n if (response.account.id !== request.accountId) {\r\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\r\n throw NativeAuthError.createUserSwitchError();\r\n }\r\n return [4 /*yield*/, this.getDiscoveredAuthority(request.authority)];\r\n case 1:\r\n authority = _a.sent();\r\n authorityPreferredCache = authority.getPreferredCache();\r\n idTokenObj = this.createIdTokenObj(response);\r\n homeAccountIdentifier = this.createHomeAccountIdentifier(response, idTokenObj);\r\n accountEntity = this.createAccountEntity(response, homeAccountIdentifier, idTokenObj, authorityPreferredCache);\r\n return [4 /*yield*/, this.generateAuthenticationResult(response, request, idTokenObj, accountEntity, authority.canonicalAuthority, reqTimestamp)];\r\n case 2:\r\n result = _a.sent();\r\n // cache accounts and tokens in the appropriate storage\r\n this.cacheAccount(accountEntity);\r\n this.cacheNativeTokens(response, request, homeAccountIdentifier, accountEntity, idTokenObj, result.accessToken, result.tenantId, reqTimestamp);\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Create an idToken Object (not entity)\r\n * @param response\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.createIdTokenObj = function (response) {\r\n return new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\r\n };\r\n /**\r\n * creates an homeAccountIdentifier for the account\r\n * @param response\r\n * @param idTokenObj\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.createHomeAccountIdentifier = function (response, idTokenObj) {\r\n // Save account in browser storage\r\n var homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\r\n return homeAccountIdentifier;\r\n };\r\n /**\r\n * Creates account entity\r\n * @param response\r\n * @param homeAccountIdentifier\r\n * @param idTokenObj\r\n * @param authority\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.createAccountEntity = function (response, homeAccountIdentifier, idTokenObj, authority) {\r\n return AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authority, response.account.id);\r\n };\r\n /**\r\n * Helper to generate scopes\r\n * @param response\r\n * @param request\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.generateScopes = function (response, request) {\r\n return response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\r\n };\r\n /**\r\n * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser\r\n * @param request\r\n * @param response\r\n */\r\n NativeInteractionClient.prototype.generatePopAccessToken = function (response, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var popTokenGenerator, shrParameters;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(request.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n /**\r\n * This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT\r\n * is still received, SHR is calculated locally\r\n */\r\n // Check if native layer returned an SHR token\r\n if (response.shr) {\r\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\r\n return [2 /*return*/, response.shr];\r\n }\r\n popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n shrParameters = {\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n /**\r\n * KeyID must be present in the native request from when the PoP key was generated in order for\r\n * PopTokenGenerator to query the full key for signing\r\n */\r\n if (!request.keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/, response.access_token];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates authentication result\r\n * @param response\r\n * @param request\r\n * @param idTokenObj\r\n * @param accountEntity\r\n * @param authority\r\n * @param reqTimestamp\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.generateAuthenticationResult = function (response, request, idTokenObj, accountEntity, authority, reqTimestamp) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var mats, responseScopes, accountProperties, uid, tid, responseAccessToken, tokenType, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n mats = this.addTelemetryFromNativeResponse(response);\r\n responseScopes = response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\r\n accountProperties = response.account.properties || {};\r\n uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\r\n tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\r\n return [4 /*yield*/, this.generatePopAccessToken(response, request)];\r\n case 1:\r\n responseAccessToken = _a.sent();\r\n tokenType = (request.tokenType === AuthenticationScheme.POP) ? AuthenticationScheme.POP : AuthenticationScheme.BEARER;\r\n result = {\r\n authority: authority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes.asArray(),\r\n account: accountEntity.getAccountInfo(),\r\n idToken: response.id_token,\r\n idTokenClaims: idTokenObj.claims,\r\n accessToken: responseAccessToken,\r\n fromCache: mats ? this.isResponseFromCache(mats) : false,\r\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\r\n tokenType: tokenType,\r\n correlationId: this.correlationId,\r\n state: response.state,\r\n fromNativeBroker: true\r\n };\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * cache the account entity in browser storage\r\n * @param accountEntity\r\n */\r\n NativeInteractionClient.prototype.cacheAccount = function (accountEntity) {\r\n var _this = this;\r\n // Store the account info and hence `nativeAccountId` in browser cache\r\n this.browserStorage.setAccount(accountEntity);\r\n // Remove any existing cached tokens for this account in browser storage\r\n this.browserStorage.removeAccountContext(accountEntity).catch(function (e) {\r\n _this.logger.error(\"Error occurred while removing account context from browser storage. \" + e);\r\n });\r\n };\r\n /**\r\n * Stores the access_token and id_token in inmemory storage\r\n * @param response\r\n * @param request\r\n * @param homeAccountIdentifier\r\n * @param idTokenObj\r\n * @param responseAccessToken\r\n * @param tenantId\r\n * @param reqTimestamp\r\n */\r\n NativeInteractionClient.prototype.cacheNativeTokens = function (response, request, homeAccountIdentifier, accountEntity, idTokenObj, responseAccessToken, tenantId, reqTimestamp) {\r\n var cachedIdToken = IdTokenEntity.createIdTokenEntity(homeAccountIdentifier, request.authority, response.id_token || Constants.EMPTY_STRING, request.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING);\r\n // cache accessToken in inmemory storage\r\n var expiresIn = (request.tokenType === AuthenticationScheme.POP)\r\n ? Constants.SHR_NONCE_VALIDITY\r\n : (typeof response.expires_in === \"string\"\r\n ? parseInt(response.expires_in, 10)\r\n : response.expires_in) || 0;\r\n var tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n var responseScopes = this.generateScopes(response, request);\r\n var cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(homeAccountIdentifier, request.authority, responseAccessToken, request.clientId, idTokenObj\r\n ? idTokenObj.claims.tid || Constants.EMPTY_STRING\r\n : tenantId, responseScopes.printScopes(), tokenExpirationSeconds, 0, this.browserCrypto);\r\n var nativeCacheRecord = new CacheRecord(accountEntity, cachedIdToken, cachedAccessToken);\r\n this.nativeStorageManager.saveCacheRecord(nativeCacheRecord);\r\n };\r\n NativeInteractionClient.prototype.addTelemetryFromNativeResponse = function (response) {\r\n var mats = this.getMATSFromResponse(response);\r\n if (!mats) {\r\n return null;\r\n }\r\n this.performanceClient.addStaticFields({\r\n extensionId: this.nativeMessageHandler.getExtensionId(),\r\n extensionVersion: this.nativeMessageHandler.getExtensionVersion(),\r\n matsBrokerVersion: mats.broker_version,\r\n matsAccountJoinOnStart: mats.account_join_on_start,\r\n matsAccountJoinOnEnd: mats.account_join_on_end,\r\n matsDeviceJoin: mats.device_join,\r\n matsPromptBehavior: mats.prompt_behavior,\r\n matsApiErrorCode: mats.api_error_code,\r\n matsUiVisible: mats.ui_visible,\r\n matsSilentCode: mats.silent_code,\r\n matsSilentBiSubCode: mats.silent_bi_sub_code,\r\n matsSilentMessage: mats.silent_message,\r\n matsSilentStatus: mats.silent_status,\r\n matsHttpStatus: mats.http_status,\r\n matsHttpEventCount: mats.http_event_count\r\n }, this.correlationId);\r\n return mats;\r\n };\r\n /**\r\n * Validates native platform response before processing\r\n * @param response\r\n */\r\n NativeInteractionClient.prototype.validateNativeResponse = function (response) {\r\n if (response.hasOwnProperty(\"access_token\") &&\r\n response.hasOwnProperty(\"id_token\") &&\r\n response.hasOwnProperty(\"client_info\") &&\r\n response.hasOwnProperty(\"account\") &&\r\n response.hasOwnProperty(\"scope\") &&\r\n response.hasOwnProperty(\"expires_in\")) {\r\n return response;\r\n }\r\n else {\r\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\r\n }\r\n };\r\n /**\r\n * Gets MATS telemetry from native response\r\n * @param response\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.getMATSFromResponse = function (response) {\r\n if (response.properties.MATS) {\r\n try {\r\n return JSON.parse(response.properties.MATS);\r\n }\r\n catch (e) {\r\n this.logger.error(\"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\");\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns whether or not response came from native cache\r\n * @param response\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.isResponseFromCache = function (mats) {\r\n if (typeof mats.is_cached === \"undefined\") {\r\n this.logger.verbose(\"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\");\r\n return false;\r\n }\r\n return !!mats.is_cached;\r\n };\r\n /**\r\n * Translates developer provided request object into NativeRequest object\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.initializeNativeRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, canonicalAuthority, scopes, remainingProperties, scopeSet, getPrompt, validatedRequest, shrParameters, popTokenGenerator, reqCnfData;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\r\n authority = request.authority || this.config.auth.authority;\r\n if (!request.account) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.validateRequestAuthority(authority, request.account)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n canonicalAuthority = new UrlString(authority);\r\n canonicalAuthority.validateAsUri();\r\n scopes = request.scopes, remainingProperties = __rest(request, [\"scopes\"]);\r\n scopeSet = new ScopeSet(scopes || []);\r\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\r\n getPrompt = function () {\r\n // If request is silent, prompt is always none\r\n switch (_this.apiId) {\r\n case ApiId.ssoSilent:\r\n case ApiId.acquireTokenSilent_silentFlow:\r\n _this.logger.trace(\"initializeNativeRequest: silent request sets prompt to none\");\r\n return PromptValue.NONE;\r\n }\r\n // Prompt not provided, request may proceed and native broker decides if it needs to prompt\r\n if (!request.prompt) {\r\n _this.logger.trace(\"initializeNativeRequest: prompt was not provided\");\r\n return undefined;\r\n }\r\n // If request is interactive, check if prompt provided is allowed to go directly to native broker\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n case PromptValue.LOGIN:\r\n _this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\r\n return request.prompt;\r\n default:\r\n _this.logger.trace(\"initializeNativeRequest: prompt = \" + request.prompt + \" is not compatible with native flow\");\r\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\r\n }\r\n };\r\n validatedRequest = __assign(__assign({}, remainingProperties), { accountId: this.accountId, clientId: this.config.auth.clientId, authority: canonicalAuthority.urlString, scope: scopeSet.printScopes(), redirectUri: this.getRedirectUri(request.redirectUri), prompt: getPrompt(), correlationId: this.correlationId, tokenType: request.authenticationScheme, windowTitleSubstring: document.title, extraParameters: __assign(__assign(__assign({}, request.extraQueryParameters), request.tokenQueryParameters), { telemetry: NativeConstants.MATS_TELEMETRY }), extendedExpiryToken: false // Make this configurable?\r\n });\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 4];\r\n shrParameters = {\r\n resourceRequestUri: request.resourceRequestUri,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(shrParameters)];\r\n case 3:\r\n reqCnfData = _a.sent();\r\n // to reduce the URL length, it is recommended to send the short form of the req_cnf \r\n validatedRequest.reqCnf = reqCnfData.reqCnfString;\r\n validatedRequest.keyId = reqCnfData.kid;\r\n _a.label = 4;\r\n case 4: return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n return NativeInteractionClient;\r\n}(BaseInteractionClient));\n\nexport { NativeInteractionClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../../_virtual/_tslib.js';\nimport { NativeConstants, NativeExtensionMethod } from '../../utils/BrowserConstants.js';\nimport { AuthError, AuthenticationScheme, PerformanceEvents } from '@azure/msal-common';\nimport { NativeAuthError } from '../../error/NativeAuthError.js';\nimport { BrowserAuthError } from '../../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeMessageHandler = /** @class */ (function () {\r\n function NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient, extensionId) {\r\n this.logger = logger;\r\n this.handshakeTimeoutMs = handshakeTimeoutMs;\r\n this.extensionId = extensionId;\r\n this.resolvers = new Map(); // Used for non-handshake messages\r\n this.handshakeResolvers = new Map(); // Used for handshake messages\r\n this.responseId = 0;\r\n this.messageChannel = new MessageChannel();\r\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\r\n this.performanceClient = performanceClient;\r\n this.handshakeEvent = performanceClient.startMeasurement(PerformanceEvents.NativeMessageHandlerHandshake);\r\n }\r\n /**\r\n * Sends a given message to the extension and resolves with the extension response\r\n * @param body\r\n */\r\n NativeMessageHandler.prototype.sendMessage = function (body) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var req;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\r\n req = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: body\r\n };\r\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\r\n this.logger.tracePii(\"NativeMessageHandler - Sending request to browser extension: \" + JSON.stringify(req));\r\n this.messageChannel.port1.postMessage(req);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n _this.resolvers.set(req.responseId, { resolve: resolve, reject: reject });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\r\n * @param {Logger} logger\r\n * @param {number} handshakeTimeoutMs\r\n * @param {IPerformanceClient} performanceClient\r\n */\r\n NativeMessageHandler.createProvider = function (logger, handshakeTimeoutMs, performanceClient) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var preferredProvider, backupProvider;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n logger.trace(\"NativeMessageHandler - createProvider called.\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 5]);\r\n preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient, NativeConstants.PREFERRED_EXTENSION_ID);\r\n return [4 /*yield*/, preferredProvider.sendHandshakeRequest()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, preferredProvider];\r\n case 3:\r\n _a.sent();\r\n backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient);\r\n return [4 /*yield*/, backupProvider.sendHandshakeRequest()];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, backupProvider];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Send handshake request helper.\r\n */\r\n NativeMessageHandler.prototype.sendHandshakeRequest = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var req;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\r\n // Register this event listener before sending handshake\r\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\r\n req = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: {\r\n method: NativeExtensionMethod.HandshakeRequest\r\n }\r\n };\r\n this.handshakeEvent.addStaticFields({\r\n extensionId: this.extensionId,\r\n extensionHandshakeTimeoutMs: this.handshakeTimeoutMs\r\n });\r\n this.messageChannel.port1.onmessage = function (event) {\r\n _this.onChannelMessage(event);\r\n };\r\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n _this.handshakeResolvers.set(req.responseId, { resolve: resolve, reject: reject });\r\n _this.timeoutId = window.setTimeout(function () {\r\n /*\r\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\r\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\r\n */\r\n window.removeEventListener(\"message\", _this.windowListener, false);\r\n _this.messageChannel.port1.close();\r\n _this.messageChannel.port2.close();\r\n _this.handshakeEvent.endMeasurement({ extensionHandshakeTimedOut: true, success: false });\r\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\r\n _this.handshakeResolvers.delete(req.responseId);\r\n }, _this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\r\n * @param event\r\n */\r\n NativeMessageHandler.prototype.onWindowMessage = function (event) {\r\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\r\n // We only accept messages from ourselves\r\n if (event.source !== window) {\r\n return;\r\n }\r\n var request = event.data;\r\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\r\n return;\r\n }\r\n if (request.extensionId && request.extensionId !== this.extensionId) {\r\n return;\r\n }\r\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\r\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\r\n this.logger.verbose(request.extensionId ? \"Extension with id: \" + request.extensionId + \" not installed\" : \"No extension installed\");\r\n clearTimeout(this.timeoutId);\r\n this.messageChannel.port1.close();\r\n this.messageChannel.port2.close();\r\n window.removeEventListener(\"message\", this.windowListener, false);\r\n var handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n if (handshakeResolver) {\r\n this.handshakeEvent.endMeasurement({ success: false, extensionInstalled: false });\r\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\r\n }\r\n }\r\n };\r\n /**\r\n * Invoked when a message is received from the extension on the MessageChannel port\r\n * @param event\r\n */\r\n NativeMessageHandler.prototype.onChannelMessage = function (event) {\r\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\r\n var request = event.data;\r\n var resolver = this.resolvers.get(request.responseId);\r\n var handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n try {\r\n var method = request.body.method;\r\n if (method === NativeExtensionMethod.Response) {\r\n if (!resolver) {\r\n return;\r\n }\r\n var response = request.body.response;\r\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\r\n this.logger.tracePii(\"NativeMessageHandler - Received response from browser extension: \" + JSON.stringify(response));\r\n if (response.status !== \"Success\") {\r\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\r\n }\r\n else if (response.result) {\r\n if (response.result[\"code\"] && response.result[\"description\"]) {\r\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\r\n }\r\n else {\r\n resolver.resolve(response.result);\r\n }\r\n }\r\n else {\r\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\r\n }\r\n this.resolvers.delete(request.responseId);\r\n }\r\n else if (method === NativeExtensionMethod.HandshakeResponse) {\r\n if (!handshakeResolver) {\r\n return;\r\n }\r\n clearTimeout(this.timeoutId); // Clear setTimeout\r\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\r\n this.extensionId = request.extensionId;\r\n this.extensionVersion = request.body.version;\r\n this.logger.verbose(\"NativeMessageHandler - Received HandshakeResponse from extension: \" + this.extensionId);\r\n this.handshakeEvent.endMeasurement({ extensionInstalled: true, success: true });\r\n handshakeResolver.resolve();\r\n this.handshakeResolvers.delete(request.responseId);\r\n }\r\n // Do nothing if method is not Response or HandshakeResponse\r\n }\r\n catch (err) {\r\n this.logger.error(\"Error parsing response from WAM Extension\");\r\n this.logger.errorPii(\"Error parsing response from WAM Extension: \" + err.toString());\r\n this.logger.errorPii(\"Unable to parse \" + event);\r\n if (resolver) {\r\n resolver.reject(err);\r\n }\r\n else if (handshakeResolver) {\r\n handshakeResolver.reject(err);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the Id for the browser extension this handler is communicating with\r\n * @returns\r\n */\r\n NativeMessageHandler.prototype.getExtensionId = function () {\r\n return this.extensionId;\r\n };\r\n /**\r\n * Returns the version for the browser extension this handler is communicating with\r\n * @returns\r\n */\r\n NativeMessageHandler.prototype.getExtensionVersion = function () {\r\n return this.extensionVersion;\r\n };\r\n /**\r\n * Returns boolean indicating whether or not the request should attempt to use native broker\r\n * @param logger\r\n * @param config\r\n * @param nativeExtensionProvider\r\n * @param authenticationScheme\r\n */\r\n NativeMessageHandler.isNativeAvailable = function (config, logger, nativeExtensionProvider, authenticationScheme) {\r\n logger.trace(\"isNativeAvailable called\");\r\n if (!config.system.allowNativeBroker) {\r\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\r\n // Developer disabled WAM\r\n return false;\r\n }\r\n if (!nativeExtensionProvider) {\r\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\r\n // Extension is not available\r\n return false;\r\n }\r\n if (authenticationScheme) {\r\n switch (authenticationScheme) {\r\n case AuthenticationScheme.BEARER:\r\n case AuthenticationScheme.POP:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\r\n return true;\r\n default:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return NativeMessageHandler;\r\n}());\n\nexport { NativeMessageHandler };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, StringUtils, ClientAuthError, ServerError, AuthorityFactory } from '@azure/msal-common';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { TemporaryCacheKeys } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nvar InteractionHandler = /** @class */ (function () {\r\n function InteractionHandler(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n InteractionHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, authCodeResponse;\r\n return __generator(this, function (_a) {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromHash, this.authCodeRequest.correlationId);\r\n this.logger.verbose(\"InteractionHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n }\r\n catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromServer, this.authCodeRequest.correlationId);\r\n return [2 /*return*/, this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule)];\r\n });\r\n });\r\n };\r\n /**\r\n * Process auth code response from AAD\r\n * @param authCodeResponse\r\n * @param state\r\n * @param authority\r\n * @param networkModule\r\n * @returns\r\n */\r\n InteractionHandler.prototype.handleCodeResponseFromServer = function (authCodeResponse, state, authority, networkModule, validateNonce) {\r\n if (validateNonce === void 0) { validateNonce = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, this.authCodeRequest.correlationId);\r\n this.logger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n if (!authCodeResponse.cloud_instance_host_name) return [3 /*break*/, 2];\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.UpdateTokenEndpointAuthority, this.authCodeRequest.correlationId);\r\n return [4 /*yield*/, this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\r\n if (validateNonce) {\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n }\r\n authCodeResponse.state = requestState;\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n }\r\n else {\r\n cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n // Acquire token with retrieved code.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AuthClientAcquireToken, this.authCodeRequest.correlationId);\r\n return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];\r\n case 3:\r\n tokenResponse = _a.sent();\r\n this.browserStorage.cleanRequestByState(state);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates authority based on cloudInstanceHostname\r\n * @param cloudInstanceHostname\r\n * @param authority\r\n * @param networkModule\r\n */\r\n InteractionHandler.prototype.updateTokenEndpointAuthority = function (cloudInstanceHostname, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cloudInstanceAuthorityUri, cloudInstanceAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, this.authCodeRequest.correlationId);\r\n cloudInstanceAuthorityUri = \"https://\" + cloudInstanceHostname + \"/\" + authority.tenant + \"/\";\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options, this.logger, this.performanceClient, this.authCodeRequest.correlationId)];\r\n case 1:\r\n cloudInstanceAuthority = _a.sent();\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Looks up ccs creds in the cache\r\n */\r\n InteractionHandler.prototype.checkCcsCredentials = function () {\r\n // Look up ccs credential in temp cache\r\n var cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\r\n if (cachedCcsCred) {\r\n try {\r\n return JSON.parse(cachedCcsCred);\r\n }\r\n catch (e) {\r\n this.authModule.logger.error(\"Cache credential could not be parsed\");\r\n this.authModule.logger.errorPii(\"Cache credential could not be parsed: \" + cachedCcsCred);\r\n }\r\n }\r\n return null;\r\n };\r\n return InteractionHandler;\r\n}());\n\nexport { InteractionHandler };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { OIDC_DEFAULT_SCOPES, StringUtils, UrlString, Constants, AuthError, ThrottlingUtils, ProtocolUtils, PerformanceEvents } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserConstants, InteractionType, ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionHandler } from '../interaction_handler/InteractionHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PopupClient = /** @class */ (function (_super) {\r\n __extends(PopupClient, _super);\r\n function PopupClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n // Properly sets this reference for the unload event.\r\n _this.unloadWindow = _this.unloadWindow.bind(_this);\r\n _this.nativeStorage = nativeStorageImpl;\r\n return _this;\r\n }\r\n /**\r\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\r\n * @param request\r\n */\r\n PopupClient.prototype.acquireToken = function (request) {\r\n try {\r\n var popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority);\r\n var popupWindowAttributes = request.popupWindowAttributes || {};\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\r\n // Passes on popup position and dimensions if in request\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\r\n }\r\n else {\r\n // asyncPopups flag is set to false. Opens popup before acquiring token.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\r\n var popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\r\n }\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n PopupClient.prototype.logout = function (logoutRequest) {\r\n try {\r\n this.logger.verbose(\"logoutPopup called\");\r\n var validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n var popupName = this.generateLogoutPopupName(validLogoutRequest);\r\n var authority = logoutRequest && logoutRequest.authority;\r\n var mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\r\n var popupWindowAttributes = (logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.popupWindowAttributes) || {};\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true\");\r\n // Passes on popup position and dimensions if in request\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\r\n }\r\n else {\r\n // asyncPopups flag is set to false. Opens popup before logging out.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\r\n var popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\r\n }\r\n }\r\n catch (e) {\r\n // Since this function is synchronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n /**\r\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\r\n * @param validRequest\r\n * @param popupName\r\n * @param popup\r\n * @param popupWindowAttributes\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PopupClient.prototype.acquireTokenPopupAsync = function (request, popupName, popupWindowAttributes, popup) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, validRequest, authCodeRequest, authClient, isNativeBroker, fetchNativeAccountIdMeasurement, navigateUrl, interactionHandler, popupParameters, popupWindow, hash, serverParams, state_1, nativeInteractionClient, userRequestState, result, e_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"acquireTokenPopupAsync called\");\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Popup)];\r\n case 1:\r\n validRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 8, , 9]);\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(validRequest)];\r\n case 3:\r\n authCodeRequest = _a.sent();\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions)];\r\n case 4:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\r\n fetchNativeAccountIdMeasurement = void 0;\r\n if (isNativeBroker) {\r\n fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\r\n }\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, validRequest), { nativeBroker: isNativeBroker }))];\r\n case 5:\r\n navigateUrl = _a.sent();\r\n interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient);\r\n popupParameters = {\r\n popup: popup,\r\n popupName: popupName,\r\n popupWindowAttributes: popupWindowAttributes\r\n };\r\n popupWindow = this.initiateAuthRequest(navigateUrl, popupParameters);\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow: popupWindow }, null);\r\n return [4 /*yield*/, this.monitorPopupForHash(popupWindow)];\r\n case 6:\r\n hash = _a.sent();\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n state_1 = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\r\n // Remove throttle if it exists\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n // end measurement for server call with native brokering enabled\r\n if (fetchNativeAccountIdMeasurement) {\r\n fetchNativeAccountIdMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n }\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state_1).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, validRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state_1);\r\n })];\r\n }\r\n return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state_1, authClient.authority, this.networkClient)];\r\n case 7:\r\n result = _a.sent();\r\n return [2 /*return*/, result];\r\n case 8:\r\n e_1 = _a.sent();\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e_1;\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * @param validRequest\r\n * @param popupName\r\n * @param requestAuthority\r\n * @param popup\r\n * @param mainWindowRedirectUri\r\n * @param popupWindowAttributes\r\n */\r\n PopupClient.prototype.logoutPopupAsync = function (validRequest, popupName, popupWindowAttributes, requestAuthority, popup, mainWindowRedirectUri) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, authClient, logoutUri, popupWindow, navigationOptions, absoluteUrl, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"logoutPopupAsync called\");\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 5, , 6]);\r\n // Clear cache on logout\r\n return [4 /*yield*/, this.clearCacheOnLogout(validRequest.account)];\r\n case 2:\r\n // Clear cache on logout\r\n _a.sent();\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validRequest.correlationId);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, requestAuthority)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n logoutUri = authClient.getLogoutUri(validRequest);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\r\n popupWindow = this.openPopup(logoutUri, { popupName: popupName, popupWindowAttributes: popupWindowAttributes, popup: popup });\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow: popupWindow }, null);\r\n return [4 /*yield*/, this.waitForLogoutPopup(popupWindow)];\r\n case 4:\r\n _a.sent();\r\n if (mainWindowRedirectUri) {\r\n navigationOptions = {\r\n apiId: ApiId.logoutPopup,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\r\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\r\n this.logger.verbosePii(\"Redirecting main window to: \" + absoluteUrl);\r\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\r\n }\r\n else {\r\n this.logger.verbose(\"No main window navigation requested\");\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_2 = _a.sent();\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n if (e_2 instanceof AuthError) {\r\n e_2.setCorrelationId(this.correlationId);\r\n }\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e_2);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n serverTelemetryManager.cacheFailedRequest(e_2);\r\n throw e_2;\r\n case 6:\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n PopupClient.prototype.initiateAuthRequest = function (requestUrl, params) {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n this.logger.infoPii(\"Navigate to: \" + requestUrl);\r\n // Open the popup window to requestUrl.\r\n return this.openPopup(requestUrl, params);\r\n }\r\n else {\r\n // Throw error if request URL is empty.\r\n this.logger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n };\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - timeout for processing hash once popup is redirected back to application\r\n */\r\n PopupClient.prototype.monitorPopupForHash = function (popupWindow) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n /*\r\n * Polling for popups needs to be tick-based,\r\n * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\r\n */\r\n var maxTicks = _this.config.system.windowHashTimeout / _this.config.system.pollIntervalMilliseconds;\r\n var ticks = 0;\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - polling started\");\r\n var intervalId = setInterval(function () {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - window closed\");\r\n _this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n var hash = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n hash = popupWindow.location.hash;\r\n }\r\n catch (e) { }\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\");\r\n /*\r\n * Only run clock when we are on same domain for popups\r\n * as popup operations can take a long time.\r\n */\r\n ticks++;\r\n if (hash) {\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - found hash in url\");\r\n clearInterval(intervalId);\r\n _this.cleanPopup(popupWindow);\r\n if (UrlString.hashContainsKnownProperties(hash)) {\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - hash contains known properties, returning.\");\r\n resolve(hash);\r\n }\r\n else {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - found hash in url but it does not contain known properties. Check that your router is not changing the hash prematurely.\");\r\n _this.logger.errorPii(\"PopupHandler.monitorPopupForHash - hash found: \" + hash);\r\n reject(BrowserAuthError.createHashDoesNotContainKnownPropertiesError());\r\n }\r\n }\r\n else if (ticks > maxTicks) {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - unable to find hash in url, timing out\");\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorPopupTimeoutError());\r\n }\r\n }, _this.config.system.pollIntervalMilliseconds);\r\n });\r\n };\r\n /**\r\n * Waits for user interaction in logout popup window\r\n * @param popupWindow\r\n * @returns\r\n */\r\n PopupClient.prototype.waitForLogoutPopup = function (popupWindow) {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n _this.logger.verbose(\"PopupHandler.waitForLogoutPopup - polling started\");\r\n var intervalId = setInterval(function () {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n _this.logger.error(\"PopupHandler.waitForLogoutPopup - window closed\");\r\n _this.cleanPopup();\r\n clearInterval(intervalId);\r\n resolve();\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n }\r\n catch (e) { }\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n _this.logger.verbose(\"PopupHandler.waitForLogoutPopup - popup window is on same origin as caller, closing.\");\r\n clearInterval(intervalId);\r\n _this.cleanPopup(popupWindow);\r\n resolve();\r\n }, _this.config.system.pollIntervalMilliseconds);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @param popupWindowAttributes\r\n * @ignore\r\n * @hidden\r\n */\r\n PopupClient.prototype.openPopup = function (urlNavigate, popupParams) {\r\n try {\r\n var popupWindow = void 0;\r\n // Popup window passed in, setting url to navigate to\r\n if (popupParams.popup) {\r\n popupWindow = popupParams.popup;\r\n this.logger.verbosePii(\"Navigating popup window to: \" + urlNavigate);\r\n popupWindow.location.assign(urlNavigate);\r\n }\r\n else if (typeof popupParams.popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(\"Opening popup window to: \" + urlNavigate);\r\n popupWindow = this.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes);\r\n }\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n return popupWindow;\r\n }\r\n catch (e) {\r\n this.logger.error(\"error opening popup \" + e.message);\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw BrowserAuthError.createPopupWindowError(e.toString());\r\n }\r\n };\r\n /**\r\n * Helper function to set popup window dimensions and position\r\n * @param urlNavigate\r\n * @param popupName\r\n * @param popupWindowAttributes\r\n * @returns\r\n */\r\n PopupClient.prototype.openSizedPopup = function (urlNavigate, popupName, popupWindowAttributes) {\r\n var _a, _b, _c, _d;\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n var winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n var winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n var winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n var winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n var width = (_a = popupWindowAttributes.popupSize) === null || _a === void 0 ? void 0 : _a.width;\r\n var height = (_b = popupWindowAttributes.popupSize) === null || _b === void 0 ? void 0 : _b.height;\r\n var top = (_c = popupWindowAttributes.popupPosition) === null || _c === void 0 ? void 0 : _c.top;\r\n var left = (_d = popupWindowAttributes.popupPosition) === null || _d === void 0 ? void 0 : _d.left;\r\n if (!width || width < 0 || width > winWidth) {\r\n this.logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\r\n width = BrowserConstants.POPUP_WIDTH;\r\n }\r\n if (!height || height < 0 || height > winHeight) {\r\n this.logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\r\n height = BrowserConstants.POPUP_HEIGHT;\r\n }\r\n if (!top || top < 0 || top > winHeight) {\r\n this.logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\r\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n }\r\n if (!left || left < 0 || left > winWidth) {\r\n this.logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\r\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n }\r\n return window.open(urlNavigate, popupName, \"width=\" + width + \", height=\" + height + \", top=\" + top + \", left=\" + left + \", scrollbars=yes\");\r\n };\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n PopupClient.prototype.unloadWindow = function (e) {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n };\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n PopupClient.prototype.cleanPopup = function (popupWindow) {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n PopupClient.prototype.generatePopupName = function (scopes, authority) {\r\n return BrowserConstants.POPUP_NAME_PREFIX + \".\" + this.config.auth.clientId + \".\" + scopes.join(\"-\") + \".\" + authority + \".\" + this.correlationId;\r\n };\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId\r\n * @param request\r\n */\r\n PopupClient.prototype.generateLogoutPopupName = function (request) {\r\n var homeAccountId = request.account && request.account.homeAccountId;\r\n return BrowserConstants.POPUP_NAME_PREFIX + \".\" + this.config.auth.clientId + \".\" + homeAccountId + \".\" + this.correlationId;\r\n };\r\n return PopupClient;\r\n}(StandardInteractionClient));\n\nexport { PopupClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, ClientAuthError, ServerError } from '@azure/msal-common';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { TemporaryCacheKeys, ApiId } from '../utils/BrowserConstants.js';\nimport { InteractionHandler } from './InteractionHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RedirectHandler = /** @class */ (function (_super) {\r\n __extends(RedirectHandler, _super);\r\n function RedirectHandler(authCodeModule, storageImpl, authCodeRequest, logger, browserCrypto, performanceClient) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) || this;\r\n _this.browserCrypto = browserCrypto;\r\n return _this;\r\n }\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n RedirectHandler.prototype.initiateAuthRequest = function (requestUrl, params) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var navigationOptions, navigate;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n if (!!StringUtils.isEmpty(requestUrl)) return [3 /*break*/, 7];\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.logger.infoPii(\"RedirectHandler.initiateAuthRequest: Navigate to: \" + requestUrl);\r\n navigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n if (!(typeof params.onRedirectNavigate === \"function\")) return [3 /*break*/, 4];\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n navigate = params.onRedirectNavigate(requestUrl);\r\n if (!(navigate !== false)) return [3 /*break*/, 2];\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 2:\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return [2 /*return*/];\r\n case 3: return [3 /*break*/, 6];\r\n case 4:\r\n // Navigate window to request URL\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 6: return [3 /*break*/, 8];\r\n case 7:\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n RedirectHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, authCodeResponse, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n }\r\n catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n if (!authCodeResponse.cloud_instance_host_name) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n }\r\n else {\r\n cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];\r\n case 3:\r\n tokenResponse = _a.sent();\r\n this.browserStorage.cleanRequestByState(state);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n return RedirectHandler;\r\n}(InteractionHandler));\n\nexport { RedirectHandler };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { UrlString, AuthError, PerformanceEvents, Constants, ThrottlingUtils, ProtocolUtils } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { TemporaryCacheKeys, ApiId, InteractionType } from '../utils/BrowserConstants.js';\nimport { RedirectHandler } from '../interaction_handler/RedirectHandler.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RedirectClient = /** @class */ (function (_super) {\r\n __extends(RedirectClient, _super);\r\n function RedirectClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.nativeStorage = nativeStorageImpl;\r\n return _this;\r\n }\r\n /**\r\n * Redirects the page to the /authorize endpoint of the IDP\r\n * @param request\r\n */\r\n RedirectClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var validRequest, serverTelemetryManager, handleBackButton, authCodeRequest, authClient, interactionHandler, navigateUrl, redirectStartPage, e_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Redirect)];\r\n case 1:\r\n validRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\r\n handleBackButton = function (event) {\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n if (event.persisted) {\r\n _this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\r\n _this.browserStorage.cleanRequestByState(validRequest.state);\r\n _this.eventHandler.emitEvent(EventType.RESTORE_FROM_BFCACHE, InteractionType.Redirect);\r\n }\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 7, , 8]);\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(validRequest)];\r\n case 3:\r\n authCodeRequest = _a.sent();\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions)];\r\n case 4:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto, this.performanceClient);\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, validRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme) }))];\r\n case 5:\r\n navigateUrl = _a.sent();\r\n redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\r\n this.logger.verbosePii(\"Redirect start page: \" + redirectStartPage);\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n window.addEventListener(\"pageshow\", handleBackButton);\r\n return [4 /*yield*/, interactionHandler.initiateAuthRequest(navigateUrl, {\r\n navigationClient: this.navigationClient,\r\n redirectTimeout: this.config.system.redirectNavigationTimeout,\r\n redirectStartPage: redirectStartPage,\r\n onRedirectNavigate: request.onRedirectNavigate\r\n })];\r\n case 6: \r\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\r\n return [2 /*return*/, _a.sent()];\r\n case 7:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n window.removeEventListener(\"pageshow\", handleBackButton);\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e_1;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if navigateToLoginRequestUrl is set, and:\r\n * - if true, performs logic to cache and navigate\r\n * - if false, handles hash string and parses response\r\n * @param hash\r\n */\r\n RedirectClient.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, responseHash, state, serverParams, loginRequestUrl, loginRequestUrlNormalized, currentUrlNormalized, handleHashResult, navigationOptions, processHashOnRedirect, homepage, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 10, , 11]);\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n responseHash = this.getRedirectResponseHash(hash || window.location.hash);\r\n if (!responseHash) {\r\n // Not a recognized server response hash or hash not associated with a redirect request\r\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return [2 /*return*/, null];\r\n }\r\n state = void 0;\r\n try {\r\n serverParams = UrlString.getDeserializedHash(responseHash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);\r\n this.logger.verbose(\"State extracted from hash\");\r\n }\r\n catch (e) {\r\n this.logger.info(\"handleRedirectPromise was unable to extract state due to: \" + e);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return [2 /*return*/, null];\r\n }\r\n loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;\r\n loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\r\n currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\r\n if (!(loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl)) return [3 /*break*/, 3];\r\n // We are on the page we need to navigate to - handle hash\r\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\r\n return [4 /*yield*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n case 2:\r\n handleHashResult = _a.sent();\r\n if (loginRequestUrl.indexOf(\"#\") > -1) {\r\n // Replace current hash with non-msal hash, if present\r\n BrowserUtils.replaceHash(loginRequestUrl);\r\n }\r\n return [2 /*return*/, handleHashResult];\r\n case 3:\r\n if (!!this.config.auth.navigateToLoginRequestUrl) return [3 /*break*/, 4];\r\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\r\n return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n case 4:\r\n if (!(!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe)) return [3 /*break*/, 9];\r\n /*\r\n * Returned from authority using redirect - need to perform navigation before processing response\r\n * Cache the hash to be retrieved after the next redirect\r\n */\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\r\n navigationOptions = {\r\n apiId: ApiId.handleRedirectPromise,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: true\r\n };\r\n processHashOnRedirect = true;\r\n if (!(!loginRequestUrl || loginRequestUrl === \"null\")) return [3 /*break*/, 6];\r\n homepage = BrowserUtils.getHomepage();\r\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\r\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n return [4 /*yield*/, this.navigationClient.navigateInternal(homepage, navigationOptions)];\r\n case 5:\r\n processHashOnRedirect = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 6:\r\n // Navigate to page that initiated the redirect request\r\n this.logger.verbose(\"Navigating to loginRequestUrl: \" + loginRequestUrl);\r\n return [4 /*yield*/, this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions)];\r\n case 7:\r\n processHashOnRedirect = _a.sent();\r\n _a.label = 8;\r\n case 8:\r\n // If navigateInternal implementation returns false, handle the hash now\r\n if (!processHashOnRedirect) {\r\n return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n }\r\n _a.label = 9;\r\n case 9: return [2 /*return*/, null];\r\n case 10:\r\n e_2 = _a.sent();\r\n if (e_2 instanceof AuthError) {\r\n e_2.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_2);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n throw e_2;\r\n case 11: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets the response hash for a redirect request\r\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\r\n * @param hash\r\n */\r\n RedirectClient.prototype.getRedirectResponseHash = function (hash) {\r\n this.logger.verbose(\"getRedirectResponseHash called\");\r\n // Get current location hash from window or cache.\r\n var isResponseHash = UrlString.hashContainsKnownProperties(hash);\r\n if (isResponseHash) {\r\n BrowserUtils.clearHash(window);\r\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\r\n return hash;\r\n }\r\n var cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\r\n return cachedHash;\r\n };\r\n /**\r\n * Checks if hash exists and handles in window.\r\n * @param hash\r\n * @param state\r\n */\r\n RedirectClient.prototype.handleHash = function (hash, state, serverTelemetryManager) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedRequest, serverParams, nativeInteractionClient, userRequestState, currentAuthority, authClient, interactionHandler;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\r\n this.logger.verbose(\"handleHash called, retrieved cached request\");\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, cachedRequest.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, cachedRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state);\r\n })];\r\n }\r\n currentAuthority = this.browserStorage.getCachedAuthority(state);\r\n if (!currentAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, cachedRequest.correlationId);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, currentAuthority)];\r\n case 1:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\r\n interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto, this.performanceClient);\r\n return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n RedirectClient.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var validLogoutRequest, serverTelemetryManager, navigationOptions, authClient, logoutUri, navigate, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"logoutRedirect called\");\r\n validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 10, , 11]);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\r\n // Clear cache on logout\r\n return [4 /*yield*/, this.clearCacheOnLogout(validLogoutRequest.account)];\r\n case 2:\r\n // Clear cache on logout\r\n _a.sent();\r\n navigationOptions = {\r\n apiId: ApiId.logout,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validLogoutRequest.correlationId);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n logoutUri = authClient.getLogoutUri(validLogoutRequest);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\r\n if (!(logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\")) return [3 /*break*/, 7];\r\n navigate = logoutRequest.onRedirectNavigate(logoutUri);\r\n if (!(navigate !== false)) return [3 /*break*/, 5];\r\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 5:\r\n // Ensure interaction is not in progress\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\r\n _a.label = 6;\r\n case 6: return [3 /*break*/, 9];\r\n case 7:\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];\r\n case 8:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 9: return [3 /*break*/, 11];\r\n case 10:\r\n e_3 = _a.sent();\r\n if (e_3 instanceof AuthError) {\r\n e_3.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n throw e_3;\r\n case 11:\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use to get the redirectStartPage either from request or use current window\r\n * @param requestStartPage\r\n */\r\n RedirectClient.prototype.getRedirectStartPage = function (requestStartPage) {\r\n var redirectStartPage = requestStartPage || window.location.href;\r\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\r\n };\r\n return RedirectClient;\r\n}(StandardInteractionClient));\n\nexport { RedirectClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, StringUtils, Constants, UrlString } from '@azure/msal-common';\nimport { InteractionHandler } from './InteractionHandler.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from '../config/Configuration.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentHandler = /** @class */ (function (_super) {\r\n __extends(SilentHandler, _super);\r\n function SilentHandler(authCodeModule, storageImpl, authCodeRequest, logger, systemOptions, performanceClient) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) || this;\r\n _this.navigateFrameWait = systemOptions.navigateFrameWait;\r\n _this.pollIntervalMilliseconds = systemOptions.pollIntervalMilliseconds;\r\n return _this;\r\n }\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n SilentHandler.prototype.initiateAuthRequest = function (requestUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, this.authCodeRequest.correlationId);\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n if (!this.navigateFrameWait) return [3 /*break*/, 2];\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerLoadFrame, this.authCodeRequest.correlationId);\r\n return [4 /*yield*/, this.loadFrame(requestUrl)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/, this.loadFrameSync(requestUrl)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n SilentHandler.prototype.monitorIframeForHash = function (iframe, timeout) {\r\n var _this = this;\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, this.authCodeRequest.correlationId);\r\n return new Promise(function (resolve, reject) {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\n _this.logger.warning(\"system.loadFrameTimeout or system.iframeHashTimeout set to lower (\" + timeout + \"ms) than the default (\" + DEFAULT_IFRAME_TIMEOUT_MS + \"ms). This may result in timeouts.\");\r\n }\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n var nowMark = window.performance.now();\r\n var timeoutMark = nowMark + timeout;\r\n var intervalId = setInterval(function () {\r\n if (window.performance.now() > timeoutMark) {\r\n _this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n var contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n }\r\n catch (e) { }\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n var contentHash = contentWindow ? contentWindow.location.hash : Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n _this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, _this.pollIntervalMilliseconds);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n SilentHandler.prototype.loadFrame = function (urlNavigate) {\r\n var _this = this;\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, this.authCodeRequest.correlationId);\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n return new Promise(function (resolve, reject) {\r\n var frameHandle = _this.createHiddenIframe();\r\n setTimeout(function () {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n frameHandle.src = urlNavigate;\r\n resolve(frameHandle);\r\n }, _this.navigateFrameWait);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n SilentHandler.prototype.loadFrameSync = function (urlNavigate) {\r\n var frameHandle = this.createHiddenIframe();\r\n frameHandle.src = urlNavigate;\r\n return frameHandle;\r\n };\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n SilentHandler.prototype.createHiddenIframe = function () {\r\n var authFrame = document.createElement(\"iframe\");\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n return authFrame;\r\n };\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n SilentHandler.prototype.removeHiddenIframe = function (iframe) {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n };\r\n return SilentHandler;\r\n}(InteractionHandler));\n\nexport { SilentHandler };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __assign } from '../_virtual/_tslib.js';\nimport { DEFAULT_SYSTEM_OPTIONS, StubbedNetworkModule, Constants, ProtocolMode, AzureCloudInstance, LogLevel } from '@azure/msal-common';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { BrowserConstants, BrowserCacheLocation } from '../utils/BrowserConstants.js';\nimport { NavigationClient } from '../navigation/NavigationClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Default timeout for popup windows and iframes in milliseconds\r\nvar DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nvar DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nvar DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\nvar DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nfunction buildConfiguration(_a, isBrowserEnvironment) {\r\n var userInputAuth = _a.auth, userInputCache = _a.cache, userInputSystem = _a.system, userInputTelemetry = _a.telemetry;\r\n // Default auth options for browser\r\n var DEFAULT_AUTH_OPTIONS = {\r\n clientId: Constants.EMPTY_STRING,\r\n authority: \"\" + Constants.DEFAULT_AUTHORITY,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\r\n authorityMetadata: Constants.EMPTY_STRING,\r\n redirectUri: Constants.EMPTY_STRING,\r\n postLogoutRedirectUri: Constants.EMPTY_STRING,\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD,\r\n azureCloudOptions: {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: Constants.EMPTY_STRING\r\n },\r\n skipAuthorityMetadataCache: false,\r\n };\r\n // Default cache options for browser\r\n var DEFAULT_CACHE_OPTIONS = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n // Default cache migration to true if cache location is localStorage since entries are preserved across tabs/windows. Migration has little to no benefit in sessionStorage and memoryStorage\r\n cacheMigrationEnabled: userInputCache && userInputCache.cacheLocation === BrowserCacheLocation.LocalStorage ? true : false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n // Default logger options for browser\r\n var DEFAULT_LOGGER_OPTIONS = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: function () {\r\n // allow users to not set logger call back \r\n },\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n // Default system options for browser\r\n var DEFAULT_BROWSER_SYSTEM_OPTIONS = __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), { loggerOptions: DEFAULT_LOGGER_OPTIONS, networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule, navigationClient: new NavigationClient(), loadFrameTimeout: 0, \r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS, iframeHashTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS, navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0, redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, asyncPopups: false, allowRedirectInIframe: false, allowNativeBroker: false, nativeBrokerHandshakeTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.nativeBrokerHandshakeTimeout) || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS, cryptoOptions: {\r\n useMsrCrypto: false,\r\n entropy: undefined\r\n } });\r\n var providedSystemOptions = __assign(__assign({}, userInputSystem), { loggerOptions: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loggerOptions) || DEFAULT_LOGGER_OPTIONS });\r\n var DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: Constants.EMPTY_STRING,\r\n appVersion: Constants.EMPTY_STRING\r\n }\r\n };\r\n var overlayedConfig = {\r\n auth: __assign(__assign({}, DEFAULT_AUTH_OPTIONS), userInputAuth),\r\n cache: __assign(__assign({}, DEFAULT_CACHE_OPTIONS), userInputCache),\r\n system: __assign(__assign({}, DEFAULT_BROWSER_SYSTEM_OPTIONS), providedSystemOptions),\r\n telemetry: __assign(__assign({}, DEFAULT_TELEMETRY_OPTIONS), userInputTelemetry)\r\n };\r\n return overlayedConfig;\r\n}\n\nexport { DEFAULT_IFRAME_TIMEOUT_MS, DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, DEFAULT_POPUP_TIMEOUT_MS, DEFAULT_REDIRECT_TIMEOUT_MS, buildConfiguration };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthError, PerformanceEvents, Constants, StringUtils, PromptValue, UrlString, ProtocolUtils } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionType } from '../utils/BrowserConstants.js';\nimport { SilentHandler } from '../interaction_handler/SilentHandler.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentIframeClient = /** @class */ (function (_super) {\r\n __extends(SilentIframeClient, _super);\r\n function SilentIframeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.apiId = apiId;\r\n _this.nativeStorage = nativeStorageImpl;\r\n return _this;\r\n }\r\n /**\r\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session\r\n * @param request\r\n */\r\n SilentIframeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, silentRequest, serverTelemetryManager, authClient, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n this.logger.verbose(\"acquireTokenByIframe called\");\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n // Check that we have some SSO data\r\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\r\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\r\n }\r\n // Check that prompt is set to none or no_session, throw error if it is set to anything else.\r\n if (request.prompt && (request.prompt !== PromptValue.NONE) && (request.prompt !== PromptValue.NO_SESSION)) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\r\n }\r\n // Create silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(__assign(__assign({}, request), { prompt: request.prompt || PromptValue.NONE }), InteractionType.Silent)];\r\n case 1:\r\n silentRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientTokenHelper, request.correlationId);\r\n return [4 /*yield*/, this.silentTokenHelper(authClient, silentRequest).then(function (result) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: false,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: e_1 instanceof AuthError && e_1.errorCode || undefined,\r\n subErrorCode: e_1 instanceof AuthError && e_1.subError || undefined,\r\n success: false\r\n });\r\n throw e_1;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentIframeClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Helper which acquires an authorization code silently using a hidden iframe from given url\r\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\r\n * @param navigateUrl\r\n * @param userRequestScopes\r\n */\r\n SilentIframeClient.prototype.silentTokenHelper = function (authClient, silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authCodeRequest, navigateUrl, silentHandler, msalFrame, hash, serverParams, state, nativeInteractionClient, userRequestState;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, silentRequest.correlationId);\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, silentRequest.correlationId);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(silentRequest)];\r\n case 1:\r\n authCodeRequest = _a.sent();\r\n // Create authorize request url\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.GetAuthCodeUrl, silentRequest.correlationId);\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, silentRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme) }))];\r\n case 2:\r\n navigateUrl = _a.sent();\r\n silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);\r\n // Get the frame handle for the silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerInitiateAuthRequest, silentRequest.correlationId);\r\n return [4 /*yield*/, silentHandler.initiateAuthRequest(navigateUrl)];\r\n case 3:\r\n msalFrame = _a.sent();\r\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerMonitorIframeForHash, silentRequest.correlationId);\r\n return [4 /*yield*/, silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout)];\r\n case 4:\r\n hash = _a.sent();\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, this.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, silentRequest), { state: userRequestState, prompt: silentRequest.prompt || PromptValue.NONE })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state);\r\n })];\r\n }\r\n // Handle response from hash string\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromHash, silentRequest.correlationId);\r\n return [2 /*return*/, silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];\r\n }\r\n });\r\n });\r\n };\r\n return SilentIframeClient;\r\n}(StandardInteractionClient));\n\nexport { SilentIframeClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { PerformanceEvents, AuthError, RefreshTokenClient } from '@azure/msal-common';\nimport { ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentRefreshClient = /** @class */ (function (_super) {\r\n __extends(SilentRefreshClient, _super);\r\n function SilentRefreshClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Exchanges the refresh token for new tokens\r\n * @param request\r\n */\r\n SilentRefreshClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRequest, _a, acquireTokenMeasurement, serverTelemetryManager, refreshTokenClient;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, request.correlationId);\r\n _a = [__assign({}, request)];\r\n return [4 /*yield*/, this.initializeBaseRequest(request, request.account)];\r\n case 1:\r\n silentRequest = __assign.apply(void 0, _a.concat([_b.sent()]));\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n return [4 /*yield*/, this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 2:\r\n refreshTokenClient = _b.sent();\r\n this.logger.verbose(\"Refresh token client created\");\r\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\r\n .then(function (result) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch(function (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(_this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n throw e;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentRefreshClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Creates a Refresh Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n SilentRefreshClient.prototype.createRefreshTokenClient = function (serverTelemetryManager, authorityUrl, azureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new RefreshTokenClient(clientConfig, this.performanceClient)];\r\n }\r\n });\r\n });\r\n };\r\n return SilentRefreshClient;\r\n}(StandardInteractionClient));\n\nexport { SilentRefreshClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { AuthToken, CacheRecord, Authority, AccountEntity, IdTokenEntity, ScopeSet, AccessTokenEntity, RefreshTokenEntity, Constants } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Token cache manager\r\n */\r\nvar TokenCache = /** @class */ (function () {\r\n function TokenCache(configuration, storage, logger, cryptoObj) {\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n this.config = configuration;\r\n this.storage = storage;\r\n this.logger = logger;\r\n this.cryptoObj = cryptoObj;\r\n }\r\n // Move getAllAccounts here and cache utility APIs\r\n /**\r\n * API to load tokens to msal-browser cache.\r\n * @param request\r\n * @param response\r\n * @param options\r\n * @returns `AuthenticationResult` for the response that was loaded.\r\n */\r\n TokenCache.prototype.loadExternalTokens = function (request, response, options) {\r\n this.logger.info(\"TokenCache - loadExternalTokens called\");\r\n if (!response.id_token) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\r\n }\r\n var idToken = new AuthToken(response.id_token, this.cryptoObj);\r\n var cacheRecord;\r\n var authority;\r\n if (request.account) {\r\n var cacheRecordAccount = this.loadAccount(idToken, request.account.environment, undefined, undefined, request.account.homeAccountId);\r\n cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment));\r\n }\r\n else if (request.authority) {\r\n var authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\r\n var authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\r\n };\r\n authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);\r\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\r\n if (options.clientInfo) {\r\n this.logger.trace(\"TokenCache - homeAccountId from options\");\r\n var cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, options.clientInfo, authority.authorityType);\r\n cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));\r\n }\r\n else if (response.client_info) {\r\n this.logger.trace(\"TokenCache - homeAccountId from response\");\r\n var cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, response.client_info, authority.authorityType);\r\n cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\r\n }\r\n return this.generateAuthenticationResult(request, idToken, cacheRecord, authority);\r\n };\r\n /**\r\n * Helper function to load account to msal-browser cache\r\n * @param idToken\r\n * @param environment\r\n * @param clientInfo\r\n * @param authorityType\r\n * @param requestHomeAccountId\r\n * @returns `AccountEntity`\r\n */\r\n TokenCache.prototype.loadAccount = function (idToken, environment, clientInfo, authorityType, requestHomeAccountId) {\r\n var homeAccountId;\r\n if (requestHomeAccountId) {\r\n homeAccountId = requestHomeAccountId;\r\n }\r\n else if (authorityType !== undefined && clientInfo) {\r\n homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authorityType, this.logger, this.cryptoObj, idToken);\r\n }\r\n if (!homeAccountId) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Unexpected missing homeAccountId\");\r\n }\r\n var accountEntity = clientInfo ?\r\n AccountEntity.createAccount(clientInfo, homeAccountId, idToken, undefined, undefined, undefined, environment) :\r\n AccountEntity.createGenericAccount(homeAccountId, idToken, undefined, undefined, undefined, environment);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading account\");\r\n this.storage.setAccount(accountEntity);\r\n return accountEntity;\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load id tokens to msal-browser cache\r\n * @param idToken\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns `IdTokenEntity`\r\n */\r\n TokenCache.prototype.loadIdToken = function (idToken, homeAccountId, environment, tenantId) {\r\n var idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken.rawToken, this.config.auth.clientId, tenantId);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading id token\");\r\n this.storage.setIdTokenCredential(idTokenEntity);\r\n return idTokenEntity;\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load access tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns `AccessTokenEntity`\r\n */\r\n TokenCache.prototype.loadAccessToken = function (request, response, homeAccountId, environment, tenantId, options) {\r\n if (!response.access_token) {\r\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\r\n return null;\r\n }\r\n if (!response.expires_in) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\r\n }\r\n if (!options.extendedExpiresOn) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\r\n }\r\n var scopes = new ScopeSet(request.scopes).printScopes();\r\n var expiresOn = options.expiresOn || (response.expires_in + new Date().getTime() / 1000);\r\n var extendedExpiresOn = options.extendedExpiresOn;\r\n var accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading access token\");\r\n this.storage.setAccessTokenCredential(accessTokenEntity);\r\n return accessTokenEntity;\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load refresh tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param homeAccountId\r\n * @param environment\r\n * @returns `RefreshTokenEntity`\r\n */\r\n TokenCache.prototype.loadRefreshToken = function (request, response, homeAccountId, environment) {\r\n if (!response.refresh_token) {\r\n this.logger.verbose(\"TokenCache - No refresh token provided for caching\");\r\n return null;\r\n }\r\n var refreshTokenEntity = RefreshTokenEntity.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading refresh token\");\r\n this.storage.setRefreshTokenCredential(refreshTokenEntity);\r\n return refreshTokenEntity;\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to generate an `AuthenticationResult` for the result.\r\n * @param request\r\n * @param idTokenObj\r\n * @param cacheRecord\r\n * @param authority\r\n * @returns `AuthenticationResult`\r\n */\r\n TokenCache.prototype.generateAuthenticationResult = function (request, idTokenObj, cacheRecord, authority) {\r\n var _a, _b, _c;\r\n var accessToken = Constants.EMPTY_STRING;\r\n var responseScopes = [];\r\n var expiresOn = null;\r\n var extExpiresOn;\r\n if (cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.accessToken) {\r\n accessToken = cacheRecord.accessToken.secret;\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n }\r\n var uid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.oid) || (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.sub) || Constants.EMPTY_STRING;\r\n var tid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.tid) || Constants.EMPTY_STRING;\r\n return {\r\n authority: authority ? authority.canonicalAuthority : Constants.EMPTY_STRING,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: (cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.account) ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: true,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId || Constants.EMPTY_STRING,\r\n requestId: Constants.EMPTY_STRING,\r\n extExpiresOn: extExpiresOn,\r\n familyId: Constants.EMPTY_STRING,\r\n tokenType: ((_a = cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.accessToken) === null || _a === void 0 ? void 0 : _a.tokenType) || Constants.EMPTY_STRING,\r\n state: Constants.EMPTY_STRING,\r\n cloudGraphHostName: ((_b = cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.account) === null || _b === void 0 ? void 0 : _b.cloudGraphHostName) || Constants.EMPTY_STRING,\r\n msGraphHost: ((_c = cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.account) === null || _c === void 0 ? void 0 : _c.msGraphHost) || Constants.EMPTY_STRING,\r\n code: undefined,\r\n fromNativeBroker: false\r\n };\r\n };\r\n return TokenCache;\r\n}());\n\nexport { TokenCache };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthorizationCodeClient } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar HybridSpaAuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(HybridSpaAuthorizationCodeClient, _super);\r\n function HybridSpaAuthorizationCodeClient(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this.includeRedirectUri = false;\r\n return _this;\r\n }\r\n return HybridSpaAuthorizationCodeClient;\r\n}(AuthorizationCodeClient));\n\nexport { HybridSpaAuthorizationCodeClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthError, PerformanceEvents, Constants } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionType } from '../utils/BrowserConstants.js';\nimport { SilentHandler } from '../interaction_handler/SilentHandler.js';\nimport { HybridSpaAuthorizationCodeClient } from './HybridSpaAuthorizationCodeClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentAuthCodeClient = /** @class */ (function (_super) {\r\n __extends(SilentAuthCodeClient, _super);\r\n function SilentAuthCodeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.apiId = apiId;\r\n return _this;\r\n }\r\n /**\r\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\r\n * @param request\r\n */\r\n SilentAuthCodeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRequest, serverTelemetryManager, authCodeRequest, clientConfig, authClient, silentHandler, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\r\n // Auth code payload is required\r\n if (!request.code) {\r\n throw BrowserAuthError.createAuthCodeRequiredError();\r\n }\r\n // Create silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Silent)];\r\n case 1:\r\n silentRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n authCodeRequest = __assign(__assign({}, silentRequest), { code: request.code });\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, request.correlationId);\r\n return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, silentRequest.authority)];\r\n case 3:\r\n clientConfig = _a.sent();\r\n authClient = new HybridSpaAuthorizationCodeClient(clientConfig);\r\n this.logger.verbose(\"Auth code client created\");\r\n silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);\r\n // Handle auth code parameters from request\r\n return [2 /*return*/, silentHandler.handleCodeResponseFromServer({\r\n code: request.code,\r\n msgraph_host: request.msGraphHost,\r\n cloud_graph_host_name: request.cloudGraphHostName,\r\n cloud_instance_host_name: request.cloudInstanceHostName\r\n }, silentRequest.state, authClient.authority, this.networkClient, false)];\r\n case 4:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n throw e_1;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentAuthCodeClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n return SilentAuthCodeClient;\r\n}(StandardInteractionClient));\n\nexport { SilentAuthCodeClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserPerformanceMeasurement = /** @class */ (function () {\r\n function BrowserPerformanceMeasurement(name, correlationId) {\r\n this.correlationId = correlationId;\r\n this.measureName = BrowserPerformanceMeasurement.makeMeasureName(name, correlationId);\r\n this.startMark = BrowserPerformanceMeasurement.makeStartMark(name, correlationId);\r\n this.endMark = BrowserPerformanceMeasurement.makeEndMark(name, correlationId);\r\n }\r\n BrowserPerformanceMeasurement.makeMeasureName = function (name, correlationId) {\r\n return \"msal.measure.\" + name + \".\" + correlationId;\r\n };\r\n BrowserPerformanceMeasurement.makeStartMark = function (name, correlationId) {\r\n return \"msal.start.\" + name + \".\" + correlationId;\r\n };\r\n BrowserPerformanceMeasurement.makeEndMark = function (name, correlationId) {\r\n return \"msal.end.\" + name + \".\" + correlationId;\r\n };\r\n BrowserPerformanceMeasurement.supportsBrowserPerformance = function () {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.mark === \"function\" &&\r\n typeof window.performance.measure === \"function\" &&\r\n typeof window.performance.clearMarks === \"function\" &&\r\n typeof window.performance.clearMeasures === \"function\" &&\r\n typeof window.performance.getEntriesByName === \"function\";\r\n };\r\n /**\r\n * Flush browser marks and measurements.\r\n * @param {string} correlationId\r\n * @param {SubMeasurement} measurements\r\n */\r\n BrowserPerformanceMeasurement.flushMeasurements = function (correlationId, measurements) {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n measurements.forEach(function (measurement) {\r\n var measureName = BrowserPerformanceMeasurement.makeMeasureName(measurement.name, correlationId);\r\n var entriesForMeasurement = window.performance.getEntriesByName(measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n window.performance.clearMeasures(measureName);\r\n window.performance.clearMarks(BrowserPerformanceMeasurement.makeStartMark(measureName, correlationId));\r\n window.performance.clearMarks(BrowserPerformanceMeasurement.makeEndMark(measureName, correlationId));\r\n }\r\n });\r\n }\r\n catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.startMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.startMark);\r\n }\r\n catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.endMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.endMark);\r\n window.performance.measure(this.measureName, this.startMark, this.endMark);\r\n }\r\n catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.flushMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n var entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n var durationMs = entriesForMeasurement[0].duration;\r\n window.performance.clearMeasures(this.measureName);\r\n window.performance.clearMarks(this.startMark);\r\n window.performance.clearMarks(this.endMark);\r\n return durationMs;\r\n }\r\n }\r\n catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n return null;\r\n };\r\n return BrowserPerformanceMeasurement;\r\n}());\n\nexport { BrowserPerformanceMeasurement };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceClient } from '@azure/msal-common';\nimport { BrowserCrypto } from '../crypto/BrowserCrypto.js';\nimport { GuidGenerator } from '../crypto/GuidGenerator.js';\nimport { BrowserPerformanceMeasurement } from './BrowserPerformanceMeasurement.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserPerformanceClient = /** @class */ (function (_super) {\r\n __extends(BrowserPerformanceClient, _super);\r\n function BrowserPerformanceClient(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, cryptoOptions) {\r\n var _this = _super.call(this, clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) || this;\r\n _this.browserCrypto = new BrowserCrypto(_this.logger, cryptoOptions);\r\n _this.guidGenerator = new GuidGenerator(_this.browserCrypto);\r\n return _this;\r\n }\r\n BrowserPerformanceClient.prototype.startPerformanceMeasuremeant = function (measureName, correlationId) {\r\n return new BrowserPerformanceMeasurement(measureName, correlationId);\r\n };\r\n BrowserPerformanceClient.prototype.generateId = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n BrowserPerformanceClient.prototype.getPageVisibility = function () {\r\n var _a;\r\n return ((_a = document.visibilityState) === null || _a === void 0 ? void 0 : _a.toString()) || null;\r\n };\r\n BrowserPerformanceClient.prototype.deleteIncompleteSubMeasurements = function (inProgressEvent) {\r\n var rootEvent = this.eventsByCorrelationId.get(inProgressEvent.event.correlationId);\r\n var isRootEvent = rootEvent && rootEvent.eventId === inProgressEvent.event.eventId;\r\n var incompleteMeasurements = [];\r\n if (isRootEvent && (rootEvent === null || rootEvent === void 0 ? void 0 : rootEvent.incompleteSubMeasurements)) {\r\n rootEvent.incompleteSubMeasurements.forEach(function (subMeasurement) {\r\n incompleteMeasurements.push(__assign({}, subMeasurement));\r\n });\r\n }\r\n // Clean up remaining marks for incomplete sub-measurements\r\n if (incompleteMeasurements.length > 0) {\r\n BrowserPerformanceMeasurement.flushMeasurements(inProgressEvent.event.correlationId, incompleteMeasurements);\r\n }\r\n };\r\n BrowserPerformanceClient.prototype.supportsBrowserPerformanceNow = function () {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.now === \"function\";\r\n };\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n * Also captures browser page visibilityState.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {((event?: Partial) => PerformanceEvent| null)}\r\n */\r\n BrowserPerformanceClient.prototype.startMeasurement = function (measureName, correlationId) {\r\n var _this = this;\r\n // Capture page visibilityState and then invoke start/end measurement\r\n var startPageVisibility = this.getPageVisibility();\r\n var inProgressEvent = _super.prototype.startMeasurement.call(this, measureName, correlationId);\r\n return __assign(__assign({}, inProgressEvent), { endMeasurement: function (event) {\r\n var res = inProgressEvent.endMeasurement(__assign({ startPageVisibility: startPageVisibility, endPageVisibility: _this.getPageVisibility() }, event));\r\n _this.deleteIncompleteSubMeasurements(inProgressEvent);\r\n return res;\r\n }, discardMeasurement: function () {\r\n inProgressEvent.discardMeasurement();\r\n _this.deleteIncompleteSubMeasurements(inProgressEvent);\r\n inProgressEvent.measurement.flushMeasurement();\r\n } });\r\n };\r\n /**\r\n * Adds pre-queue time to preQueueTimeByCorrelationId map.\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @returns\r\n */\r\n BrowserPerformanceClient.prototype.setPreQueueTime = function (eventName, correlationId) {\r\n if (!this.supportsBrowserPerformanceNow()) {\r\n this.logger.trace(\"BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for \" + eventName);\r\n return;\r\n }\r\n if (!correlationId) {\r\n this.logger.trace(\"BrowserPerformanceClient: correlationId for \" + eventName + \" not provided, unable to set telemetry queue time\");\r\n return;\r\n }\r\n var preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId);\r\n /**\r\n * Manually complete queue measurement if there is an incomplete pre-queue event.\r\n * Incomplete pre-queue events are instrumentation bugs that should be fixed.\r\n */\r\n if (preQueueEvent) {\r\n this.logger.trace(\"BrowserPerformanceClient: Incomplete pre-queue \" + preQueueEvent.name + \" found\", correlationId);\r\n this.addQueueMeasurement(preQueueEvent.name, correlationId, undefined, true);\r\n }\r\n this.preQueueTimeByCorrelationId.set(correlationId, { name: eventName, time: window.performance.now() });\r\n };\r\n /**\r\n * Calculates and adds queue time measurement for given performance event.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n BrowserPerformanceClient.prototype.addQueueMeasurement = function (eventName, correlationId, queueTime, manuallyCompleted) {\r\n if (!this.supportsBrowserPerformanceNow()) {\r\n this.logger.trace(\"BrowserPerformanceClient: window performance API not available, unable to add queue measurement for \" + eventName);\r\n return;\r\n }\r\n if (!correlationId) {\r\n this.logger.trace(\"BrowserPerformanceClient: correlationId for \" + eventName + \" not provided, unable to add queue measurement\");\r\n return;\r\n }\r\n var preQueueTime = _super.prototype.getPreQueueTime.call(this, eventName, correlationId);\r\n if (!preQueueTime) {\r\n return;\r\n }\r\n var currentTime = window.performance.now();\r\n var resQueueTime = queueTime || _super.prototype.calculateQueuedTime.call(this, preQueueTime, currentTime);\r\n return _super.prototype.addQueueMeasurement.call(this, eventName, correlationId, resQueueTime, manuallyCompleted);\r\n };\r\n return BrowserPerformanceClient;\r\n}(PerformanceClient));\n\nexport { BrowserPerformanceClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, Constants, ServerError, InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from '@azure/msal-common';\nimport { DEFAULT_REQUEST, InteractionType, CacheLookupPolicy, ApiId, BrowserConstants } from '../utils/BrowserConstants.js';\nimport { ClientApplication } from './ClientApplication.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nvar PublicClientApplication = /** @class */ (function (_super) {\r\n __extends(PublicClientApplication, _super);\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n function PublicClientApplication(configuration) {\r\n var _this = _super.call(this, configuration) || this;\r\n _this.astsAsyncMeasurement = undefined;\r\n _this.activeSilentTokenRequests = new Map();\r\n // Register listener functions\r\n _this.trackPageVisibility = _this.trackPageVisibility.bind(_this);\r\n return _this;\r\n }\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n PublicClientApplication.prototype.loginRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginRedirect called\", correlationId);\r\n return [2 /*return*/, this.acquireTokenRedirect(__assign({ correlationId: correlationId }, (request || DEFAULT_REQUEST)))];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PublicClientApplication.prototype.loginPopup = function (request) {\r\n var correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginPopup called\", correlationId);\r\n return this.acquireTokenPopup(__assign({ correlationId: correlationId }, (request || DEFAULT_REQUEST)));\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, atsMeasurement, account, thumbprint, silentRequestKey, cachedResponse, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\r\n atsMeasurement.addStaticFields({\r\n cacheLookupPolicy: request.cacheLookupPolicy\r\n });\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\r\n account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n thumbprint = {\r\n clientId: this.config.auth.clientId,\r\n authority: request.authority || Constants.EMPTY_STRING,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: account.homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n silentRequestKey = JSON.stringify(thumbprint);\r\n cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\r\n if (typeof cachedResponse === \"undefined\") {\r\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenSilentAsync, correlationId);\r\n response = this.acquireTokenSilentAsync(__assign(__assign({}, request), { correlationId: correlationId }), account)\r\n .then(function (result) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atsMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache,\r\n isNativeBroker: result.fromNativeBroker,\r\n cacheLookupPolicy: request.cacheLookupPolicy,\r\n requestId: result.requestId,\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n this.activeSilentTokenRequests.set(silentRequestKey, response);\r\n return [2 /*return*/, response];\r\n }\r\n else {\r\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", correlationId);\r\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\r\n atsMeasurement.discardMeasurement();\r\n return [2 /*return*/, cachedResponse];\r\n }\r\n });\r\n });\r\n };\r\n PublicClientApplication.prototype.trackPageVisibility = function () {\r\n if (!this.astsAsyncMeasurement) {\r\n return;\r\n }\r\n this.logger.info(\"Perf: Visibility change detected\");\r\n this.astsAsyncMeasurement.increment({\r\n visibilityChangeCount: 1,\r\n });\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\r\n * @param {@link (SilentRequest:type)}\r\n * @param {@link (AccountInfo:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse}\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilentAsync = function (request, account) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result, silentRequest, silentCacheClient, silentRequest_1, requestWithCLP_1;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n this.astsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n (_a = this.astsAsyncMeasurement) === null || _a === void 0 ? void 0 : _a.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\", this.trackPageVisibility);\r\n if (!(NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId)) return [3 /*break*/, 1];\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\r\n silentRequest = __assign(__assign({}, request), { account: account });\r\n result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(function (e) { return __awaiter(_this, void 0, void 0, function () {\r\n var silentIframeClient;\r\n return __generator(this, function (_a) {\r\n // If native token acquisition fails for availability reasons fallback to web flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\r\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt\r\n silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n return [2 /*return*/, silentIframeClient.acquireToken(request)];\r\n }\r\n throw e;\r\n });\r\n }); });\r\n return [3 /*break*/, 3];\r\n case 1:\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\r\n silentCacheClient = this.createSilentCacheClient(request.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeSilentRequest, request.correlationId);\r\n return [4 /*yield*/, silentCacheClient.initializeSilentRequest(request, account)];\r\n case 2:\r\n silentRequest_1 = _b.sent();\r\n requestWithCLP_1 = __assign(__assign({}, request), { \r\n // set the request's CacheLookupPolicy to Default if it was not optionally passed in\r\n cacheLookupPolicy: request.cacheLookupPolicy || CacheLookupPolicy.Default });\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenFromCache, silentRequest_1.correlationId);\r\n result = this.acquireTokenFromCache(silentCacheClient, silentRequest_1, requestWithCLP_1).catch(function (cacheError) {\r\n if (requestWithCLP_1.cacheLookupPolicy === CacheLookupPolicy.AccessToken) {\r\n throw cacheError;\r\n }\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, silentRequest_1);\r\n _this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenByRefreshToken, silentRequest_1.correlationId);\r\n return _this.acquireTokenByRefreshToken(silentRequest_1, requestWithCLP_1).catch(function (refreshTokenError) {\r\n var isServerError = refreshTokenError instanceof ServerError;\r\n var isInteractionRequiredError = refreshTokenError instanceof InteractionRequiredAuthError;\r\n var rtNotFound = (refreshTokenError.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code);\r\n var isInvalidGrantError = (refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n if ((!isServerError ||\r\n !isInvalidGrantError ||\r\n isInteractionRequiredError ||\r\n requestWithCLP_1.cacheLookupPolicy === CacheLookupPolicy.AccessTokenAndRefreshToken ||\r\n requestWithCLP_1.cacheLookupPolicy === CacheLookupPolicy.RefreshToken)\r\n && (requestWithCLP_1.cacheLookupPolicy !== CacheLookupPolicy.Skip)\r\n && !rtNotFound) {\r\n throw refreshTokenError;\r\n }\r\n _this.logger.verbose(\"Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.\", request.correlationId);\r\n _this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenBySilentIframe, silentRequest_1.correlationId);\r\n return _this.acquireTokenBySilentIframe(silentRequest_1);\r\n });\r\n });\r\n _b.label = 3;\r\n case 3: return [2 /*return*/, result.then(function (response) {\r\n var _a;\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\r\n (_a = _this.astsAsyncMeasurement) === null || _a === void 0 ? void 0 : _a.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch(function (tokenRenewalError) {\r\n var _a;\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\r\n (_a = _this.astsAsyncMeasurement) === null || _a === void 0 ? void 0 : _a.endMeasurement({\r\n errorCode: tokenRenewalError.errorCode,\r\n subErrorCode: tokenRenewalError.subError,\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n }).finally(function () {\r\n document.removeEventListener(\"visibilitychange\", _this.trackPageVisibility);\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n return PublicClientApplication;\r\n}(ClientApplication));\n\nexport { PublicClientApplication };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { CryptoOps } from '../crypto/CryptoOps.js';\nimport { PerformanceEvents, Constants, InteractionRequiredAuthError, AuthError, ClientAuthError, PromptValue, Logger, StubPerformanceClient, DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common';\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from '../cache/BrowserCacheManager.js';\nimport { buildConfiguration } from '../config/Configuration.js';\nimport { InteractionType, ApiId, TemporaryCacheKeys, CacheLookupPolicy, BrowserCacheLocation } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { name, version } from '../packageMetadata.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { EventHandler } from '../event/EventHandler.js';\nimport { PopupClient } from '../interaction_client/PopupClient.js';\nimport { RedirectClient } from '../interaction_client/RedirectClient.js';\nimport { SilentIframeClient } from '../interaction_client/SilentIframeClient.js';\nimport { SilentRefreshClient } from '../interaction_client/SilentRefreshClient.js';\nimport { TokenCache } from '../cache/TokenCache.js';\nimport { NativeInteractionClient } from '../interaction_client/NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { SilentCacheClient } from '../interaction_client/SilentCacheClient.js';\nimport { SilentAuthCodeClient } from '../interaction_client/SilentAuthCodeClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserPerformanceClient } from '../telemetry/BrowserPerformanceClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ClientApplication = /** @class */ (function () {\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n function ClientApplication(configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n this.initialized = false;\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n // Initial hybrid spa map\r\n this.hybridAuthCodeResponses = new Map();\r\n // Initialize performance client\r\n this.performanceClient = this.isBrowserEnvironment ?\r\n new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application, this.config.system.cryptoOptions) :\r\n new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\r\n // Initialize the crypto class.\r\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient, this.config.system.cryptoOptions) : DEFAULT_CRYPTO_IMPLEMENTATION;\r\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\r\n // Initialize the browser storage class.\r\n this.browserStorage = this.isBrowserEnvironment ?\r\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\r\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n // initialize in memory storage for native flows\r\n var nativeCacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n cacheMigrationEnabled: false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger);\r\n // Initialize the token cache\r\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\r\n // Register listener functions\r\n this.trackPageVisibilityWithMeasurement = this.trackPageVisibilityWithMeasurement.bind(this);\r\n }\r\n /**\r\n * Initializer function to perform async startup tasks such as connecting to WAM extension\r\n */\r\n ClientApplication.prototype.initialize = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allowNativeBroker, initMeasurement, _a, e_1, claimsTokensRemovalMeasurement;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"initialize called\");\r\n if (this.initialized) {\r\n this.logger.info(\"initialize has already been called, exiting early.\");\r\n return [2 /*return*/];\r\n }\r\n allowNativeBroker = this.config.system.allowNativeBroker;\r\n initMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.InitializeClientApplication);\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\r\n if (!allowNativeBroker) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n _a = this;\r\n return [4 /*yield*/, NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout, this.performanceClient)];\r\n case 2:\r\n _a.nativeExtensionProvider = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _b.sent();\r\n this.logger.verbose(e_1);\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!!this.config.cache.claimsBasedCachingEnabled) return [3 /*break*/, 6];\r\n this.logger.verbose(\"Claims-based caching is disabled. Clearing the previous cache with claims\");\r\n claimsTokensRemovalMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.ClearTokensAndKeysWithClaims);\r\n return [4 /*yield*/, this.browserStorage.clearTokensAndKeysWithClaims()];\r\n case 5:\r\n _b.sent();\r\n claimsTokensRemovalMeasurement.endMeasurement({ success: true });\r\n _b.label = 6;\r\n case 6:\r\n this.initialized = true;\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\r\n initMeasurement.endMeasurement({ allowNativeBroker: allowNativeBroker, success: true });\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // #region Redirect Flow\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n ClientApplication.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var loggedInAccounts, redirectResponseKey, response, request, redirectResponse, nativeClient, correlationId, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n request = this.browserStorage.getCachedNativeRequest();\r\n redirectResponse = void 0;\r\n if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId);\r\n redirectResponse = nativeClient.handleRedirectPromise();\r\n }\r\n else {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\r\n correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\r\n redirectClient = this.createRedirectClient(correlationId);\r\n redirectResponse = redirectClient.handleRedirectPromise(hash);\r\n }\r\n response = redirectResponse.then(function (result) {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n return result;\r\n }).catch(function (e) {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n }\r\n else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return [2 /*return*/, null];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\r\n * the page, so any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, isLoggedIn, result, nativeClient, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\r\n result = nativeClient.acquireTokenRedirect(request).catch(function (e) {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var redirectClient = _this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n }\r\n else if (e instanceof InteractionRequiredAuthError) {\r\n _this.logger.verbose(\"acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow\");\r\n var redirectClient = _this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n }\r\n _this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n });\r\n }\r\n else {\r\n redirectClient = this.createRedirectClient(request.correlationId);\r\n result = redirectClient.acquireToken(request);\r\n }\r\n return [2 /*return*/, result.catch(function (e) {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Popup Flow\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenPopup = function (request) {\r\n var _this = this;\r\n var correlationId = this.getRequestCorrelationId(request);\r\n var atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\r\n try {\r\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n // If logged in, emit acquire token events\r\n var loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\r\n }\r\n var result;\r\n if (this.canUseNative(request)) {\r\n result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then(function (response) {\r\n _this.browserStorage.setInteractionInProgress(false);\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch(function (e) {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var popupClient = _this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n }\r\n else if (e instanceof InteractionRequiredAuthError) {\r\n _this.logger.verbose(\"acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow\");\r\n var popupClient = _this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n }\r\n _this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n });\r\n }\r\n else {\r\n var popupClient = this.createPopupClient(request.correlationId);\r\n result = popupClient.acquireToken(request);\r\n }\r\n return result.then(function (result) {\r\n /*\r\n * If logged in, emit acquire token events\r\n */\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n atPopupMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n }).catch(function (e) {\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n atPopupMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n });\r\n };\r\n ClientApplication.prototype.trackPageVisibilityWithMeasurement = function () {\r\n var measurement = this.ssoSilentMeasurement || this.acquireTokenByCodeAsyncMeasurement;\r\n if (!measurement) {\r\n return;\r\n }\r\n this.logger.info(\"Perf: Visibility change detected in \", measurement.event.name);\r\n measurement.increment({\r\n visibilityChangeCount: 1,\r\n });\r\n };\r\n // #endregion\r\n // #region Silent Flow\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.ssoSilent = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, validRequest, result, silentIframeClient;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n validRequest = __assign(__assign({}, request), { \r\n // will be PromptValue.NONE or PromptValue.NO_SESSION\r\n prompt: request.prompt, correlationId: correlationId });\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\r\n (_a = this.ssoSilentMeasurement) === null || _a === void 0 ? void 0 : _a.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\", this.trackPageVisibilityWithMeasurement);\r\n this.logger.verbose(\"ssoSilent called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\r\n if (this.canUseNative(validRequest)) {\r\n result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch(function (e) {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var silentIframeClient = _this.createSilentIframeClient(validRequest.correlationId);\r\n return silentIframeClient.acquireToken(validRequest);\r\n }\r\n throw e;\r\n });\r\n }\r\n else {\r\n silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\r\n result = silentIframeClient.acquireToken(validRequest);\r\n }\r\n return [2 /*return*/, result.then(function (response) {\r\n var _a, _b;\r\n _this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\r\n (_a = _this.ssoSilentMeasurement) === null || _a === void 0 ? void 0 : _a.addStaticFields({\r\n accessTokenSize: response.accessToken.length,\r\n idTokenSize: response.idToken.length\r\n });\r\n (_b = _this.ssoSilentMeasurement) === null || _b === void 0 ? void 0 : _b.endMeasurement({\r\n success: true,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch(function (e) {\r\n var _a;\r\n _this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\r\n (_a = _this.ssoSilentMeasurement) === null || _a === void 0 ? void 0 : _a.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n throw e;\r\n }).finally(function () {\r\n document.removeEventListener(\"visibilitychange\", _this.trackPageVisibilityWithMeasurement);\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\r\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\r\n * This API is not indended for normal authorization code acquisition and redemption.\r\n *\r\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\r\n *\r\n * @param request {@link AuthorizationCodeRequest}\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenByCode = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, atbcMeasurement, hybridAuthCode_1, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\r\n atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\r\n try {\r\n if (request.code && request.nativeAccountId) {\r\n // Throw error in case server returns both spa_code and spa_accountid in exchange for auth code.\r\n throw BrowserAuthError.createSpaCodeAndNativeAccountIdPresentError();\r\n }\r\n else if (request.code) {\r\n hybridAuthCode_1 = request.code;\r\n response = this.hybridAuthCodeResponses.get(hybridAuthCode_1);\r\n if (!response) {\r\n this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\r\n response = this.acquireTokenByCodeAsync(__assign(__assign({}, request), { correlationId: correlationId }))\r\n .then(function (result) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\r\n _this.hybridAuthCodeResponses.delete(hybridAuthCode_1);\r\n atbcMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atbcMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: result.fromNativeBroker,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.hybridAuthCodeResponses.delete(hybridAuthCode_1);\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\r\n atbcMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n this.hybridAuthCodeResponses.set(hybridAuthCode_1, response);\r\n }\r\n else {\r\n this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\r\n atbcMeasurement.discardMeasurement();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n else if (request.nativeAccountId) {\r\n if (this.canUseNative(request, request.nativeAccountId)) {\r\n return [2 /*return*/, this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch(function (e) {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n }\r\n throw e;\r\n })];\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\r\n }\r\n }\r\n catch (e) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\r\n atbcMeasurement.endMeasurement({\r\n errorCode: e instanceof AuthError && e.errorCode || undefined,\r\n subErrorCode: e instanceof AuthError && e.subError || undefined,\r\n success: false\r\n });\r\n throw e;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a SilentAuthCodeClient to redeem an authorization code.\r\n * @param request\r\n * @returns Result of the operation to redeem the authorization code\r\n */\r\n ClientApplication.prototype.acquireTokenByCodeAsync = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentAuthCodeClient, silentTokenResult;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\r\n this.acquireTokenByCodeAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCodeAsync, request.correlationId);\r\n (_a = this.acquireTokenByCodeAsyncMeasurement) === null || _a === void 0 ? void 0 : _a.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\", this.trackPageVisibilityWithMeasurement);\r\n silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\r\n return [4 /*yield*/, silentAuthCodeClient.acquireToken(request).then(function (response) {\r\n var _a;\r\n (_a = _this.acquireTokenByCodeAsyncMeasurement) === null || _a === void 0 ? void 0 : _a.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch(function (tokenRenewalError) {\r\n var _a;\r\n (_a = _this.acquireTokenByCodeAsyncMeasurement) === null || _a === void 0 ? void 0 : _a.endMeasurement({\r\n errorCode: tokenRenewalError.errorCode,\r\n subErrorCode: tokenRenewalError.subError,\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n }).finally(function () {\r\n document.removeEventListener(\"visibilitychange\", _this.trackPageVisibilityWithMeasurement);\r\n })];\r\n case 1:\r\n silentTokenResult = _b.sent();\r\n return [2 /*return*/, silentTokenResult];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Attempt to acquire an access token from the cache\r\n * @param silentCacheClient SilentCacheClient\r\n * @param commonRequest CommonSilentFlowRequest\r\n * @param silentRequest SilentRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n ClientApplication.prototype.acquireTokenFromCache = function (silentCacheClient, commonRequest, silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenFromCache, commonRequest.correlationId);\r\n switch (silentRequest.cacheLookupPolicy) {\r\n case CacheLookupPolicy.Default:\r\n case CacheLookupPolicy.AccessToken:\r\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\r\n return [2 /*return*/, silentCacheClient.acquireToken(commonRequest)];\r\n default:\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Attempt to acquire an access token via a refresh token\r\n * @param commonRequest CommonSilentFlowRequest\r\n * @param silentRequest SilentRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n ClientApplication.prototype.acquireTokenByRefreshToken = function (commonRequest, silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRefreshClient;\r\n return __generator(this, function (_a) {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, commonRequest.correlationId);\r\n switch (silentRequest.cacheLookupPolicy) {\r\n case CacheLookupPolicy.Default:\r\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\r\n case CacheLookupPolicy.RefreshToken:\r\n case CacheLookupPolicy.RefreshTokenAndNetwork:\r\n silentRefreshClient = this.createSilentRefreshClient(commonRequest.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentRefreshClientAcquireToken, commonRequest.correlationId);\r\n return [2 /*return*/, silentRefreshClient.acquireToken(commonRequest)];\r\n default:\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Attempt to acquire an access token via an iframe\r\n * @param request CommonSilentFlowRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n ClientApplication.prototype.acquireTokenBySilentIframe = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentIframeClient;\r\n return __generator(this, function (_a) {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenBySilentIframe, request.correlationId);\r\n silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n return [2 /*return*/, silentIframeClient.acquireToken(request)];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Logout\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest\r\n * @deprecated\r\n */\r\n ClientApplication.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\r\n return [2 /*return*/, this.logoutRedirect(__assign({ correlationId: correlationId }, logoutRequest))];\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutRedirect = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, redirectClient;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n redirectClient = this.createRedirectClient(correlationId);\r\n return [2 /*return*/, redirectClient.logout(logoutRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutPopup = function (logoutRequest) {\r\n try {\r\n var correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n var popupClient = this.createPopupClient(correlationId);\r\n return popupClient.logout(logoutRequest);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n // #endregion\r\n // #region Account APIs\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n ClientApplication.prototype.getAllAccounts = function () {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n };\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param username\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByUsername = function (username) {\r\n this.logger.trace(\"getAccountByUsername called\");\r\n if (!username) {\r\n this.logger.warning(\"getAccountByUsername: No username provided\");\r\n return null;\r\n }\r\n var account = this.browserStorage.getAccountInfoFilteredBy({ username: username });\r\n if (account) {\r\n this.logger.verbose(\"getAccountByUsername: Account matching username found, returning\");\r\n this.logger.verbosePii(\"getAccountByUsername: Returning signed-in accounts matching username: \" + username);\r\n return account;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByHomeId = function (homeAccountId) {\r\n this.logger.trace(\"getAccountByHomeId called\");\r\n if (!homeAccountId) {\r\n this.logger.warning(\"getAccountByHomeId: No homeAccountId provided\");\r\n return null;\r\n }\r\n var account = this.browserStorage.getAccountInfoFilteredBy({ homeAccountId: homeAccountId });\r\n if (account) {\r\n this.logger.verbose(\"getAccountByHomeId: Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(\"getAccountByHomeId: Returning signed-in accounts matching homeAccountId: \" + homeAccountId);\r\n return account;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByLocalId = function (localAccountId) {\r\n this.logger.trace(\"getAccountByLocalId called\");\r\n if (!localAccountId) {\r\n this.logger.warning(\"getAccountByLocalId: No localAccountId provided\");\r\n return null;\r\n }\r\n var account = this.browserStorage.getAccountInfoFilteredBy({ localAccountId: localAccountId });\r\n if (account) {\r\n this.logger.verbose(\"getAccountByLocalId: Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(\"getAccountByLocalId: Returning signed-in accounts matching localAccountId: \" + localAccountId);\r\n return account;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\r\n * @param account\r\n */\r\n ClientApplication.prototype.setActiveAccount = function (account) {\r\n this.browserStorage.setActiveAccount(account);\r\n };\r\n /**\r\n * Gets the currently active account\r\n */\r\n ClientApplication.prototype.getActiveAccount = function () {\r\n return this.browserStorage.getActiveAccount();\r\n };\r\n // #endregion\r\n // #region Helpers\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n *\r\n * @protected\r\n * @param {InteractionType} interactionType What kind of interaction is being used\r\n * @param {boolean} [setInteractionInProgress=true] Whether to set interaction in progress temp cache flag\r\n */\r\n ClientApplication.prototype.preflightBrowserEnvironmentCheck = function (interactionType, setInteractionInProgress) {\r\n if (setInteractionInProgress === void 0) { setInteractionInProgress = true; }\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\r\n this.preflightInteractiveRequest(setInteractionInProgress);\r\n }\r\n };\r\n /**\r\n * Preflight check for interactive requests\r\n *\r\n * @protected\r\n * @param {boolean} setInteractionInProgress Whether to set interaction in progress temp cache flag\r\n */\r\n ClientApplication.prototype.preflightInteractiveRequest = function (setInteractionInProgress) {\r\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Set interaction in progress temporary cache or throw if alread set.\r\n if (setInteractionInProgress) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n };\r\n /**\r\n * Acquire a token from native device (e.g. WAM)\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenNative = function (request, apiId, accountId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeClient;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"acquireTokenNative called\");\r\n if (!this.nativeExtensionProvider) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\r\n return [2 /*return*/, nativeClient.acquireToken(request)];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns boolean indicating if this request can use the native broker\r\n * @param request\r\n */\r\n ClientApplication.prototype.canUseNative = function (request, accountId) {\r\n this.logger.trace(\"canUseNative called\");\r\n if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\r\n this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\r\n return false;\r\n }\r\n if (request.prompt) {\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n case PromptValue.LOGIN:\r\n this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\r\n break;\r\n default:\r\n this.logger.trace(\"canUseNative: prompt = \" + request.prompt + \" is not compatible with native flow, returning false\");\r\n return false;\r\n }\r\n }\r\n if (!accountId && !this.getNativeAccountId(request)) {\r\n this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\r\n return false;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Get the native accountId from the account\r\n * @param request\r\n * @returns\r\n */\r\n ClientApplication.prototype.getNativeAccountId = function (request) {\r\n var account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\r\n return account && account.nativeAccountId || \"\";\r\n };\r\n /**\r\n * Returns new instance of the Popup Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createPopupClient = function (correlationId) {\r\n return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Redirect Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createRedirectClient = function (correlationId) {\r\n return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Iframe Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createSilentIframeClient = function (correlationId) {\r\n return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Cache Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentCacheClient = function (correlationId) {\r\n return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Refresh Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentRefreshClient = function (correlationId) {\r\n return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent AuthCode Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentAuthCodeClient = function (correlationId) {\r\n return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n ClientApplication.prototype.addEventCallback = function (callback) {\r\n return this.eventHandler.addEventCallback(callback);\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n ClientApplication.prototype.removeEventCallback = function (callbackId) {\r\n this.eventHandler.removeEventCallback(callbackId);\r\n };\r\n /**\r\n * Registers a callback to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n ClientApplication.prototype.addPerformanceCallback = function (callback) {\r\n return this.performanceClient.addPerformanceCallback(callback);\r\n };\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n ClientApplication.prototype.removePerformanceCallback = function (callbackId) {\r\n return this.performanceClient.removePerformanceCallback(callbackId);\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.enableAccountStorageEvents = function () {\r\n this.eventHandler.enableAccountStorageEvents();\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.disableAccountStorageEvents = function () {\r\n this.eventHandler.disableAccountStorageEvents();\r\n };\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n ClientApplication.prototype.getTokenCache = function () {\r\n return this.tokenCache;\r\n };\r\n /**\r\n * Returns the logger instance\r\n */\r\n ClientApplication.prototype.getLogger = function () {\r\n return this.logger;\r\n };\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n ClientApplication.prototype.setLogger = function (logger) {\r\n this.logger = logger;\r\n };\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n ClientApplication.prototype.initializeWrapperLibrary = function (sku, version) {\r\n // Validate the SKU passed in is one we expect\r\n this.browserStorage.setWrapperMetadata(sku, version);\r\n };\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n ClientApplication.prototype.setNavigationClient = function (navigationClient) {\r\n this.navigationClient = navigationClient;\r\n };\r\n /**\r\n * Returns the configuration object\r\n */\r\n ClientApplication.prototype.getConfiguration = function () {\r\n return this.config;\r\n };\r\n /**\r\n * Generates a correlation id for a request if none is provided.\r\n *\r\n * @protected\r\n * @param {?Partial} [request]\r\n * @returns {string}\r\n */\r\n ClientApplication.prototype.getRequestCorrelationId = function (request) {\r\n if (request === null || request === void 0 ? void 0 : request.correlationId) {\r\n return request.correlationId;\r\n }\r\n if (this.isBrowserEnvironment) {\r\n return this.browserCrypto.createNewGuid();\r\n }\r\n /*\r\n * Included for fallback for non-browser environments,\r\n * and to ensure this method always returns a string.\r\n */\r\n return Constants.EMPTY_STRING;\r\n };\r\n return ClientApplication;\r\n}());\n\nexport { ClientApplication };\n","import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, ViewChild, APP_INITIALIZER, NgModule } from '@angular/core';\nimport { Subject, BehaviorSubject, fromEvent } from 'rxjs';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n *\n * @abstract\n */\nimport * as ɵngcc0 from '@angular/core';\n\nconst _c0 = [\"ngxCookiebot\"];\nclass NgxCookiebotConfig {\n}\nif (false) {\n /** @type {?} */\n NgxCookiebotConfig.prototype.blockingMode;\n /** @type {?} */\n NgxCookiebotConfig.prototype.cbId;\n /** @type {?} */\n NgxCookiebotConfig.prototype.cdn;\n /** @type {?} */\n NgxCookiebotConfig.prototype.culture;\n /** @type {?} */\n NgxCookiebotConfig.prototype.framework;\n /** @type {?} */\n NgxCookiebotConfig.prototype.level;\n /** @type {?} */\n NgxCookiebotConfig.prototype.loadScript;\n /** @type {?} */\n NgxCookiebotConfig.prototype.type;\n /** @type {?} */\n NgxCookiebotConfig.prototype.widgetEnabled;\n /** @type {?} */\n NgxCookiebotConfig.prototype.widgetPosition;\n /** @type {?} */\n NgxCookiebotConfig.prototype.widgetDistanceVertical;\n /** @type {?} */\n NgxCookiebotConfig.prototype.widgetDistanceHorizontal;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction getWindow() {\n return window;\n}\n/**\n * Exposes the 'Cookiebot' object provided by the Cookiebot SDK\n * https://www.cookiebot.com/en/developer/\n */\nclass NgxCookiebotService {\n /**\n *\n * @param {?} cookiebotConfig\n */\n constructor(cookiebotConfig) {\n this.cookiebotConfig = cookiebotConfig;\n this._onAcceptCallback$ = new Subject();\n this.onAcceptCallback$ = this._onAcceptCallback$.asObservable();\n this._onDeclineCallback$ = new Subject();\n this.onDeclineCallback$ = this._onDeclineCallback$.asObservable();\n this._onDialogDisplayCallback$ = new Subject();\n this.onDialogDisplayCallback$ = this._onDialogDisplayCallback$.asObservable();\n this._onDialogInitCallback$ = new Subject();\n this.onDialogInitCallback$ = this._onDialogInitCallback$.asObservable();\n this._onLoadCallback$ = new Subject();\n this.onLoadCallback$ = this._onLoadCallback$.asObservable();\n this._onServiceReady$ = new BehaviorSubject(false);\n this.onServiceReady$ = this._onServiceReady$.asObservable();\n this._onTagsExecutedCallback$ = new Subject();\n this.onTagsExecutedCallback$ = this._onTagsExecutedCallback$.asObservable();\n this._window = new Subject();\n this._verifyConfig();\n this._window = getWindow();\n }\n /**\n *\n * @return {?}\n */\n init() {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n try {\n if (this.cookiebotConfig.loadScript !== false) {\n this._window.document.head.append(this._buildScriptTag());\n }\n }\n catch (e) {\n this._onServiceReady$.error(e);\n return resolve();\n }\n /** @type {?} */\n const scriptInjectionTimeout = setTimeout((/**\n * @return {?}\n */\n () => {\n this._onServiceReady$.error('Timed out');\n clearInterval(scriptInjectionCheckInterval);\n }), 30000);\n // 30 seconds\n /** @type {?} */\n const scriptInjectionCheckInterval = setInterval((/**\n * @return {?}\n */\n () => {\n // The Cookiebot people added and ID to the script tag\n // with the same name as the object it exposes\n // https://twitter.com/jacksdrobinson/status/1188152645032255491\n if (!(this._window.Cookiebot instanceof HTMLElement)) {\n this.cookiebot = this._window.Cookiebot;\n this._setUpCallbacks();\n this._setUpEventHandlers();\n clearInterval(scriptInjectionCheckInterval);\n clearTimeout(scriptInjectionTimeout);\n this._onServiceReady$.next(true);\n }\n }), 10);\n return resolve();\n }));\n }\n /**\n *\n * @private\n * @return {?}\n */\n _buildScriptTag() {\n /** @type {?} */\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.id = 'Cookiebot';\n script.src = 'https://consent.cookiebot.' + this.cookiebotConfig.cdn + '/uc.js';\n script.setAttribute('data-cbid', this.cookiebotConfig.cbId);\n if ('auto' === this.cookiebotConfig.blockingMode) {\n script.setAttribute('data-blockingmode', 'auto');\n }\n else {\n script.async = true;\n }\n if (this.cookiebotConfig.culture) {\n script.setAttribute('data-culture', this.cookiebotConfig.culture);\n }\n if (this.cookiebotConfig.framework) {\n script.setAttribute('data-framework', this.cookiebotConfig.framework);\n }\n if (this.cookiebotConfig.level) {\n script.setAttribute('data-level', this.cookiebotConfig.level);\n }\n if (this.cookiebotConfig.type) {\n script.setAttribute('data-type', this.cookiebotConfig.type);\n }\n if (this.cookiebotConfig.widgetEnabled) {\n script.setAttribute('data-widget-enabled', this.cookiebotConfig.widgetEnabled ? 'true' : 'false');\n }\n if (this.cookiebotConfig.widgetPosition) {\n script.setAttribute('data-widget-position', this.cookiebotConfig.widgetPosition);\n }\n if (this.cookiebotConfig.widgetDistanceVertical) {\n script.setAttribute('data-widget-distance-vertical', this.cookiebotConfig.widgetDistanceVertical.toString());\n }\n if (this.cookiebotConfig.widgetDistanceHorizontal) {\n script.setAttribute('data-widget-distance-horizontal', this.cookiebotConfig.widgetDistanceHorizontal.toString());\n }\n return script;\n }\n /**\n *\n * @private\n * @return {?}\n */\n _setUpCallbacks() {\n // @ts-ignore\n window.CookiebotCallback_OnAccept = (/**\n * @return {?}\n */\n () => {\n this._onAcceptCallback$.next();\n });\n // @ts-ignore\n window.CookiebotCallback_OnDecline = (/**\n * @return {?}\n */\n () => {\n this._onDeclineCallback$.next();\n });\n // @ts-ignore\n window.CookiebotCallback_OnDialogDisplay = (/**\n * @return {?}\n */\n () => {\n this._onDialogDisplayCallback$.next();\n });\n // @ts-ignore\n window.CookiebotCallback_OnDialogInit = (/**\n * @return {?}\n */\n () => {\n this._onDialogInitCallback$.next();\n });\n // @ts-ignore\n window.CookiebotCallback_OnLoad = (/**\n * @return {?}\n */\n () => {\n this._onLoadCallback$.next();\n });\n // @ts-ignore\n window.CookiebotCallback_OnTagsExecuted = (/**\n * @return {?}\n */\n () => {\n this._onTagsExecutedCallback$.next();\n });\n }\n /**\n *\n * @private\n * @return {?}\n */\n _setUpEventHandlers() {\n this.onAccept$ = fromEvent(this._window, 'CookiebotOnAccept');\n this.onConsentReady$ = fromEvent(this._window, 'CookiebotOnConsentReady');\n this.onDecline$ = fromEvent(this._window, 'CookiebotOnDecline');\n this.onDialogInit$ = fromEvent(this._window, 'CookiebotOnDialogInit');\n this.onDialogDisplay$ = fromEvent(this._window, 'CookiebotOnDialogDisplay');\n this.onLoad$ = fromEvent(this._window, 'CookiebotOnLoad');\n this.onTagsExecuted$ = fromEvent(this._window, 'CookiebotOnTagsExecuted');\n }\n /**\n *\n * @private\n * @return {?}\n */\n _verifyConfig() {\n if (typeof this.cookiebotConfig.loadScript !== 'boolean') {\n throw new Error('Wrong loadScript config value. Please provide a correct value in the Cookiebot config');\n }\n // Nothing to validate if script is manually set\n if (this.cookiebotConfig.loadScript === false) {\n return;\n }\n if (!this.cookiebotConfig.cdn || !['com', 'eu'].includes(this.cookiebotConfig.cdn)) {\n throw new Error('Wrong cdn config value. Please provide a correct value in the Cookiebot config');\n }\n if (!this.cookiebotConfig.cbId) {\n throw new Error('Wrong cbId config value. Please provide a correct value in the Cookiebot config');\n }\n if (!this.cookiebotConfig.blockingMode || !['auto', 'manual'].includes(this.cookiebotConfig.blockingMode)) {\n throw new Error('Wrong blockingMode config value. Please provide a correct value in the Cookiebot config');\n }\n }\n}\nNgxCookiebotService.ɵfac = function NgxCookiebotService_Factory(t) { return new (t || NgxCookiebotService)(ɵngcc0.ɵɵinject(NgxCookiebotConfig)); };\nNgxCookiebotService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgxCookiebotService, factory: NgxCookiebotService.ɵfac, providedIn: 'root' });\n/** @nocollapse */\nNgxCookiebotService.ctorParameters = () => [\n { type: NgxCookiebotConfig }\n];\n/** @nocollapse */ NgxCookiebotService.ngInjectableDef = ɵɵdefineInjectable({ factory: function NgxCookiebotService_Factory() { return new NgxCookiebotService(ɵɵinject(NgxCookiebotConfig)); }, token: NgxCookiebotService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxCookiebotService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: NgxCookiebotConfig }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgxCookiebotService.prototype.cookiebot;\n /** @type {?} */\n NgxCookiebotService.prototype.onAccept$;\n /** @type {?} */\n NgxCookiebotService.prototype.onLoad$;\n /** @type {?} */\n NgxCookiebotService.prototype.onConsentReady$;\n /** @type {?} */\n NgxCookiebotService.prototype.onDecline$;\n /** @type {?} */\n NgxCookiebotService.prototype.onDialogInit$;\n /** @type {?} */\n NgxCookiebotService.prototype.onDialogDisplay$;\n /** @type {?} */\n NgxCookiebotService.prototype.onTagsExecuted$;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype._onAcceptCallback$;\n /** @type {?} */\n NgxCookiebotService.prototype.onAcceptCallback$;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype._onDeclineCallback$;\n /** @type {?} */\n NgxCookiebotService.prototype.onDeclineCallback$;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype._onDialogDisplayCallback$;\n /** @type {?} */\n NgxCookiebotService.prototype.onDialogDisplayCallback$;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype._onDialogInitCallback$;\n /** @type {?} */\n NgxCookiebotService.prototype.onDialogInitCallback$;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype._onLoadCallback$;\n /** @type {?} */\n NgxCookiebotService.prototype.onLoadCallback$;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype._onServiceReady$;\n /** @type {?} */\n NgxCookiebotService.prototype.onServiceReady$;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype._onTagsExecutedCallback$;\n /** @type {?} */\n NgxCookiebotService.prototype.onTagsExecutedCallback$;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype._window;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotService.prototype.cookiebotConfig;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n *\n */\nclass NgxCookiebotComponent {\n /**\n *\n * @param {?} _ngxCookiebotConfig\n */\n constructor(_ngxCookiebotConfig) {\n this._ngxCookiebotConfig = _ngxCookiebotConfig;\n }\n /**\n *\n *\n * @return {?}\n */\n ngOnInit() {\n /** @type {?} */\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.id = 'CookieDeclaration';\n script.src =\n 'https://consent.cookiebot.' +\n this._ngxCookiebotConfig.cdn +\n '/' +\n this._ngxCookiebotConfig.cbId +\n '/cd.js';\n script.async = true;\n this.ngxCookiebotElement.nativeElement.append(script);\n }\n}\nNgxCookiebotComponent.ɵfac = function NgxCookiebotComponent_Factory(t) { return new (t || NgxCookiebotComponent)(ɵngcc0.ɵɵdirectiveInject(NgxCookiebotConfig)); };\nNgxCookiebotComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxCookiebotComponent, selectors: [[\"ngx-cookiebot-declaration\"]], viewQuery: function NgxCookiebotComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ngxCookiebotElement = _t.first);\n } }, decls: 2, vars: 0, consts: [[\"ngxCookiebot\", \"\"]], template: function NgxCookiebotComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", null, 0);\n } }, styles: [\"[_nghost-%COMP%] {display: block}\"] });\n/** @nocollapse */\nNgxCookiebotComponent.ctorParameters = () => [\n { type: NgxCookiebotConfig }\n];\nNgxCookiebotComponent.propDecorators = {\n ngxCookiebotElement: [{ type: ViewChild, args: ['ngxCookiebot', { static: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxCookiebotComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:component-selector\n selector: 'ngx-cookiebot-declaration',\n template: '
    ',\n styles: [':host {display: block}']\n }]\n }], function () { return [{ type: NgxCookiebotConfig }]; }, { ngxCookiebotElement: [{\n type: ViewChild,\n args: ['ngxCookiebot', { static: true }]\n }] }); })();\nif (false) {\n /** @type {?} */\n NgxCookiebotComponent.prototype.ngxCookiebotElement;\n /**\n * @type {?}\n * @private\n */\n NgxCookiebotComponent.prototype._ngxCookiebotConfig;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n *\n * @param {?} cookieBotService\n * @return {?}\n */\nfunction ngxCookiebotFactory(cookieBotService) {\n return (/**\n * @return {?}\n */\n () => {\n return cookieBotService.init();\n });\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n *\n */\nclass NgxCookiebotModule {\n /**\n * @param {?} cookiebotConfig\n * @return {?}\n */\n static forRoot(cookiebotConfig) {\n return {\n ngModule: NgxCookiebotModule,\n providers: [\n { provide: NgxCookiebotConfig, useClass: cookiebotConfig },\n { provide: NgxCookiebotService, useClass: NgxCookiebotService, deps: [NgxCookiebotConfig] },\n { provide: APP_INITIALIZER, useFactory: ngxCookiebotFactory, deps: [NgxCookiebotService], multi: true }\n ]\n };\n }\n}\nNgxCookiebotModule.ɵfac = function NgxCookiebotModule_Factory(t) { return new (t || NgxCookiebotModule)(); };\nNgxCookiebotModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxCookiebotModule });\nNgxCookiebotModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxCookiebotModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgxCookiebotComponent\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n NgxCookiebotComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxCookiebotModule, { declarations: function () { return [NgxCookiebotComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgxCookiebotComponent]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { NgxCookiebotComponent, NgxCookiebotConfig, NgxCookiebotModule, NgxCookiebotService, ngxCookiebotFactory as ɵa };\n\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { Locale } from '@core/enums/locale';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { environment } from '@env';\nimport { NgxCookiebotConfig } from '@halloverden/ngx-cookiebot';\nimport { getCulture } from '@shared/utils/locale-utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CookiebotConfigSerivce extends NgxCookiebotConfig {\n blockingMode: 'manual' = 'manual';\n cbId: string = environment.cookieBotId;\n cdn: 'com' | 'eu' | string = 'com';\n culture?: string;\n loadScript: boolean;\n\n constructor(appInitService: AppInitService, @Inject(LOCALE_ID) localeId: Locale) {\n super();\n this.loadScript = appInitService.Settings.ec.isCookieBotEnabled;\n this.culture = getCulture(localeId)?.substring(0, 2);\n }\n}\n","export enum PageCategory {\n home = 'home',\n hostSpecials = 'hostess-special-offers',\n about = 'about',\n startYourBusiness = 'start-your-business',\n host = 'host',\n customerOffersTop = 'customer-special-offers-top',\n customerOffersBottom = 'customer-special-offers-bottom',\n healthySavings = 'customer-special-offers-healthy-savings',\n collectAndSave = 'customer-special-offers-collect-and-save',\n regularCustomerSpecialOffers = 'regular-customer-special-offers',\n event = 'event',\n eventStaging1 = 'event-staging-1',\n eventStaging2 = 'event-staging-2',\n}\n","import { WebsiteMode } from '@core/enums/website-mode.enum';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as moment from 'moment';\nimport { selectWebsiteMode } from '../website-mode';\nimport { ConditionalContentState } from './conditional-content-state-models';\n\nexport const conditionalContentStateFeatureKey = 'conditionalContentState';\n\nexport const selectConditionalContentFeature = createFeatureSelector(\n conditionalContentStateFeatureKey,\n);\n\nexport const selectConditionalContent = (date: string) =>\n createSelector(\n selectConditionalContentFeature,\n selectWebsiteMode,\n /* eslint-disable indent*/\n (state: ConditionalContentState, websiteMode: WebsiteMode) =>\n state && state.conditionalContent\n ? state.conditionalContent.filter(\n (content) =>\n (Number(content.websiteMode) | websiteMode) === Number(content.websiteMode) &&\n filterByDate(date, content.startDate, content.endDate),\n )\n : null,\n /* eslint-enable indent*/\n );\n\nexport const selectConditionalContentByPageCategory = (pageCategory: string) =>\n createSelector(\n selectConditionalContentFeature,\n selectWebsiteMode,\n /* eslint-disable indent */\n (state: ConditionalContentState, websiteMode: WebsiteMode) =>\n state && state.conditionalContent\n ? state.conditionalContent.filter(\n (content) =>\n (Number(content.websiteMode) | websiteMode) === Number(content.websiteMode) &&\n content.pageCategories.some((category) => category.name === pageCategory),\n )\n : null,\n /* eslint-enable indent */\n );\n\nexport const selectConditionalContentState = createSelector(\n selectConditionalContentFeature,\n (state: ConditionalContentState) => (state ? state : null),\n);\n\nfunction filterByDate(date: string, startDate: string, endDate: string): boolean {\n if (date) {\n return moment.utc(date).isAfter(startDate) && moment.utc(date).isBefore(endDate);\n }\n return moment.utc().isAfter(startDate) && moment.utc().isBefore(endDate);\n}\n","import {\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { DEFAULT_PAGE_TITLE } from '@core/constants/page-title';\nimport {\n ConditionalContent,\n MetaPagePreviewImage,\n} from '@core/store/conditional-content/conditional-content-state-models';\n\n@Component({\n selector: 'app-conditional-content',\n template: '',\n styles: [],\n})\n// Please add container class to the wrapper div when using ConditionalContentComponent.\nexport class ConditionalContentComponent implements OnChanges, OnDestroy {\n @Input() conditionalContent: ConditionalContent[];\n\n constructor(\n private renderer: Renderer2,\n private el: ElementRef,\n private titleService: Title,\n private metaTagService: Meta,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.conditionalContent?.currentValue) {\n this.clearComponent();\n changes.conditionalContent.currentValue.forEach((content, index) => {\n if (\n index === 0 &&\n content.metaPagePreviewImage?.length &&\n content.metaPageTitle &&\n content.metaPageDescription\n ) {\n this.createMetaElement(\n content.metaPageTitle,\n content.metaPageDescription,\n content.metaPagePreviewImage[0],\n );\n }\n this.createDivElement(content.content);\n this.createScriptElement(content.codeInjection);\n this.createStyleElement(content.styleInjection);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.titleService.setTitle(DEFAULT_PAGE_TITLE);\n }\n\n private clearComponent(): void {\n this.renderer.selectRootElement(this.el.nativeElement).innerHTML = '';\n }\n\n private createDivElement(content: string): void {\n const div = this.renderer.createElement('div');\n div.innerHTML = content;\n this.renderer.appendChild(this.el.nativeElement, div);\n }\n\n private createScriptElement(codeInjection: string): void {\n const script = this.renderer.createElement('script');\n script.innerHTML = codeInjection;\n this.renderer.appendChild(this.el.nativeElement, script);\n }\n\n private createStyleElement(styleInjection: string): void {\n const style = this.renderer.createElement('style');\n style.innerHTML = styleInjection;\n this.renderer.appendChild(this.el.nativeElement, style);\n }\n\n private createMetaElement(\n metaPageTitle: string,\n metaPageDescription: string,\n metaPagePreviewImage: MetaPagePreviewImage,\n ): void {\n this.titleService.setTitle(metaPageTitle);\n this.metaTagService.updateTag({ name: 'description', content: metaPageDescription });\n this.metaTagService.updateTag({ name: 'og:image', content: metaPagePreviewImage.url });\n }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\nimport { ConditionalContent } from '@core/store/conditional-content/conditional-content-state-models';\nimport {\n localizeAbsoluteLinks,\n localizeRelativeLinks,\n} from '@shared/utils/localize-relative-links';\nimport { Locale } from 'moment';\n\n@Pipe({\n name: 'localizeAbsUrls',\n})\nexport class LocalizeAbsUrlsPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private localeId: Locale) {}\n\n transform(value: ConditionalContent[]): ConditionalContent[] {\n const result: ConditionalContent[] = [];\n value.forEach((element) => {\n element.content = localizeAbsoluteLinks(\n localizeRelativeLinks(element.content, this.localeId),\n this.localeId,\n );\n result.push(element);\n });\n\n return result;\n }\n}\n","export enum UrlVariable {\n Ec1StartYourBusinessUrl = '#ec1StartYourBusinessUrl#',\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\nimport { SafeResourceUrl } from '@angular/platform-browser';\nimport { LocaleLid } from '@core/enums/locale';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { UrlVariable } from '@core/enums/url-variable.enum';\nimport { ConditionalContent } from '@core/store/conditional-content/conditional-content-state-models';\nimport { environment } from '@env';\nimport { Locale } from 'moment';\n\n@Pipe({\n name: 'fillUrls',\n})\nexport class FillUrlsPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private localeId: Locale) {}\n\n transform(value: ConditionalContent[]): SafeResourceUrl {\n const result = this.fillEc1StartYourBusinessUrl(value);\n\n return result;\n }\n\n private fillEc1StartYourBusinessUrl(\n conditionalContents: ConditionalContent[],\n ): ConditionalContent[] {\n const result: ConditionalContent[] = [];\n const cid = new URLSearchParams(window.location.search).get(RouterQueryParams.cid);\n\n conditionalContents.forEach((element) => {\n let content = element.content.replaceAll(\n UrlVariable.Ec1StartYourBusinessUrl,\n `${environment.ec1StartYourBusinessUrl}${cid ? cid : ''}?lid=${\n LocaleLid[String(this.localeId)]\n }`,\n );\n\n result.push({ ...element, content });\n });\n\n return result;\n }\n}\n","\n \n\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PageCategory } from '@core/enums/page-category.enum';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppState } from '@core/store';\nimport { selectConditionalContentByPageCategory } from '@core/store/conditional-content';\nimport { ConditionalContent } from '@core/store/conditional-content/conditional-content-state-models';\nimport {\n fetchConditionalContentByPageCategory,\n resetConditionalContentState,\n} from '@core/store/conditional-content/conditional-content.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-conditional-content-by-page-category',\n templateUrl: './conditional-content-by-page-category.component.html',\n styleUrls: ['./conditional-content-by-page-category.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConditionalContentByPageCategoryComponent implements OnInit, OnDestroy {\n @Input() pageCategory: PageCategory;\n\n pageTemplate$: Observable;\n subscriptions: Subscription = new Subscription();\n\n constructor(private store$: Store, private activatedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.activatedRoute.queryParamMap.subscribe((queryParamMap) => {\n const viewAs = queryParamMap.get(RouterQueryParams.viewAs);\n this.store$.dispatch(\n fetchConditionalContentByPageCategory({ pageCategory: this.pageCategory, viewAs }),\n );\n this.loadPageTemplate(this.pageCategory);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.store$.dispatch(resetConditionalContentState());\n }\n\n private loadPageTemplate(pageCategory: string) {\n this.pageTemplate$ = this.store$.select(selectConditionalContentByPageCategory(pageCategory));\n }\n}\n","
    \n
    \n \n
    \n\n \n \n \n\n \n

    No customer special offers found.

    \n
    \n\n \n \n\n \n
    \n \n \n
    \n \n\n \n
    \n \n \n
    \n \n\n \n \n\n \n
    \n \n \n
    \n \n\n \n \n\n \n
    \n \n \n
    \n \n\n \n \n \n\n\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PageCategory } from '@core/enums/page-category.enum';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppState } from '@core/store';\nimport { addToCart } from '@core/store/cart/cart.actions';\nimport {\n selectCollectAndSaveCustomerSpecialOffers,\n selectCustomerSpecialOffersLoading,\n selectEcommerceCustomerSpecialOffers,\n selectHealthySavingsCustomerSpecialOffers,\n selectRegularCustomerSpecialOffers,\n} from '@core/store/product';\nimport { ProductItem } from '@core/store/product/product-state-models';\nimport {\n fetchCollectAndSaveCustomerSpecialOffers,\n fetchEcommerceCustomerSpecialOffers,\n fetchHealthySavingsCustomerSpecialOffers,\n fetchProductQuickView,\n fetchRegularCustomerSpecialOffers,\n} from '@core/store/product/product.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n templateUrl: './customer-specials-page.component.html',\n styleUrls: ['./customer-specials-page.component.scss'],\n})\nexport class CustomerSpecialsPageComponent implements OnInit {\n readonly PageCategoryTop: PageCategory = PageCategory.customerOffersTop;\n readonly PageCategoryBottom: PageCategory = PageCategory.customerOffersBottom;\n readonly HealthySavingsPageCategory: PageCategory = PageCategory.healthySavings;\n readonly CollectAndSavePageCategory: PageCategory = PageCategory.collectAndSave;\n readonly RegularCustomerSpecialOffersPageCategory: PageCategory =\n PageCategory.regularCustomerSpecialOffers;\n ecommerceCustomerSpecialOffers$: Observable;\n healthySavingsCustomerSpecialOffers$: Observable;\n collectAndSaveCustomerSpecialOffers$: Observable;\n regularCustomerSpecialOffers$: Observable;\n loading$: Observable;\n\n private viewAs: string;\n\n constructor(\n private store$: Store,\n private route: ActivatedRoute,\n ) {\n this.viewAs = this.route.snapshot.queryParamMap.get(RouterQueryParams.viewAs);\n }\n\n ngOnInit(): void {\n this.fetchAndSelectCustomerOffers();\n\n this.loading$ = this.store$.select(selectCustomerSpecialOffersLoading);\n }\n\n addToCart = (product: ProductItem): void => {\n this.store$.dispatch(\n addToCart({\n payload: {\n images: product.primaryImages,\n collection: product.collection,\n productName: product.name,\n sku: product.sku,\n discountedPrice: product.discountedPrice,\n price: product.price,\n quantity: 1,\n categoryNames: product.categoryNames,\n type: product.type,\n isPFASItem: product.isPFASItem,\n },\n }),\n );\n };\n\n openQuickView = (sku: string): void => {\n this.store$.dispatch(fetchProductQuickView({ sku }));\n };\n\n private fetchAndSelectCustomerOffers(): void {\n this.store$.dispatch(fetchEcommerceCustomerSpecialOffers({ viewAs: this.viewAs }));\n this.ecommerceCustomerSpecialOffers$ = this.store$.select(selectEcommerceCustomerSpecialOffers);\n\n this.store$.dispatch(fetchHealthySavingsCustomerSpecialOffers({ viewAs: this.viewAs }));\n this.healthySavingsCustomerSpecialOffers$ = this.store$.select(\n selectHealthySavingsCustomerSpecialOffers,\n );\n\n this.store$.dispatch(fetchCollectAndSaveCustomerSpecialOffers({ viewAs: this.viewAs }));\n this.collectAndSaveCustomerSpecialOffers$ = this.store$.select(\n selectCollectAndSaveCustomerSpecialOffers,\n );\n\n this.store$.dispatch(fetchRegularCustomerSpecialOffers({ viewAs: this.viewAs }));\n this.regularCustomerSpecialOffers$ = this.store$.select(selectRegularCustomerSpecialOffers);\n }\n}\n","export const DateFormat = {\n DayMonthNameYear: 'd-MMMM-y',\n MonthDayYear: 'MM/DD/yyyy',\n};\n","import { DateFormat } from '@core/constants/date-format';\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\nimport moment from 'moment';\nimport { MagazineState } from './magazine.reducer';\n\nexport const magazineStateFeatureKey = 'magazineState';\n\nexport const selectMagazineFeature = createFeatureSelector(magazineStateFeatureKey);\n\nexport const selectMagazines = (date: string = null) => {\n const _date = date ? date : moment(new Date()).format(DateFormat.MonthDayYear);\n return createSelector(selectMagazineFeature, (state: MagazineState) =>\n state ? state.items.filter((i) => moment.utc(_date).isBetween(i.startDate, i.endDate)) : null,\n );\n};\n\nexport const selectIsAllMagazinesFetched = createSelector(\n selectMagazineFeature,\n (state: MagazineState) => (state ? state.isAllFetched : false),\n);\n","\n
    \n \n \n
    \n Publications\n Browse our latest +More Magazines and Collection Books\n
    \n
    \n
    \n
    \n
    \n
    \n \n {{ magazineItem.type }}\n {{ magazineItem.name }}\n
    \n
    \n
    \n
    \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppState } from '@core/store';\nimport { selectIsAllMagazinesFetched, selectMagazines } from '@core/store/magazine';\nimport { Magazine } from '@core/store/magazine/magazine-state-models';\nimport * as magazineActions from '@core/store/magazine/magazine.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-magazine-list',\n templateUrl: './magazine-list.component.html',\n styleUrls: ['./magazine-list.component.scss'],\n})\nexport class MagazineListComponent implements OnInit, OnDestroy {\n magazines$: Observable;\n\n private readonly magazineFetchPageSize: number = 6;\n\n private isAllMagazinesFetched: Boolean = false;\n private nextFetchShouldStartFrom: number = 0;\n\n private storeSubject: Subject = new Subject();\n\n constructor(private store$: Store, private route: ActivatedRoute) {}\n\n ngOnInit(): void {\n const viewAs = this.route.snapshot.queryParamMap.get(RouterQueryParams.viewAs);\n this.magazines$ = this.store$.select(selectMagazines(viewAs));\n this.store$\n .select(selectIsAllMagazinesFetched)\n .pipe(takeUntil(this.storeSubject))\n .subscribe((x) => (this.isAllMagazinesFetched = x));\n\n this.nextFetchShouldStartFrom = 0;\n this.fetchNextPage();\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(magazineActions.resetMagazineStore());\n this.storeSubject.next();\n this.storeSubject.complete();\n }\n\n public onScrollDown(): void {\n if (this.isAllMagazinesFetched) {\n return;\n }\n\n this.nextFetchShouldStartFrom += this.magazineFetchPageSize;\n this.fetchNextPage();\n }\n\n private fetchNextPage(): void {\n this.store$.dispatch(\n magazineActions.fetchMagazinesPage({\n pageStart: this.nextFetchShouldStartFrom,\n pageSize: this.magazineFetchPageSize,\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AppInitService } from './app-init.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PartyOrderPaymentFeatureGuardService implements CanActivate {\n constructor(\n private router: Router,\n private appInitService: AppInitService,\n ) {}\n\n canActivate(): boolean {\n if (this.appInitService.Settings.ec.isPartyOrderPaymentEnabled) {\n return true;\n } else {\n this.router.navigateByUrl('/');\n return false;\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { resetCurrentConsultant } from '@core/store/consultant/consultant.actions';\nimport { Store } from '@ngrx/store';\n\n@Component({\n templateUrl: './clear-consultant.component.html',\n})\nexport class ClearConsultantComponent implements OnInit {\n constructor(private store$: Store, private router: Router) {}\n\n ngOnInit(): void {\n this.store$.dispatch(resetCurrentConsultant());\n this.router.navigate(['..']);\n }\n}\n","

    Clearing consultant...

    \n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { ContactUsState } from './contact-us-state-models';\n\nexport const contactUsFeatureKey = 'contactUsState';\n\nexport const selectContactUsStateFeature =\n createFeatureSelector(contactUsFeatureKey);\n\nexport const selectContactUsSendingMessage = createSelector(\n selectContactUsStateFeature,\n (state: ContactUsState) => (state ? state.sendingMessage : null),\n);\n","\n \n \n \n\n \n
    \n \n
    \n
    \n\n \n \n \n\n \n \n \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { selectContactUsSendingMessage } from '@core/store/contact-us';\nimport { SendingContactUsMessage } from '@core/store/contact-us/contact-us-state-models';\nimport { resetContactUsState } from '@core/store/contact-us/contact-us.actions';\nimport { Store } from '@ngrx/store';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable } from 'rxjs';\n\nexport enum ContactUsReasonKey {\n copy = 'copy',\n understand = 'understand',\n deleteData = 'deleteData',\n unsubscribe = 'unsubscribe',\n}\nexport interface ContactUsFormData {\n infoFormData: {\n firstName: string;\n lastName: string;\n homePhone: string;\n mobilePhone: string;\n email: string;\n addressLine1: string;\n addressLine2: string;\n addressLine3?: string;\n city: string;\n state: string;\n zipCode: string;\n comment: string;\n };\n reasons: {\n [ContactUsReasonKey.copy]: boolean;\n [ContactUsReasonKey.understand]: boolean;\n [ContactUsReasonKey.deleteData]: boolean;\n [ContactUsReasonKey.unsubscribe]: boolean;\n };\n subjectId: number;\n}\n\n@Component({\n selector: 'app-contact-us-page',\n templateUrl: './contact-us-page.component.html',\n styleUrls: ['./contact-us-page.component.scss'],\n})\nexport class ContactUsPageComponent implements OnInit, OnDestroy {\n readonly isMexEnv = isMexEnv;\n sendingMessage$: Observable;\n sendingContactUsMessage = SendingContactUsMessage;\n contactUsFormData: ContactUsFormData = {\n infoFormData: {\n firstName: '',\n lastName: '',\n homePhone: '',\n mobilePhone: '',\n email: '',\n addressLine1: '',\n addressLine2: '',\n city: '',\n state: '',\n zipCode: '',\n comment: '',\n },\n reasons: {\n copy: false,\n understand: false,\n deleteData: false,\n unsubscribe: false,\n },\n subjectId: 0,\n };\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.sendingMessage$ = this.store$.select(selectContactUsSendingMessage);\n\n if (this.isMexEnv) {\n this.contactUsFormData.infoFormData.addressLine3 = '';\n }\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetContactUsState());\n }\n}\n","export enum PartyOrderPaymentPages {\n SearchPage = 1,\n AddressPage = 2,\n InfoPage = 3,\n PaymentConfirmation = 4,\n}\n","export enum PartyOrderErrorType {\n MasterOrderNotFound = 'MasterOrderNotFound',\n BeeBusinessNotFound = 'BeeBusinessNotFound',\n ConsultantNotFound = 'ConsultantNotFound',\n IncorrectOrderType = 'IncorrectOrderType',\n IncorrectPaymentStatus = 'IncorrectPaymentStatus',\n IncorrectCountry = 'IncorrectCountry',\n}\n","

    Please enter your order number and click the submit button.

    \n\n
    \n
    \n
    \n \n \n
    \n
    \n \n Submit\n
    \n Loading...\n
    \n \n
    \n
    \n\n
    \n
    \n \n Sorry, we couldn't find the order number. Please check the packing slip to verify that the\n order number is correct.\n \n \n Inconsistent data error, consultant or beebusiness isn't found for order.\n \n \n This order is not in your country.\n \n \n This order can't receive payments currently.\n \n \n This order number doesn't belong to a party order.\n \n
    \n
    \n
    \n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { PartyOrderErrorType } from '@core/enums/party-order-error-type.enum';\nimport { PartyOrderPaymentPages } from '@core/enums/party-order-payment-pages.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport {\n selectIsFetchedPartyOrderPayment,\n selectOrderStateLoading,\n selectPartyOrderError,\n} from '@core/store/order';\nimport { PartyOrderError } from '@core/store/order/order-state-models';\nimport { fetchPartyOrderData } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-party-order-payment-search',\n templateUrl: './party-order-payment-search.component.html',\n styleUrls: ['./party-order-payment-search.component.scss'],\n})\nexport class PartyOrderPaymentSearchComponent implements OnInit, OnDestroy {\n @Output()\n nextPage: EventEmitter = new EventEmitter();\n readonly OrderNumber: string = 'orderNumber';\n readonly MaxLength: number = 9;\n readonly PartyOrderErrorType = PartyOrderErrorType;\n\n loading$: Observable;\n fetched$: Observable;\n errorMessage$: Observable;\n partyOrderNumberForm: FormGroup;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n private appInitService: AppInitService,\n ) {}\n\n ngOnInit(): void {\n this.partyOrderNumberForm = this.fb.group({\n [this.OrderNumber]: ['', [Validators.required, Validators.maxLength(this.MaxLength)]],\n });\n\n this.loading$ = this.store$.select(selectOrderStateLoading);\n this.fetched$ = this.store$.select(selectIsFetchedPartyOrderPayment);\n this.errorMessage$ = this.store$.select(selectPartyOrderError);\n\n this.subscriptions.add(\n this.fetched$\n .pipe(\n filter((success) => success),\n take(1),\n )\n .subscribe(() => {\n const next = this.appInitService.Settings.ec.partyOrderCollectRiskDataFromInput\n ? PartyOrderPaymentPages.AddressPage\n : PartyOrderPaymentPages.InfoPage;\n this.nextPage.emit(next);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n submit(): void {\n if (this.partyOrderNumberForm.valid) {\n const orderNumber = this.partyOrderNumberForm.get(this.OrderNumber).value;\n this.store$.dispatch(fetchPartyOrderData({ orderNumber }));\n }\n }\n}\n","
    \n
    Order Information
    \n
    \n
    \n
    \n \n \n \n {{ partyOrderData.hostessName }}\n \n
    \n \n
    \n \n {{ partyOrderData.consultantName }} \n
    \n
    \n
    \n \n \n {{ partyOrderData.orderNumber }}\n \n
    \n
    \n \n \n {{ partyOrderData.receivedDate | date: 'longDate' }}\n \n
    \n
    \n\n
    \n
    \n \n \n {{ partyOrderData.totalOrderAmount | phCurrency }}\n \n
    \n
    \n \n \n {{ partyOrderData.paymentReceived | phCurrency }}\n \n
    \n
    \n \n \n {{ partyOrderData.balanceDue | phCurrency }}\n \n
    \n
    \n\n","import { Component } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { selectPartyOrderData } from '@core/store/order';\nimport { PartyOrderData } from '@core/store/order/order-state-models';\nimport { Store } from '@ngrx/store';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-party-order-payment-order-information',\n templateUrl: './party-order-payment-order-information.component.html',\n styleUrls: ['./party-order-payment-order-information.component.scss'],\n})\nexport class PartyOrderPaymentOrderInformationComponent extends BaseComponent {\n public partyOrderData$: Observable;\n\n constructor(private store$: Store) {\n super();\n\n this.partyOrderData$ = this.store$\n .select(selectPartyOrderData)\n .pipe(filter((partyOrderData) => !!partyOrderData));\n }\n}\n","\n\n
    \n
    Credit Card Billing Address
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n Credit Card Details\n
    \n
    \n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ValidEmailRegExp } from '@core/constants/patterns';\nimport { ZipCodeMinimumLength } from '@core/constants/zip-code-minimum-length';\nimport { PartyOrderPaymentPages } from '@core/enums/party-order-payment-pages.enum';\nimport { RiskData } from '@core/models/risk-data.model';\nimport { AppState } from '@core/store';\nimport { selectAddresses, selectCountryStates, selectLoading } from '@core/store/address';\nimport { fetchAddresses, fetchCountryStates } from '@core/store/address/address.actions';\nimport { resetPartyOrderFetched } from '@core/store/order/order.actions';\nimport { selectUser } from '@core/store/user';\nimport { UserModel } from '@core/store/user/user-state-models';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport enum PartyOrderPaymentAddressFormData {\n FirstName = 'firstName',\n LastName = 'lastName',\n AddressLine1 = 'addressLine1',\n AddressLine2 = 'addressLine2',\n AddressLine3 = 'addressLine3',\n City = 'city',\n State = 'state',\n Country = 'country',\n ZipCode = 'zipCode',\n EmailAddress = 'emailAddress',\n PhoneNumber = 'phoneNumber',\n}\n\n@Component({\n selector: 'app-party-order-payment-address',\n templateUrl: './party-order-payment-address.component.html',\n styleUrls: ['./party-order-payment-address.component.scss'],\n})\nexport class PartyOrderPaymentAddressComponent extends BaseComponent implements OnInit {\n readonly isMexEnv = isMexEnv;\n readonly FormData = PartyOrderPaymentAddressFormData;\n\n @Output() public previousPage: EventEmitter = new EventEmitter();\n @Output() public nextPage: EventEmitter = new EventEmitter();\n @Output() public riskDataChange: EventEmitter = new EventEmitter();\n\n @Input() public riskData: RiskData;\n\n addressForm: FormGroup;\n loading$: Observable;\n countryStates$: Observable;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.addressForm = this.fb.group({\n [this.FormData.FirstName]: [this.riskData?.firstName, [Validators.required]],\n [this.FormData.LastName]: [this.riskData?.lastName, [Validators.required]],\n [this.FormData.AddressLine1]: [this.riskData?.addressLine1, [Validators.required]],\n [this.FormData.AddressLine2]: [this.riskData?.addressLine2],\n [this.FormData.City]: [this.riskData?.city, [Validators.required]],\n [this.FormData.State]: [this.riskData?.state, [Validators.required]],\n [this.FormData.ZipCode]: [\n this.riskData?.zipCode,\n [Validators.required, Validators.minLength(ZipCodeMinimumLength)],\n ],\n [this.FormData.EmailAddress]: [\n this.riskData?.emailAddress,\n [Validators.required, emailValidator(ValidEmailRegExp)],\n ],\n [this.FormData.PhoneNumber]: [this.riskData?.phoneNumber, [Validators.required]],\n });\n\n if (this.isMexEnv) {\n this.addressForm.addControl(\n this.FormData.AddressLine3,\n new FormControl(this.riskData?.addressLine3),\n );\n }\n\n this.store$.select(selectUser).subscribe((user?: UserModel) => {\n if (user.firstName && user.lastName) {\n this.store$.dispatch(fetchAddresses());\n this.addressForm.patchValue({\n [this.FormData.FirstName]: user.firstName,\n [this.FormData.LastName]: user.lastName,\n [this.FormData.EmailAddress]: user.email,\n [this.FormData.PhoneNumber]: user.phoneNumber,\n });\n }\n });\n this.store$.dispatch(fetchCountryStates());\n\n this.loading$ = this.store$.select(selectLoading);\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectCountryStates));\n\n this.subscriptions.add(\n this.store$\n .select(selectAddresses)\n .pipe(filter((a) => !!a))\n .subscribe((addresses) => {\n const found = addresses.find((a) => a.default);\n if (!!found)\n this.addressForm.patchValue({\n [this.FormData.AddressLine1]: found.addressLine1,\n [this.FormData.AddressLine2]: found.addressLine2,\n [this.FormData.AddressLine3]: found.addressLine3,\n [this.FormData.City]: found.city,\n [this.FormData.State]: found.state,\n [this.FormData.Country]: found.country,\n [this.FormData.ZipCode]: found.zipCode,\n });\n }),\n );\n }\n\n onCancel(): void {\n this.store$.dispatch(resetPartyOrderFetched());\n this.previousPage.emit(PartyOrderPaymentPages.SearchPage);\n }\n\n onNext(): void {\n this.riskDataChange.emit(this.addressFormValueToRiskData(this.addressForm.value));\n this.nextPage.emit(PartyOrderPaymentPages.InfoPage);\n }\n\n private addressFormValueToRiskData(addressFormValue: any): RiskData {\n return { country: environment.country, ...addressFormValue };\n }\n}\n","\n \n {{ label }}\n \n
    \n \n
    \n \n \n \n
    \n
    \n
    \n
    {{ item }}
    \n
    \n
    \n","import { formatCurrency, getCurrencySymbol } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n DEFAULT_CURRENCY_CODE,\n ElementRef,\n Host,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n SkipSelf,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { Currency } from '@core/enums/currency.enum';\nimport { environment } from '@env';\nimport { getValidationErrorMessageList, validInput } from '@shared/utils/validation.utils';\n\n@Component({\n selector: 'app-currency-field-input',\n templateUrl: './currency-field-input.component.html',\n styleUrls: ['./currency-field-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: CurrencyFieldInputComponent,\n multi: true,\n },\n ],\n})\n// eslint-disable-next-line max-len\nexport class CurrencyFieldInputComponent implements OnInit, OnChanges, ControlValueAccessor, AfterViewInit\n{\n @Input()\n identifier: string;\n\n @Input()\n label: string;\n\n @Input()\n placeholder: string;\n\n @Input()\n formErrorMessages: { [key: string]: string } = FormErrorMessages;\n\n @Input()\n formControlName: string;\n\n @Input()\n readonly: boolean = false;\n\n @Input()\n labelStyle: any = {};\n\n @Input()\n inputStyle: any = {};\n\n @Input()\n isLabelOnInput: boolean = false;\n\n @Input()\n isDecimal: boolean = true;\n\n @Input()\n value: number;\n\n @Input()\n disabled = false;\n\n @ViewChild('input') input: ElementRef;\n\n readonly Type: string = 'text';\n readonly DecimalDigitsInfo: string = '0.2-2';\n readonly IntegerDigitsInfo: string = '0.0-0';\n\n control: AbstractControl;\n\n public displayValue = '';\n\n public currency: Currency;\n\n constructor(\n @Inject(LOCALE_ID) public locale: string,\n @Inject(DEFAULT_CURRENCY_CODE) private currencyCode,\n @Optional()\n @Host()\n @SkipSelf()\n private controlContainer: ControlContainer,\n ) {}\n\n ngOnInit(): void {\n this.currency = environment.currency;\n }\n\n ngAfterViewInit(): void {\n this.control = this.controlContainer?.control.get(this.formControlName);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value?.currentValue) {\n this.displayValue = changes.value.currentValue\n ? this.convertToCurrencyFormat(this.convertToNumber(String(changes.value.currentValue)))\n : '';\n }\n }\n\n onChanged: (value: number) => void = () => {};\n\n onTouched = () => {};\n\n writeValue(value): void {\n this.value = value;\n\n this.displayValue = value\n ? this.convertToCurrencyFormat(this.convertToNumber(String(value)))\n : '';\n }\n\n registerOnChange(onChanged: any): void {\n this.onChanged = onChanged;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onKeyUp(event: any) {\n this.value = this.convertToNumber(event.target.value);\n this.onChanged(this.value);\n this.onTouched();\n }\n\n onBlur(event: any) {\n this.value = this.convertToNumber(event.target.value);\n this.displayValue = '';\n // Needs a small delay so the displayValue actually refreshes\n setTimeout(() => (this.displayValue = this.convertToCurrencyFormat(this.value)));\n }\n\n get isValidInput(): boolean {\n if (this.control) {\n return validInput(this.control);\n }\n return true;\n }\n\n get errorMessages(): string[] {\n return getValidationErrorMessageList(this.control, this.formErrorMessages);\n }\n\n private isNumeric(number): boolean {\n return !isNaN(number);\n }\n\n private convertToCurrencyFormat(numberValue: number) {\n const currencySymbol = getCurrencySymbol(this.currencyCode, 'narrow');\n const formattedValue = formatCurrency(\n numberValue,\n this.locale,\n currencySymbol,\n this.currencyCode,\n this.isDecimal ? this.DecimalDigitsInfo : this.IntegerDigitsInfo,\n );\n\n return formattedValue;\n }\n\n private convertToNumber(value: string): number {\n if (value) {\n const currencySymbol = getCurrencySymbol(this.currencyCode, 'narrow');\n const thousandsSeparator = Number(10000).toLocaleString().charAt(2);\n const regExp = new RegExp(thousandsSeparator, 'g');\n value = value.replace(currencySymbol, '');\n value = value.replace(regExp, '');\n }\n\n return this.isNumeric(value) ? Number(value) : null;\n }\n}\n","\n
    \n \n\n
    \n \n
    \n
    \n
    \n Accepted Payment Methods\n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n\n \n
    \n \n
    Please select the payment amount
    \n\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    Payment Information
    \n Change Amount\n
    \n\n \n
    \n
    \n\n
    \n The amount has to be equal or less than the balance due!!\n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n \n
    \n \n Back to Card Billing Address\n \n
    \n
    \n
    \n \n Submit\n \n
    \n
    \n\n\n\n
    \n
    \n \n
    \n
    \n \n \n
    \n \n \n \n
    \n
    \n
    \n
    \n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { CardPaymentTypes } from '@core/constants/payment.consts';\nimport { AddPaymentToPartyOrderRequest } from '@core/dto/order.dto';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { PartyOrderPaymentPages } from '@core/enums/party-order-payment-pages.enum';\nimport { EcPaymentHandlerType, PaymentHandlerType } from '@core/enums/payment-handler-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentAmountType, PaymentCardType, PaymentType } from '@core/enums/payment-type.enum';\nimport { CardholderName } from '@core/models/cardholder-name.model';\nimport { LogCardAttemptData } from '@core/models/log-card-attempt-data.model';\nimport { RiskData } from '@core/models/risk-data.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport {\n selectOrderStateLoading,\n selectPartyOrderData,\n selectPartyOrderStatus,\n} from '@core/store/order';\nimport { PartyOrderData, SubmittedOrderStatus } from '@core/store/order/order-state-models';\nimport {\n resetPartyOrderFetched,\n storePartyOrderBaseData,\n submitPartyOrder,\n} from '@core/store/order/order.actions';\nimport { selectPartyOrderCustomerId, selectPaymentInfo } from '@core/store/payment';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { CardPaymentWrapperComponent } from '@payment/components/card-payment-wrapper/card-payment-wrapper.component';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { PaymentHandlerFactory } from '@payment/payment-handler/payment-handler-factory';\nimport {\n PaymentTypeOptionsAndImages,\n getPaymentMethodType,\n getPaymentProviderType,\n initPaymentTypeOptionsAndImages,\n} from '@payment/payment-handler/payment-provider.utils';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { isMexEnv, isUsaEnv } from '@shared/utils/environment-utils';\nimport { getKushkiFormIdType } from '@shared/utils/get-kushki-fomr-id-type-util';\nimport { Observable } from 'rxjs';\nimport { filter, take, tap, withLatestFrom } from 'rxjs/operators';\n\nenum PaymentInfoFormKey {\n paymentTypeSelector = 'paymentTypeSelector',\n balanceAmountSelector = 'balanceAmountSelector',\n otherPaymentAmount = 'otherPaymentAmount',\n fullPaymentAmount = 'fullPaymentAmount',\n}\n\n@Component({\n selector: 'app-party-order-payment-info',\n templateUrl: './party-order-payment-info.component.html',\n styleUrls: ['./party-order-payment-info.component.scss'],\n})\nexport class PartyOrderPaymentInfoComponent extends BaseComponent implements OnInit, OnDestroy {\n @Output()\n previousPage: EventEmitter = new EventEmitter();\n\n @Output()\n nextPage: EventEmitter = new EventEmitter();\n\n @Input() riskData?: RiskData;\n\n readonly PaymentAmountType = PaymentAmountType;\n readonly PaymentInfoFormKey = PaymentInfoFormKey;\n readonly CardPaymentTypes = CardPaymentTypes;\n readonly PaymentProviderType = PaymentProviderType;\n readonly PaymentTypes = PaymentType;\n readonly isMexEnv = isMexEnv;\n\n public paymentInfoFormGroup: FormGroup;\n public isPaymentRequestable: boolean = false;\n public isCardSaved: boolean = false;\n public isAmountOk: boolean = false;\n public isAmountGraterThanBalanceDue: boolean = false;\n public paymentHandler: PaymentHandlerBase;\n public partyOrderData: PartyOrderData;\n public showPaymentInformation: boolean = false;\n public showCardPaymentComponent: boolean = false;\n public selectedPaymentAmountType: PaymentAmountType;\n public loading$: Observable;\n public selectedCardPaymentType: PaymentCardType = PaymentCardType.DebitCard;\n public isBackToAddressPage: boolean = false;\n public paymentProviderType: PaymentProviderType;\n public cardholderName: CardholderName;\n public selectedPaymentType: PaymentType;\n public paymentTypeOptions: SelectOption[] = [];\n public availablePaymentMethodsImgSrc: string[] = [];\n public isSubmitInProgress: boolean = false;\n public isPayPalCardPaymentEnabled: boolean;\n public isNexioEnabled: boolean;\n public showAddPaymentButtonForKushki: boolean = true;\n public kushkiFormIdType: KushkiFormIdTypes;\n\n @ViewChild('cardPaymentWrapper')\n private paymentWrapperComponent: CardPaymentWrapperComponent;\n\n constructor(\n private appInitService: AppInitService,\n private fb: FormBuilder,\n private store$: Store,\n private cdRef: ChangeDetectorRef,\n private paymentHandlerFactory: PaymentHandlerFactory,\n ) {\n super();\n\n this.paymentHandler = this.paymentHandlerFactory.getPaymentHandler(\n PaymentHandlerType.ECommerce,\n EcPaymentHandlerType.PartyOrder,\n );\n\n this.isBackToAddressPage = this.appInitService.Settings.ec.partyOrderCollectRiskDataFromInput;\n this.isPayPalCardPaymentEnabled =\n this.appInitService.Settings.ec.isPayPalCardPaymentEnabledPartyOrder;\n this.isNexioEnabled = this.appInitService.Settings.ec.isNexioCardPaymentEnabledPartyOrder;\n }\n\n get isSubmitDisabled(): boolean {\n return !(this.isPaymentRequestable && this.isAmountOk && !this.isSubmitInProgress);\n }\n\n get showPaymentProvider() {\n if (isUsaEnv || this.selectedPaymentType === PaymentType.CreditOrDebitCard) {\n return this.showPaymentInformation;\n }\n\n if (this.selectedPaymentType === PaymentType.PayPal) {\n return this.showPaymentInformation && this.isAmountOk;\n }\n\n if (this.selectedPaymentType === PaymentType.BankTransfer) {\n return true;\n }\n\n return false;\n }\n\n get isKushkiInitialized() {\n return (\n !this.showAddPaymentButtonForKushki && this.paymentProviderType === PaymentProviderType.Kushki\n );\n }\n\n ngOnInit(): void {\n this.cardholderName = {\n firstName: this.riskData?.firstName,\n lastName: this.riskData?.lastName,\n };\n this.paymentInfoFormGroup = this.createFormGroup();\n this.loading$ = this.store$.select(selectOrderStateLoading);\n this.initPaymentTypeElements();\n\n this.subscriptions.add(\n this.store$\n .select(selectPartyOrderData)\n .pipe(\n filter((partyOrderData) => !!partyOrderData),\n take(1),\n )\n .subscribe((partyOrderData) => {\n this.partyOrderData = partyOrderData;\n this.showPaymentInformation = partyOrderData.balanceDue > 0;\n this.paymentInfoFormGroup.patchValue({\n [PaymentInfoFormKey.fullPaymentAmount]: partyOrderData.balanceDue,\n });\n }),\n );\n\n this.subscriptions.add(\n this.store$\n .select(selectPartyOrderStatus)\n .pipe(\n filter(\n (status) =>\n status == SubmittedOrderStatus.success || status == SubmittedOrderStatus.failure,\n ),\n )\n .subscribe(() => {\n this.nextPage.emit(PartyOrderPaymentPages.PaymentConfirmation);\n }),\n );\n\n this.subscriptions.add(\n this.paymentInfoFormGroup\n .get(PaymentInfoFormKey.otherPaymentAmount)\n .valueChanges.pipe(\n filter(() => this.selectedPaymentAmountType === PaymentAmountType.Custom),\n )\n .subscribe((value) => {\n if (value > 0) {\n this.isAmountOk = true;\n } else {\n this.isAmountOk = false;\n }\n if (isMexEnv) {\n this.storeBaseData();\n }\n }),\n );\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.paymentHandler.resetToken();\n }\n\n onChangePaymentAmountType(newValue: PaymentAmountType): void {\n this.selectedPaymentAmountType = newValue;\n\n const otherPaymentControl = this.paymentInfoFormGroup.get(\n PaymentInfoFormKey.otherPaymentAmount,\n );\n if (this.selectedPaymentAmountType === PaymentAmountType.Custom) {\n otherPaymentControl.enable();\n } else {\n otherPaymentControl.setValue(0);\n otherPaymentControl.disable();\n this.isAmountOk = true;\n\n if (isMexEnv) {\n this.storeBaseData();\n }\n }\n }\n\n onPaymentTypeChange(newPaymentType: PaymentType): void {\n const previousPaymentType = this.selectedPaymentType;\n this.resetCardPayment(previousPaymentType);\n this.kushkiFormIdType = getKushkiFormIdType(newPaymentType);\n this.paymentProviderType = getPaymentProviderType(newPaymentType, this.isNexioEnabled);\n this.selectedPaymentType = newPaymentType;\n this.showAddPaymentButtonForKushki = this.paymentProviderType === PaymentProviderType.Kushki;\n }\n\n onSubmit(): void {\n if (this.partyOrderData) {\n let paymentAmount: number = this.getAmount();\n\n this.isAmountGraterThanBalanceDue =\n this.selectedPaymentAmountType == PaymentAmountType.Custom &&\n paymentAmount > this.partyOrderData.balanceDue;\n\n if (!this.isAmountGraterThanBalanceDue) {\n this.isAmountGraterThanBalanceDue = false;\n\n this.submitPartyOrderPayment(paymentAmount);\n this.isSubmitInProgress = true;\n }\n }\n }\n\n onCancel(): void {\n this.store$.dispatch(resetPartyOrderFetched());\n this.previousPage.emit(PartyOrderPaymentPages.SearchPage);\n }\n\n onBackToBillingAddressPage(): void {\n this.previousPage.emit(PartyOrderPaymentPages.AddressPage);\n }\n\n storeBaseData() {\n this.store$.dispatch(\n storePartyOrderBaseData({\n payload: {\n masterOrderId: this.partyOrderData.orderNumber,\n amount: this.getAmount(),\n },\n }),\n );\n }\n\n getAmount() {\n switch (this.selectedPaymentAmountType) {\n case PaymentAmountType.Balance:\n return this.partyOrderData.balanceDue;\n case PaymentAmountType.Custom:\n const customPaymentAmount =\n this.paymentInfoFormGroup.get(PaymentInfoFormKey.otherPaymentAmount).value || 0;\n return Number(customPaymentAmount);\n }\n }\n\n handlePaymentRequestable(isPaymentMethodRequestable: boolean): void {\n this.isPaymentRequestable = isPaymentMethodRequestable;\n // https://github.com/webcomponents/polyfills/issues/238\n this.cdRef.detectChanges();\n }\n\n handleCardAttempt(cardAttemptData: LogCardAttemptData): void {\n this.paymentHandler.logCardAttempt(\n cardAttemptData.success,\n cardAttemptData.response,\n this.paymentProviderType,\n this.partyOrderData.orderNumber,\n );\n }\n\n paymentApproved(isCreated: boolean): void {\n this.isCardSaved = isCreated;\n this.cdRef.detectChanges();\n }\n\n resetCardPayment(previousPaymentType: PaymentType, resetComponent: boolean = false): void {\n if (isMexEnv && previousPaymentType === PaymentType.PayPal) {\n if (resetComponent) {\n // As we have already a card payment and we would like to change it we have to reset it\n this.paymentHandler.updateOrder();\n this.resetPayPalComponent();\n }\n }\n this.paymentHandler.resetToken();\n }\n\n enableChangeAmount(): void {\n this.resetCardPayment(this.selectedPaymentType);\n this.showAddPaymentButtonForKushki = true;\n }\n\n private initPaymentTypeElements(): void {\n const paymentTypeData: PaymentTypeOptionsAndImages = initPaymentTypeOptionsAndImages(\n false,\n environment.feature.bankTransferPoPayment,\n );\n this.paymentTypeOptions = paymentTypeData.paymentTypeOptions;\n this.availablePaymentMethodsImgSrc = paymentTypeData.availablePaymentMethodsImgSrc;\n this.selectedPaymentType = this.paymentTypeOptions[0].value;\n this.kushkiFormIdType = getKushkiFormIdType(this.selectedPaymentType);\n this.paymentProviderType = getPaymentProviderType(\n this.selectedPaymentType,\n this.isNexioEnabled,\n );\n this.showAddPaymentButtonForKushki = this.paymentProviderType === PaymentProviderType.Kushki;\n this.paymentInfoFormGroup.patchValue({\n [PaymentInfoFormKey.paymentTypeSelector]: this.selectedPaymentType,\n });\n }\n\n private createFormGroup(): FormGroup {\n const formGroup = this.fb.group({\n [PaymentInfoFormKey.otherPaymentAmount]: new FormControl({ value: 0, disabled: true }),\n [PaymentInfoFormKey.fullPaymentAmount]: new FormControl({ value: 0, disabled: true }),\n [PaymentInfoFormKey.paymentTypeSelector]: new FormControl({ value: '' }),\n });\n\n return formGroup;\n }\n\n private resetPayPalComponent(): void {\n // need to force change detection for paypal component reinit\n this.isCardSaved = false;\n this.cdRef.detectChanges();\n\n // wait to reload the hidden payment component by resetting the error\n setTimeout(() => this.paymentWrapperComponent?.resetToken());\n }\n\n private submitPartyOrderPayment(paymentAmount: number) {\n const paymentMethodObject$ = this.paymentWrapperComponent.requestPaymentMethodObject().pipe(\n tap((isSuccessful) => {\n this.paymentWrapperComponent.createPaymentMethod(isSuccessful);\n }),\n take(1),\n );\n\n this.subscriptions.add(\n paymentMethodObject$\n .pipe(\n withLatestFrom(\n this.store$.select(selectPaymentInfo),\n this.store$.select(selectPartyOrderCustomerId),\n ),\n take(1),\n )\n .subscribe(([, paymentInfo, customerId]) => {\n const request: AddPaymentToPartyOrderRequest = {\n masterOrderId: this.partyOrderData.orderNumber,\n amount: paymentAmount,\n beeNumber: this.partyOrderData.consultantBeeNumber,\n riskData: this.riskData,\n provider: this.paymentProviderType,\n customerId,\n paymentMethodType: getPaymentMethodType(this.selectedPaymentType),\n };\n\n if (isUsaEnv) {\n request.nonce = paymentInfo.nonce;\n request.deviceData = paymentInfo.deviceData;\n } else if (isMexEnv) {\n switch (this.paymentProviderType) {\n case PaymentProviderType.PayPal:\n request.paypalOrderId = paymentInfo.order.orderId;\n break;\n case PaymentProviderType.Nexio:\n request.cardSaveRequest = paymentInfo.cardSaveRequest;\n break;\n case PaymentProviderType.Kushki:\n request.nonce = paymentInfo.nonce;\n break;\n }\n }\n\n this.store$.dispatch(submitPartyOrder({ request }));\n }),\n );\n }\n}\n","
    \n
    \n
    \n \n Your party order payment has been accepted by Princess House!\n \n
    \n\n
    \n \n Party Order payment submit failed! \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { selectPartyOrderStatus } from '@core/store/order';\nimport { SubmittedOrderStatus } from '@core/store/order/order-state-models';\nimport { Store } from '@ngrx/store';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { filter } from 'rxjs/operators';\n\n// TODO: EC-2420 finalize payment accepted page\n@Component({\n selector: 'app-party-order-payment-confirmation',\n templateUrl: './party-order-payment-confirmation.component.html',\n styleUrls: ['./party-order-payment-confirmation.component.scss'],\n})\nexport class PartyOrderPaymentConfirmationComponent\n extends BaseComponent\n implements OnInit, OnDestroy\n{\n @Output()\n backToSearch: EventEmitter = new EventEmitter();\n\n @Output()\n reset: EventEmitter = new EventEmitter();\n\n readonly SubmittedOrderStatus = SubmittedOrderStatus;\n\n paymentResult: SubmittedOrderStatus;\n\n constructor(\n private store$: Store,\n private router: Router,\n ) {\n super();\n }\n\n ngOnInit() {\n this.subscriptions.add(\n this.store$\n .select(selectPartyOrderStatus)\n .pipe(\n filter(\n (status) =>\n status == SubmittedOrderStatus.success || status == SubmittedOrderStatus.failure,\n ),\n )\n .subscribe((status: SubmittedOrderStatus) => {\n this.paymentResult = status;\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n onBackToSearch(): void {\n this.backToSearch.emit();\n }\n\n onGoToHome(): void {\n this.reset.emit();\n this.router.navigate(['/']);\n }\n}\n","
    \n \n \n \n
    \n \n
    \n
    \n {{ title }}\n
    \n
    \n Next: {{ nextTitle }}\n
    \n
    \n \n
    \n \n

    Party order payment

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PartyOrderPaymentPages } from '@core/enums/party-order-payment-pages.enum';\nimport { RiskData } from '@core/models/risk-data.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { fetchPartyOrderData, resetPartyOrderFetched } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\nimport { NavigationStep } from '@shared/components/stepper-base/navigation-step.model';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-party-order-payment',\n templateUrl: './party-order-payment.component.html',\n styleUrls: ['./party-order-payment.component.scss'],\n})\nexport class PartyOrderPaymentComponent implements OnInit, OnDestroy {\n pages = PartyOrderPaymentPages;\n activePage: PartyOrderPaymentPages;\n navigationSteps: NavigationStep[];\n isCollectRiskDataEnabled: boolean = false;\n title: string;\n nextTitle: string;\n\n public riskData?: RiskData;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n appInitService: AppInitService,\n private store$: Store,\n private activatedRoute: ActivatedRoute,\n ) {\n this.isCollectRiskDataEnabled = appInitService.Settings.ec.partyOrderCollectRiskDataFromInput;\n }\n\n ngOnInit(): void {\n this.navigationSteps = this.initNavigationSteps();\n this.activePage = this.navigationSteps[0].id;\n this.changeStepTitles(PartyOrderPaymentPages.SearchPage);\n\n this.subscriptions.add(\n this.activatedRoute.paramMap.subscribe((pMap) => {\n const orderNumber = pMap.get('orderNumber');\n if (orderNumber) {\n this.store$.dispatch(fetchPartyOrderData({ orderNumber }));\n }\n }),\n );\n }\n\n reset(): void {\n this.riskData = undefined;\n this.store$.dispatch(resetPartyOrderFetched());\n }\n\n changePage(page: PartyOrderPaymentPages): void {\n if (page === this.pages.SearchPage) {\n this.reset();\n }\n this.changeStepTitles(page);\n this.activePage = page;\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private initNavigationSteps(): NavigationStep[] {\n return [\n { id: PartyOrderPaymentPages.SearchPage, title: $localize`Order number` },\n { id: PartyOrderPaymentPages.AddressPage, title: $localize`Billing Address` },\n { id: PartyOrderPaymentPages.InfoPage, title: $localize`Payment` },\n ].sort((a, b) => a.id - b.id);\n }\n\n private changeStepTitles(stepId: number): void {\n this.title = this.navigationSteps.find((navStep) => navStep.id === stepId)?.title;\n this.nextTitle = this.navigationSteps.find((navStep) => navStep.id === stepId + 1)?.title;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { CustomerSpecialsPageComponent } from '@base/components/customer-specials-page/customer-specials-page.component';\nimport { MagazineListComponent } from '@base/components/magazine-list/magazine-list.component';\nimport { BaseRoutes } from '@core/constants/routes.const';\nimport { PartyOrderPaymentFeatureGuardService } from '@core/services/party-order-payment-feature-guard.service';\nimport { ClearConsultantComponent } from './components/clear-consultant/clear-consultant.component';\nimport { ContactUsPageComponent } from './components/contact-us-page/contact-us-page.component';\nimport { DefaultLayoutComponent } from './components/layout/default-layout/default-layout.component';\nimport { PartyOrderPaymentComponent } from './components/party-order-payment/party-order-payment.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: DefaultLayoutComponent,\n children: [\n {\n path: BaseRoutes.ContactUs,\n component: ContactUsPageComponent,\n data: {\n title: $localize`PH - Contact Us Page - Title`,\n description: $localize`PH - Contact Us Page - Description`,\n },\n },\n {\n path: BaseRoutes.CatalogsAndMore,\n component: MagazineListComponent,\n data: {\n title: $localize`Browse latest catalogs and magazines`,\n description: $localize`Browse latest catalogs and magazines - Description`,\n },\n },\n {\n path: BaseRoutes.ClearConsultant,\n component: ClearConsultantComponent,\n },\n {\n path: BaseRoutes.PartyOrderPayment,\n component: PartyOrderPaymentComponent,\n canActivate: [PartyOrderPaymentFeatureGuardService],\n data: {\n title: $localize`Apply a payment to a Party Order`,\n description: $localize`Apply a payment to a Party Order - Description`,\n },\n },\n {\n path: `${BaseRoutes.PartyOrderPayment}/:orderNumber`,\n component: PartyOrderPaymentComponent,\n canActivate: [PartyOrderPaymentFeatureGuardService],\n data: {\n title: $localize`Apply a payment to a Party Order`,\n description: $localize`Apply a payment to a Party Order - Description`,\n },\n },\n {\n path: BaseRoutes.CustomerSpecialOffers,\n component: CustomerSpecialsPageComponent,\n data: {\n title: $localize`Current special offers for customers`,\n description: $localize`Current special offers for customers - Description`,\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class BaseRoutingModule {}\n","
    \n
    \n

    Contact Princess House

    \n
    \n\n
    \n
    \n
    \n
    Require Customer Service?
    \n

    M-F, 9 A.M.-10 P.M. EST

    \n {{\n tel?.customerService?.number\n }}\n
    \n
    \n\n
    \n
    Interested in the Hostess or Income Opportunity?
    \n {{\n tel?.career?.number\n }}\n
    \n
    \n
    \n
    \n
    \n
    Contacting a Home Office Team Member?
    \n \n {{ tel?.homeOfficeMember?.number }}\n \n
    \n
    \n\n
    \n
    Headquarters
    \n

    \n 20 Cabot Blvd.
    \n Suite 105
    \n Mansfield, MA 02048\n

    \n
    \n
    \n
    \n
    \n\n
    \n

    Do you have a comment, question or suggestion?

    \n
    \n Submit the form below and we'll answer within one business day.\n
    \n
    \n\n
    \n
    What type inquiry do you have? Or how can we help you?
    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n This field is required\n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n\n
    \n \n Required Field\n
    \n\n
    \n
    What type of inquiry are you requesting? (Select all that apply)\n
    \n
    \n Please select at least one\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    Acknowledgment
    \n \n BY SUBMITTING THIS FORM I CONFIRM THAT THE INFORMATION I HAVE PROVIDED IS TRUE AND\n ACCURATE. I ACKNOWLEDGE THAT THE INFORMATION I AM SUBMITTING IS BEING USED BY PRINCESS\n HOUSE FOR VERIFICATION, AND RETAININED FOR PURPOSES OF RECORD-KEEPING AND AUDITS - BOTH\n INTERNALLY AND POTENTIALLY BY GOVERNMENT BODIES, IN THE CASE OF CALIFORNIA, FOR A PERIOD\n OF TWO YEARS.\n \n
    \n
    \n \n
    \n
    \n
    \n","/* eslint-disable max-len */\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {\n ContactUsFormData,\n ContactUsReasonKey,\n} from '@base/components/contact-us-page/contact-us-page.component';\nimport { ValidEmailRegExp } from '@core/constants/patterns';\nimport { ContactUsRequest } from '@core/dto/contact-us.dto';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\nimport { AppState } from '@core/store';\nimport { selectCountryStates } from '@core/store/address';\nimport { fetchCountryStates } from '@core/store/address/address.actions';\nimport { sendEmail } from '@core/store/contact-us/contact-us.actions';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { matchValidator, validInput } from '@shared/utils/validation.utils';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-contact-us-form',\n templateUrl: './contact-us-form.component.html',\n styleUrls: ['./contact-us-form.component.scss'],\n})\nexport class ContactUsFormComponent implements OnInit, OnDestroy, AfterViewInit {\n readonly ContactUsReasonKey = ContactUsReasonKey;\n readonly feature = environment.feature;\n readonly tel = environment.tel;\n readonly isMexEnv = isMexEnv;\n readonly InfoFormGroup = 'infoFormGroup';\n readonly FirstName = 'firstName';\n readonly LastName = 'lastName';\n readonly MobilePhone = 'mobilePhone';\n readonly HomePhone = 'homePhone';\n readonly Email = 'email';\n readonly EmailConfirm = 'emailConfirm';\n readonly AddressLine1 = 'addressLine1';\n readonly AddressLine2 = 'addressLine2';\n readonly AddressLine3 = 'addressLine3';\n readonly City = 'city';\n readonly State = 'state';\n readonly ZipCode = 'zipCode';\n readonly Comment = 'comment';\n readonly Reasons = 'reasons';\n readonly FormErrorTypes = FormErrorTypes;\n\n subjects: string[] = [\n $localize`I have a general inquiry or question`,\n $localize`Personal Data Usage inquiry`,\n ];\n reasonTexts: Object = {\n [ContactUsReasonKey.copy]: $localize`I want a copy of the personal data Princess House has collected about me.`,\n [ContactUsReasonKey.understand]: $localize`I want to understand the categories of data for which Princess House has collected my personal information.`,\n [ContactUsReasonKey.deleteData]: $localize`I want you to erase all of my data.`,\n [ContactUsReasonKey.unsubscribe]: $localize`I want to unsubscribe from your marketing and sales efforts.`,\n };\n contactUsFormGroup: FormGroup;\n countryStates$: Observable;\n subjectId: number;\n\n @Output()\n contactUsFormDataChange: EventEmitter = new EventEmitter();\n @Input()\n contactUsFormData: ContactUsFormData;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n ) {}\n\n ngOnInit(): void {\n this.store$.dispatch(fetchCountryStates());\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectCountryStates));\n this.subjectId = this.contactUsFormData?.subjectId;\n\n this.createForm();\n }\n\n ngAfterViewInit(): void {\n this.listenPhoneValueChanges();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n submit(): void {\n const reasons: string[] = this.checkOutReasons();\n\n this.contactUsFormGroup.markAllAsTouched();\n this.updateForm();\n\n if (this.contactUsFormGroup.valid) {\n const contactUsRequest: ContactUsRequest = {\n ...this.contactUsFormGroup.get(this.InfoFormGroup).value,\n phone:\n this.contactUsFormGroup.get(`${this.InfoFormGroup}.${this.HomePhone}`).value !== ''\n ? this.contactUsFormGroup.get(`${this.InfoFormGroup}.${this.HomePhone}`).value\n : this.contactUsFormGroup.get(`${this.InfoFormGroup}.${this.MobilePhone}`).value,\n reasons: reasons,\n subject: this.subjects[this.subjectId],\n isPersonalData: !!this.subjectId,\n };\n\n this.store$.dispatch(sendEmail({ contactUsRequest }));\n\n this.emitContactUsFormDataChange();\n }\n }\n\n validReasonsGroup(groupName: string): boolean {\n return this.contactUsFormGroup.get(groupName).valid;\n }\n\n validPhoneInput(): boolean {\n return (\n validInput(this.contactUsFormGroup?.get(`${this.InfoFormGroup}.${this.MobilePhone}`)) ||\n validInput(this.contactUsFormGroup?.get(`${this.InfoFormGroup}.${this.HomePhone}`))\n );\n }\n\n private createForm(): void {\n this.contactUsFormGroup = this.fb.group({\n [this.InfoFormGroup]: this.fb.group(\n {\n [this.FirstName]: [\n this.contactUsFormData?.infoFormData.firstName || '',\n Validators.required,\n ],\n [this.LastName]: [\n this.contactUsFormData?.infoFormData.lastName || '',\n Validators.required,\n ],\n [this.HomePhone]: [\n this.contactUsFormData?.infoFormData.homePhone || '',\n this.phoneValidator(),\n ],\n [this.MobilePhone]: [\n this.contactUsFormData?.infoFormData.mobilePhone || '',\n this.phoneValidator(),\n ],\n [this.Email]: [\n this.contactUsFormData?.infoFormData.email || '',\n [Validators.required, emailValidator(ValidEmailRegExp)],\n ],\n [this.EmailConfirm]: [\n this.contactUsFormData?.infoFormData.email || '',\n [Validators.required, emailValidator(ValidEmailRegExp)],\n ],\n [this.AddressLine1]: [\n this.contactUsFormData?.infoFormData.addressLine1 || '',\n [Validators.required],\n ],\n [this.AddressLine2]: [this.contactUsFormData?.infoFormData.addressLine2 || ''],\n [this.City]: [this.contactUsFormData?.infoFormData.city || '', Validators.required],\n [this.State]: [this.contactUsFormData?.infoFormData.state || ''],\n [this.ZipCode]: [this.contactUsFormData?.infoFormData.zipCode || '', Validators.required],\n [this.Comment]: [this.contactUsFormData?.infoFormData.comment || '', Validators.required],\n },\n {\n validators: matchValidator(\n this.Email,\n this.EmailConfirm,\n this.FormErrorTypes.emailConfirm,\n ),\n },\n ),\n [this.Reasons]: this.fb.group(\n {\n [ContactUsReasonKey.copy]: [this.contactUsFormData?.reasons.copy || false],\n [ContactUsReasonKey.understand]: [this.contactUsFormData?.reasons.understand || false],\n [ContactUsReasonKey.deleteData]: [this.contactUsFormData?.reasons.deleteData || false],\n [ContactUsReasonKey.unsubscribe]: [this.contactUsFormData?.reasons.unsubscribe || false],\n },\n { validators: this.reasonsValidator() },\n ),\n });\n\n if (this.isMexEnv) {\n const infoFormGroup = this.contactUsFormGroup.get(this.InfoFormGroup) as FormGroup;\n infoFormGroup.addControl(\n this.AddressLine3,\n new FormControl(this.contactUsFormData?.infoFormData.addressLine3),\n );\n }\n }\n\n private phoneValidator(): ValidatorFn {\n return (): ValidationErrors =>\n (this.contactUsFormGroup?.get(`${this.InfoFormGroup}.${this.HomePhone}`).touched ||\n this.contactUsFormGroup?.get(`${this.InfoFormGroup}.${this.MobilePhone}`).touched) &&\n this.contactUsFormGroup?.get(`${this.InfoFormGroup}.${this.HomePhone}`).value === '' &&\n this.contactUsFormGroup?.get(`${this.InfoFormGroup}.${this.MobilePhone}`).value === ''\n ? { phone: true }\n : null;\n }\n\n private emitContactUsFormDataChange(): void {\n const updateContactUsFormData: ContactUsFormData = {\n infoFormData: this.contactUsFormGroup.get(this.InfoFormGroup).value,\n reasons: this.contactUsFormGroup.get(this.Reasons).value,\n subjectId: this.subjectId,\n };\n this.contactUsFormDataChange.emit(updateContactUsFormData);\n }\n\n private reasonsValidator(): ValidatorFn {\n return (group: FormGroup): ValidationErrors => {\n let isReasonsValid: boolean = false;\n if (!this.subjectId) {\n return null;\n }\n Object.keys(group.controls).forEach((key) => {\n if (group.controls[key].value) {\n isReasonsValid = true;\n }\n });\n if (isReasonsValid) {\n return null;\n }\n return { reasons: { reasons: true } };\n };\n }\n\n private updateForm(): void {\n this.contactUsFormGroup.get(this.Reasons).updateValueAndValidity();\n this.contactUsFormGroup.get(`${this.InfoFormGroup}.${this.HomePhone}`).updateValueAndValidity();\n this.contactUsFormGroup\n .get(`${this.InfoFormGroup}.${this.MobilePhone}`)\n .updateValueAndValidity();\n }\n\n private checkOutReasons(): string[] {\n const reasons: string[] = [];\n if (this.contactUsFormGroup.get(`${this.Reasons}.${ContactUsReasonKey.copy}`).value) {\n reasons.push(ContactUsReasonKey.copy);\n }\n if (this.contactUsFormGroup.get(`${this.Reasons}.${ContactUsReasonKey.understand}`).value) {\n reasons.push(ContactUsReasonKey.understand);\n }\n if (this.contactUsFormGroup.get(`${this.Reasons}.${ContactUsReasonKey.deleteData}`).value) {\n reasons.push(ContactUsReasonKey.deleteData);\n }\n if (this.contactUsFormGroup.get(`${this.Reasons}.${ContactUsReasonKey.unsubscribe}`).value) {\n reasons.push(ContactUsReasonKey.unsubscribe);\n }\n return reasons;\n }\n\n private listenPhoneValueChanges(): void {\n let homePhone = this.contactUsFormGroup.get(`${this.InfoFormGroup}.${this.HomePhone}`);\n let mobilePhone = this.contactUsFormGroup.get(`${this.InfoFormGroup}.${this.MobilePhone}`);\n this.subscriptions.add(\n combineLatest([homePhone.valueChanges, mobilePhone.valueChanges]).subscribe(() => {\n homePhone.updateValueAndValidity({ emitEvent: false });\n mobilePhone.updateValueAndValidity({ emitEvent: false });\n }),\n );\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-contact-us-success',\n templateUrl: './contact-us-success.component.html',\n styleUrls: ['./contact-us-success.component.scss'],\n})\nexport class ContactUsSuccessComponent {\n constructor() {}\n}\n","
    \n
    \n

    Success!

    \n
    \n We've received your information.\n
    \n
    \n You'll be hearing from us soon.\n
    \n\n \n
    \n
    \n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CartModule } from '@cart/cart.module';\nimport { ConsultantModule } from '@consultant/consultant.module';\nimport { CookiebotConfigSerivce } from '@core/services/cookiebot-config.service';\nimport { NgxCookiebotModule } from '@halloverden/ngx-cookiebot';\nimport { PaymentModule } from '@payment/payment.module';\nimport { ProductModule } from '@product/product.module';\nimport { SharedModule } from '@shared/shared.module';\nimport { AppRoutingModule } from 'app/app-routing.module';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { BaseRoutingModule } from './base-routing.module';\nimport { AccessibeInitializerComponent } from './components/accessibe-initializer/accessibe-initializer.component';\nimport { AppcuesInitializerComponent } from './components/appcues-initializer/appcues-initializer.component';\nimport { AuthInitializerComponent } from './components/auth-initializer/auth-initializer.component';\nimport { BackForwardCacheInitializerComponent } from './components/back-forward-cache-initializer/back-forward-cache-initializer';\nimport { CartInitializerComponent } from './components/cart-initializer/cart-initializer.component';\nimport { ClearConsultantComponent } from './components/clear-consultant/clear-consultant.component';\nimport { ConsultantCheckerComponent } from './components/consultant-checker/consultant-checker.component';\nimport { ConsultantInitializerComponent } from './components/consultant-initializer/consultant-initializer.component';\nimport { ContactUsFormComponent } from './components/contact-us-page/contact-us-form/contact-us-form.component';\nimport { ContactUsPageComponent } from './components/contact-us-page/contact-us-page.component';\nimport { ContactUsSuccessComponent } from './components/contact-us-page/contact-us-success/contact-us-success.component';\nimport { CookiebotInitializerComponent } from './components/cookiebot-initializer/cookiebot-initializer.component';\nimport { CustomerSpecialsPageComponent } from './components/customer-specials-page/customer-specials-page.component';\nimport { DatadogInitializerComponent } from './components/datadog-initializer/datadog-initializer.component';\nimport { FooterLinkInitializerComponent } from './components/footer-link-initializer/footer-link-initializer.component';\nimport { GtmInitializerComponent } from './components/gtm-initializer/gtm-initializer';\nimport { FooterBottomSnaComponent } from './components/layout/components/footer-bottom-sna/footer-bottom-sna.component';\nimport { FooterBottomComponent } from './components/layout/components/footer-bottom/footer-bottom.component';\nimport { FooterContainerComponent } from './components/layout/components/footer-container/footer-container.component';\nimport { FooterlinkComponent } from './components/layout/components/footer-links/footer-link/footerlink.component';\nimport { FooterLinksComponent } from './components/layout/components/footer-links/footer-links.component';\nimport { FooterMyStoryComponent } from './components/layout/components/footer-my-story/footer-my-story.component';\nimport { FooterTopComponent } from './components/layout/components/footer-top/footer-top.component';\nimport { HeaderConsultantComponent } from './components/layout/components/header-consultant/header-consultant.component';\nimport { HeaderContainerComponent } from './components/layout/components/header-container/header-container.component';\nimport { HeaderContentComponent } from './components/layout/components/header-content/header-content.component';\nimport { HeaderNavigationComponent } from './components/layout/components/header-navigation/header-navigation.component';\nimport { HeaderOffersComponent } from './components/layout/components/header-offers/header-offers.component';\nimport { HeaderSnaComponent } from './components/layout/components/header-sna/header-sna.component';\nimport { CartIconComponent } from './components/layout/components/header-top/cart-icon/cart-icon.component';\nimport { HeaderTopComponent } from './components/layout/components/header-top/header-top.component';\nimport { LanguageSelectorComponent } from './components/layout/components/header-top/language-selector/language-selector.component';\nimport { LeavePartyPopupComponent } from './components/layout/components/header-top/party-header/leave-party-popup/leave-party-popup.component';\nimport { PartyHeaderComponent } from './components/layout/components/header-top/party-header/party-header.component';\nimport { SearchBoxComponent } from './components/layout/components/search-box/search-box.component';\nimport { DefaultLayoutComponent } from './components/layout/default-layout/default-layout.component';\nimport { DeliveryInfoLayoutComponent } from './components/layout/delivery-info-layout/delivery-info-layout.component';\nimport { StartNowAppLayoutComponent } from './components/layout/start-now-app-layout/start-now-app-layout.component';\nimport { LogRocketInitializerComponent } from './components/logrocket-initializer/logrocket-initializer.component';\nimport { MagazineListComponent } from './components/magazine-list/magazine-list.component';\nimport { NotAllowedToPlaceOrderNotificationInitializerComponent } from './components/not-allowed-to-place-order-notification-initializer/not-allowed-to-place-order-notification-initializer.component';\nimport { OpenPartyNotificationInitializerComponent } from './components/open-party-notification-initializer/open-party-notification-initializer.component';\nimport { PartyInitializerComponent } from './components/party-initializer/party-initializer.component';\nimport { PartyOrderPaymentAddressComponent } from './components/party-order-payment/party-order-payment-address/party-order-payment-address.component';\nimport { PartyOrderPaymentConfirmationComponent } from './components/party-order-payment/party-order-payment-confirmation/party-order-payment-confirmation.component';\nimport { PartyOrderPaymentInfoComponent } from './components/party-order-payment/party-order-payment-info/party-order-payment-info.component';\nimport { PartyOrderPaymentSearchComponent } from './components/party-order-payment/party-order-payment-search/party-order-payment-search.component';\nimport { PartyOrderPaymentComponent } from './components/party-order-payment/party-order-payment.component';\nimport { ReplicatedSiteInitializerComponent } from './components/replicated-site-initializer/replicated-site-initializer.component';\nimport { TitleInitializerComponent } from './components/title-initializer/title-initializer.component';\nimport { WebsiteModeInitializerComponent } from './components/websitemod-initializer/website-mode-initializer.component';\nimport { WishlistInitializerComponent } from './components/wishlist-initializer/wishlist-initializer.component';\nimport { PartyOrderPaymentOrderInformationComponent } from './components/party-order-payment/party-order-payment-order-information/party-order-payment-order-information.component';\n\n@NgModule({\n declarations: [\n MagazineListComponent,\n FooterlinkComponent,\n AuthInitializerComponent,\n CartInitializerComponent,\n CartIconComponent,\n ConsultantInitializerComponent,\n ClearConsultantComponent,\n WishlistInitializerComponent,\n LanguageSelectorComponent,\n ContactUsPageComponent,\n ContactUsFormComponent,\n ContactUsSuccessComponent,\n ConsultantCheckerComponent,\n GtmInitializerComponent,\n OpenPartyNotificationInitializerComponent,\n PartyHeaderComponent,\n LeavePartyPopupComponent,\n PartyInitializerComponent,\n DefaultLayoutComponent,\n StartNowAppLayoutComponent,\n FooterContainerComponent,\n FooterMyStoryComponent,\n FooterTopComponent,\n FooterLinksComponent,\n FooterBottomComponent,\n HeaderContainerComponent,\n HeaderTopComponent,\n HeaderContentComponent,\n HeaderNavigationComponent,\n SearchBoxComponent,\n HeaderOffersComponent,\n HeaderSnaComponent,\n FooterBottomSnaComponent,\n PartyOrderPaymentComponent,\n PartyOrderPaymentSearchComponent,\n PartyOrderPaymentInfoComponent,\n PartyOrderPaymentConfirmationComponent,\n HeaderConsultantComponent,\n LogRocketInitializerComponent,\n AppcuesInitializerComponent,\n ReplicatedSiteInitializerComponent,\n CustomerSpecialsPageComponent,\n TitleInitializerComponent,\n WebsiteModeInitializerComponent,\n CookiebotInitializerComponent,\n DatadogInitializerComponent,\n FooterLinkInitializerComponent,\n AccessibeInitializerComponent,\n BackForwardCacheInitializerComponent,\n NotAllowedToPlaceOrderNotificationInitializerComponent,\n DeliveryInfoLayoutComponent,\n PartyOrderPaymentAddressComponent,\n PartyOrderPaymentOrderInformationComponent,\n ],\n imports: [\n NgxCookiebotModule.forRoot(CookiebotConfigSerivce),\n CommonModule,\n AppRoutingModule,\n SharedModule,\n InfiniteScrollModule,\n BaseRoutingModule,\n FormsModule,\n ReactiveFormsModule,\n ConsultantModule,\n PaymentModule,\n ProductModule,\n CartModule,\n ],\n exports: [\n MagazineListComponent,\n AuthInitializerComponent,\n CartInitializerComponent,\n ConsultantInitializerComponent,\n WishlistInitializerComponent,\n ConsultantCheckerComponent,\n GtmInitializerComponent,\n OpenPartyNotificationInitializerComponent,\n PartyInitializerComponent,\n LogRocketInitializerComponent,\n AppcuesInitializerComponent,\n ReplicatedSiteInitializerComponent,\n TitleInitializerComponent,\n WebsiteModeInitializerComponent,\n CookiebotInitializerComponent,\n DatadogInitializerComponent,\n FooterLinkInitializerComponent,\n AccessibeInitializerComponent,\n BackForwardCacheInitializerComponent,\n NotAllowedToPlaceOrderNotificationInitializerComponent,\n DeliveryInfoLayoutComponent,\n ],\n})\nexport class BaseModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n})\nexport class CoreModule {}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { selectIsAuthenticated } from '@core/store/auth';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuardService implements CanActivate {\n constructor(private store$: Store, private router: Router) {}\n\n canActivate(): Observable {\n return this.store$.select(selectIsAuthenticated).pipe(\n filter((isAuthenticated) => isAuthenticated !== undefined),\n map((isAuthenticated) => {\n if (!isAuthenticated) {\n this.router.navigateByUrl('/login');\n }\n return isAuthenticated;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { of } from 'rxjs';\n\nInjectable({\n providedIn: 'root',\n});\nexport class FakeRecaptchaService {\n // eslint-disable-next-line no-unused-vars\n execute(action: string) {\n return of(null);\n }\n}\n","import * as i1 from '@ngrx/store';\nimport { createAction, props, isNgrxMockEnvironment, select, ACTIVE_RUNTIME_CHECKS, createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, isDevMode, NgModule, Inject } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { NavigationStart, RoutesRecognized, NavigationCancel, NavigationError, NavigationEnd } from '@angular/router';\nimport { withLatestFrom } from 'rxjs/operators';\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nconst ROUTER_REQUEST = '@ngrx/router-store/request';\nconst routerRequestAction = createAction(ROUTER_REQUEST, props());\n/**\n * An action dispatched when the router navigates.\n */\nconst ROUTER_NAVIGATION = '@ngrx/router-store/navigation';\nconst routerNavigationAction = createAction(ROUTER_NAVIGATION, props());\n/**\n * An action dispatched when the router cancels navigation.\n */\nconst ROUTER_CANCEL = '@ngrx/router-store/cancel';\nconst routerCancelAction = createAction(ROUTER_CANCEL, props());\n/**\n * An action dispatched when the router errors.\n */\nconst ROUTER_ERROR = '@ngrx/router-store/error';\nconst routerErrorAction = createAction(ROUTER_ERROR, props());\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nconst ROUTER_NAVIGATED = '@ngrx/router-store/navigated';\nconst routerNavigatedAction = createAction(ROUTER_NAVIGATED, props());\n\nfunction routerReducer(state, action) {\n // Allow compilation with strictFunctionTypes - ref: #1344\n const routerAction = action;\n switch (routerAction.type) {\n case ROUTER_NAVIGATION:\n case ROUTER_ERROR:\n case ROUTER_CANCEL:\n return {\n state: routerAction.payload.routerState,\n navigationId: routerAction.payload.event.id,\n };\n default:\n return state;\n }\n}\n\nclass RouterStateSerializer {\n}\n\nclass DefaultRouterStateSerializer {\n serialize(routerState) {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url,\n };\n }\n serializeRoute(route) {\n const children = route.children.map((c) => this.serializeRoute(c));\n return {\n params: route.params,\n paramMap: route.paramMap,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n routeConfig: route.routeConfig\n ? {\n component: route.routeConfig.component,\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n }\n : null,\n queryParams: route.queryParams,\n queryParamMap: route.queryParamMap,\n fragment: route.fragment,\n component: (route.routeConfig\n ? route.routeConfig.component\n : undefined),\n root: undefined,\n parent: undefined,\n firstChild: children[0],\n pathFromRoot: undefined,\n children,\n };\n }\n}\n\nclass MinimalRouterStateSerializer {\n serialize(routerState) {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url,\n };\n }\n serializeRoute(route) {\n const children = route.children.map((c) => this.serializeRoute(c));\n return {\n params: route.params,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n routeConfig: route.routeConfig\n ? {\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n }\n : null,\n queryParams: route.queryParams,\n fragment: route.fragment,\n firstChild: children[0],\n children,\n };\n }\n}\n\nvar NavigationActionTiming;\n(function (NavigationActionTiming) {\n NavigationActionTiming[NavigationActionTiming[\"PreActivation\"] = 1] = \"PreActivation\";\n NavigationActionTiming[NavigationActionTiming[\"PostActivation\"] = 2] = \"PostActivation\";\n})(NavigationActionTiming || (NavigationActionTiming = {}));\nconst _ROUTER_CONFIG = new InjectionToken('@ngrx/router-store Internal Configuration');\nconst ROUTER_CONFIG = new InjectionToken('@ngrx/router-store Configuration');\nconst DEFAULT_ROUTER_FEATURENAME = 'router';\nfunction _createRouterConfig(config) {\n return Object.assign({ stateKey: DEFAULT_ROUTER_FEATURENAME, serializer: MinimalRouterStateSerializer, navigationActionTiming: NavigationActionTiming.PreActivation }, config);\n}\nvar RouterTrigger;\n(function (RouterTrigger) {\n RouterTrigger[RouterTrigger[\"NONE\"] = 1] = \"NONE\";\n RouterTrigger[RouterTrigger[\"ROUTER\"] = 2] = \"ROUTER\";\n RouterTrigger[RouterTrigger[\"STORE\"] = 3] = \"STORE\";\n})(RouterTrigger || (RouterTrigger = {}));\n/**\n * Connects RouterModule with StoreModule.\n *\n * During the navigation, before any guards or resolvers run, the router will dispatch\n * a ROUTER_NAVIGATION action, which has the following signature:\n *\n * ```\n * export type RouterNavigationPayload = {\n * routerState: SerializedRouterStateSnapshot,\n * event: RoutesRecognized\n * }\n * ```\n *\n * Either a reducer or an effect can be invoked in response to this action.\n * If the invoked reducer throws, the navigation will be canceled.\n *\n * If navigation gets canceled because of a guard, a ROUTER_CANCEL action will be\n * dispatched. If navigation results in an error, a ROUTER_ERROR action will be dispatched.\n *\n * Both ROUTER_CANCEL and ROUTER_ERROR contain the store state before the navigation\n * which can be used to restore the consistency of the store.\n *\n * Usage:\n *\n * ```typescript\n * @NgModule({\n * declarations: [AppCmp, SimpleCmp],\n * imports: [\n * BrowserModule,\n * StoreModule.forRoot(mapOfReducers),\n * RouterModule.forRoot([\n * { path: '', component: SimpleCmp },\n * { path: 'next', component: SimpleCmp }\n * ]),\n * StoreRouterConnectingModule.forRoot()\n * ],\n * bootstrap: [AppCmp]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass StoreRouterConnectingModule {\n constructor(store, router, serializer, errorHandler, config, activeRuntimeChecks) {\n this.store = store;\n this.router = router;\n this.serializer = serializer;\n this.errorHandler = errorHandler;\n this.config = config;\n this.activeRuntimeChecks = activeRuntimeChecks;\n this.lastEvent = null;\n this.routerState = null;\n this.trigger = RouterTrigger.NONE;\n this.stateKey = this.config.stateKey;\n if (!isNgrxMockEnvironment() &&\n isDevMode() &&\n ((activeRuntimeChecks === null || activeRuntimeChecks === void 0 ? void 0 : activeRuntimeChecks.strictActionSerializability) ||\n (activeRuntimeChecks === null || activeRuntimeChecks === void 0 ? void 0 : activeRuntimeChecks.strictStateSerializability)) &&\n this.serializer instanceof DefaultRouterStateSerializer) {\n console.warn('@ngrx/router-store: The serializability runtime checks cannot be enabled ' +\n 'with the DefaultRouterStateSerializer. The default serializer ' +\n 'has an unserializable router state and actions that are not serializable. ' +\n 'To use the serializability runtime checks either use ' +\n 'the MinimalRouterStateSerializer or implement a custom router state serializer. ' +\n 'This also applies to Ivy with immutability runtime checks.');\n }\n this.setUpStoreStateListener();\n this.setUpRouterEventsListener();\n }\n static forRoot(config = {}) {\n return {\n ngModule: StoreRouterConnectingModule,\n providers: [\n { provide: _ROUTER_CONFIG, useValue: config },\n {\n provide: ROUTER_CONFIG,\n useFactory: _createRouterConfig,\n deps: [_ROUTER_CONFIG],\n },\n {\n provide: RouterStateSerializer,\n useClass: config.serializer\n ? config.serializer\n : config.routerState === 0 /* Full */\n ? DefaultRouterStateSerializer\n : MinimalRouterStateSerializer,\n },\n ],\n };\n }\n setUpStoreStateListener() {\n this.store\n .pipe(select(this.stateKey), withLatestFrom(this.store))\n .subscribe(([routerStoreState, storeState]) => {\n this.navigateIfNeeded(routerStoreState, storeState);\n });\n }\n navigateIfNeeded(routerStoreState, storeState) {\n if (!routerStoreState || !routerStoreState.state) {\n return;\n }\n if (this.trigger === RouterTrigger.ROUTER) {\n return;\n }\n if (this.lastEvent instanceof NavigationStart) {\n return;\n }\n const url = routerStoreState.state.url;\n if (!isSameUrl(this.router.url, url)) {\n this.storeState = storeState;\n this.trigger = RouterTrigger.STORE;\n this.router.navigateByUrl(url).catch((error) => {\n this.errorHandler.handleError(error);\n });\n }\n }\n setUpRouterEventsListener() {\n const dispatchNavLate = this.config.navigationActionTiming ===\n NavigationActionTiming.PostActivation;\n let routesRecognized;\n this.router.events\n .pipe(withLatestFrom(this.store))\n .subscribe(([event, storeState]) => {\n this.lastEvent = event;\n if (event instanceof NavigationStart) {\n this.routerState = this.serializer.serialize(this.router.routerState.snapshot);\n if (this.trigger !== RouterTrigger.STORE) {\n this.storeState = storeState;\n this.dispatchRouterRequest(event);\n }\n }\n else if (event instanceof RoutesRecognized) {\n routesRecognized = event;\n if (!dispatchNavLate && this.trigger !== RouterTrigger.STORE) {\n this.dispatchRouterNavigation(event);\n }\n }\n else if (event instanceof NavigationCancel) {\n this.dispatchRouterCancel(event);\n this.reset();\n }\n else if (event instanceof NavigationError) {\n this.dispatchRouterError(event);\n this.reset();\n }\n else if (event instanceof NavigationEnd) {\n if (this.trigger !== RouterTrigger.STORE) {\n if (dispatchNavLate) {\n this.dispatchRouterNavigation(routesRecognized);\n }\n this.dispatchRouterNavigated(event);\n }\n this.reset();\n }\n });\n }\n dispatchRouterRequest(event) {\n this.dispatchRouterAction(ROUTER_REQUEST, { event });\n }\n dispatchRouterNavigation(lastRoutesRecognized) {\n const nextRouterState = this.serializer.serialize(lastRoutesRecognized.state);\n this.dispatchRouterAction(ROUTER_NAVIGATION, {\n routerState: nextRouterState,\n event: new RoutesRecognized(lastRoutesRecognized.id, lastRoutesRecognized.url, lastRoutesRecognized.urlAfterRedirects, nextRouterState),\n });\n }\n dispatchRouterCancel(event) {\n this.dispatchRouterAction(ROUTER_CANCEL, {\n storeState: this.storeState,\n event,\n });\n }\n dispatchRouterError(event) {\n this.dispatchRouterAction(ROUTER_ERROR, {\n storeState: this.storeState,\n event: new NavigationError(event.id, event.url, `${event}`),\n });\n }\n dispatchRouterNavigated(event) {\n const routerState = this.serializer.serialize(this.router.routerState.snapshot);\n this.dispatchRouterAction(ROUTER_NAVIGATED, { event, routerState });\n }\n dispatchRouterAction(type, payload) {\n this.trigger = RouterTrigger.ROUTER;\n try {\n this.store.dispatch({\n type,\n payload: Object.assign(Object.assign({ routerState: this.routerState }, payload), { event: this.config.routerState === 0 /* Full */\n ? payload.event\n : {\n id: payload.event.id,\n url: payload.event.url,\n // safe, as it will just be `undefined` for non-NavigationEnd router events\n urlAfterRedirects: payload.event\n .urlAfterRedirects,\n } }),\n });\n }\n finally {\n this.trigger = RouterTrigger.NONE;\n }\n }\n reset() {\n this.trigger = RouterTrigger.NONE;\n this.storeState = null;\n this.routerState = null;\n }\n}\n/** @nocollapse */ /** @nocollapse */ StoreRouterConnectingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: StoreRouterConnectingModule, deps: [{ token: i1.Store }, { token: i2.Router }, { token: RouterStateSerializer }, { token: i0.ErrorHandler }, { token: ROUTER_CONFIG }, { token: ACTIVE_RUNTIME_CHECKS }], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ /** @nocollapse */ StoreRouterConnectingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: StoreRouterConnectingModule });\n/** @nocollapse */ /** @nocollapse */ StoreRouterConnectingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: StoreRouterConnectingModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: StoreRouterConnectingModule, decorators: [{\n type: NgModule,\n args: [{}]\n }], ctorParameters: function () {\n return [{ type: i1.Store }, { type: i2.Router }, { type: RouterStateSerializer }, { type: i0.ErrorHandler }, { type: undefined, decorators: [{\n type: Inject,\n args: [ROUTER_CONFIG]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ACTIVE_RUNTIME_CHECKS]\n }] }];\n } });\n/**\n * Check if the URLs are matching. Accounts for the possibility of trailing \"/\" in url.\n */\nfunction isSameUrl(first, second) {\n return stripTrailingSlash(first) === stripTrailingSlash(second);\n}\nfunction stripTrailingSlash(text) {\n if ((text === null || text === void 0 ? void 0 : text.length) > 0 && text[text.length - 1] === '/') {\n return text.substring(0, text.length - 1);\n }\n return text;\n}\n\nfunction createRouterSelector() {\n return createFeatureSelector(DEFAULT_ROUTER_FEATURENAME);\n}\nfunction getSelectors(selectState = createRouterSelector()) {\n const selectRouterState = createSelector(selectState, (router) => router && router.state);\n const selectRootRoute = createSelector(selectRouterState, (routerState) => routerState && routerState.root);\n const selectCurrentRoute = createSelector(selectRootRoute, (rootRoute) => {\n if (!rootRoute) {\n return undefined;\n }\n let route = rootRoute;\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n });\n const selectFragment = createSelector(selectRootRoute, (route) => route && route.fragment);\n const selectQueryParams = createSelector(selectRootRoute, (route) => route && route.queryParams);\n const selectQueryParam = (param) => createSelector(selectQueryParams, (params) => params && params[param]);\n const selectRouteParams = createSelector(selectCurrentRoute, (route) => route && route.params);\n const selectRouteParam = (param) => createSelector(selectRouteParams, (params) => params && params[param]);\n const selectRouteData = createSelector(selectCurrentRoute, (route) => route && route.data);\n const selectUrl = createSelector(selectRouterState, (routerState) => routerState && routerState.url);\n return {\n selectCurrentRoute,\n selectFragment,\n selectQueryParams,\n selectQueryParam,\n selectRouteParams,\n selectRouteParam,\n selectRouteData,\n selectUrl,\n };\n}\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DEFAULT_ROUTER_FEATURENAME, DefaultRouterStateSerializer, MinimalRouterStateSerializer, NavigationActionTiming, ROUTER_CANCEL, ROUTER_CONFIG, ROUTER_ERROR, ROUTER_NAVIGATED, ROUTER_NAVIGATION, ROUTER_REQUEST, RouterStateSerializer, StoreRouterConnectingModule, createRouterSelector, getSelectors, routerCancelAction, routerErrorAction, routerNavigatedAction, routerNavigationAction, routerReducer, routerRequestAction };\n","
    \n
    \n
    \n {{ title }}\n
    \n \n \n \n
    \n
    \n
    \n \n
    \n {{ message }}\n
    \n \n \n \n \n
    \n
    \n
    \n\n","import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { Component, HostBinding } from '@angular/core';\nimport { Toast, ToastPackage, ToastrService } from 'ngx-toastr';\n\nconst flyIn = transition(\n 'inactive => active',\n animate(\n '400ms ease-in',\n keyframes([\n style({\n transform: 'translate3d(100%, 0, 0) skewX(-20deg)',\n opacity: 0,\n }),\n style({\n transform: 'skewX(20deg)',\n opacity: 1,\n }),\n style({\n transform: 'skewX(-5deg)',\n opacity: 1,\n }),\n style({\n transform: 'none',\n opacity: 1,\n }),\n ]),\n ),\n);\n\nconst flyOut = transition(\n 'active => removed',\n animate(\n '400ms ease-out',\n keyframes([\n style({\n opacity: 1,\n }),\n style({\n transform: 'translate3d(100%, 0, 0) skewX(30deg)',\n opacity: 0,\n }),\n ]),\n ),\n);\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[app-toast]',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n animations: [\n trigger('flyInOut', [\n state(\n 'inactive',\n style({\n opacity: 0,\n }),\n ),\n flyIn,\n flyOut,\n ]),\n ],\n preserveWhitespaces: false,\n})\nexport class ToastComponent extends Toast {\n isIframe = window.self !== window.top;\n\n @HostBinding('class') classes = this.isIframe ? 'd-none' : '';\n\n constructor(protected toastrService: ToastrService, public toastPackage: ToastPackage) {\n super(toastrService, toastPackage);\n }\n\n action(event: Event) {\n event.stopPropagation();\n this.toastPackage.triggerAction();\n return false;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { IS_USA_ENV } from '@shared/utils/environment-utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UsaCountryGuardService implements CanActivate {\n constructor(private router: Router, @Inject(IS_USA_ENV) private isUsaEnv: boolean) {}\n\n canActivate(): boolean {\n if (!this.isUsaEnv) {\n this.router.navigateByUrl('/');\n }\n return this.isUsaEnv;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { ConsultantFinancialStateEnum } from '@core/enums/consultant-financial-state.enum';\nimport { AppState } from '@core/store';\nimport {\n selectCurrentConsultant,\n selectIsCurrentConsultantCleared,\n selectIsCurrentConsultantFetched,\n} from '@core/store/consultant';\nimport { Store } from '@ngrx/store';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable } from 'rxjs';\nimport { filter, map, withLatestFrom } from 'rxjs/operators';\nimport { AppInitService } from './app-init.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserFeatureGuardService implements CanActivate {\n constructor(\n private store$: Store,\n private router: Router,\n private appInitService: AppInitService,\n ) {}\n\n canActivate(): Observable {\n return this.store$.select(selectIsCurrentConsultantFetched).pipe(\n withLatestFrom(\n this.store$.select(selectIsCurrentConsultantCleared),\n this.store$.select(selectCurrentConsultant),\n ),\n filter(\n ([isCurrentConsultantFetched, isCurrentConsultantCleared]) =>\n isCurrentConsultantFetched || isCurrentConsultantCleared,\n ),\n map(([, , currentConsultant]) => {\n switch (true) {\n case !this.appInitService.Settings.ec.isUserEnabled:\n case isMexEnv &&\n currentConsultant?.financialState ===\n ConsultantFinancialStateEnum.NotAllowedToPlaceOrders:\n this.router.navigateByUrl('/');\n return false;\n\n default:\n return true;\n }\n }),\n );\n }\n}\n","
    \n
    \n
    \n

    My Account

    \n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { MobileMedia } from '@core/constants/screen-sizes';\nimport { AuthService } from '@core/services/auth.service';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-account',\n templateUrl: './account.component.html',\n styleUrls: ['./account.component.scss'],\n})\nexport class AccountComponent implements OnInit, OnDestroy {\n readonly isUsaEnv = isUsaEnv;\n readonly UserRoute = UserRoute;\n navBarActive: boolean;\n activeId: string = '';\n subscriptions: Subscription = new Subscription();\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private authService: AuthService,\n ) {}\n\n deactivate(): void {\n if (this.isInMobileView()) {\n this.navBarActive = false;\n this.activeId = '';\n }\n }\n\n activate(): void {\n if (this.isInMobileView()) {\n this.navBarActive = true;\n }\n }\n\n ngOnInit(): void {\n this.onNavigation();\n this.subscriptions.add(\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe(() => this.onNavigation()),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n logout() {\n this.authService.logOut();\n this.router.navigate(['/']);\n }\n\n private isInMobileView(): boolean {\n return this.breakpointObserver.isMatched(MobileMedia);\n }\n\n private isInCurrentRoute(route: string): boolean {\n return this.router.url.endsWith(route) || this.router.url.endsWith(route + '/');\n }\n\n private navigateToProfile(): void {\n this.activeId = UserRoute.Profile;\n this.router.navigate([UserRoute.Profile], { relativeTo: this.activatedRoute });\n }\n\n private onNavigation(): void {\n if (!this.isInMobileView()) {\n if (this.isInCurrentRoute(UserRoute.MyAccount)) {\n this.navigateToProfile();\n } else {\n this.activeId = this.router.url.split('/').pop();\n }\n }\n }\n}\n","export enum TableSortDirection {\n none = '',\n asc = 'asc',\n desc = 'desc',\n}\n","
    \n
    \n \n {{ title }}\n
    \n
    {{ rightText }}
    \n
    \n

    \n \n \n {{ title }}\n {{ rightText }}\n \n

    \n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-account-header',\n templateUrl: './account-header.component.html',\n styleUrls: ['./account-header.component.scss'],\n})\nexport class AccountHeaderComponent {\n @Input() title: string;\n @Input() rightText: string;\n}\n","import { TableSortDirection } from '@core/enums/table-sort-direction.enum';\n\nexport const TableSortDirectionCycle: { [key: string]: TableSortDirection } = {\n [TableSortDirection.asc]: TableSortDirection.desc,\n [TableSortDirection.desc]: TableSortDirection.none,\n [TableSortDirection.none]: TableSortDirection.asc,\n};\n","/* eslint-disable @angular-eslint/no-host-metadata-property */\n/* eslint-disable @angular-eslint/directive-selector */\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { TableSortDirectionCycle } from '@core/constants/table-sort-direction-cycle';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\n\nexport type SortColumn = string | '';\n\nexport interface SortEvent {\n column: SortColumn;\n direction: TableSortDirection;\n}\n\n@Directive({\n selector: 'th[sortable]',\n host: {\n '[class.asc]': 'direction === \"asc\"',\n '[class.desc]': 'direction === \"desc\"',\n '(click)': 'changeDirection()',\n },\n})\nexport class SortableTableHeaderDirective {\n @Input() sortable: SortColumn = '';\n @Input() direction: TableSortDirection = TableSortDirection.none;\n @Output() sort = new EventEmitter();\n\n changeDirection() {\n this.direction = TableSortDirectionCycle[this.direction];\n this.sort.emit({ column: this.sortable, direction: this.direction });\n }\n}\n","\n \n \n \n \n \n \n\n\n\n \n\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-sortable-table-action',\n templateUrl: './sortable-table-action.component.html',\n styleUrls: ['./sortable-table-action.component.scss'],\n})\nexport class SortableTableActionComponent {\n @Input() actionMethod: () => void;\n @Input() actionPath: string;\n @Input() identifier: string;\n @Input() ariaLabel: string;\n\n constructor() {}\n}\n","\n \n \n \n \n {{ column.headerName }}\n \n \n \n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n\n\n \n \n \n \n {{ column.currency }}\n \n {{ row[column.field] }}\n \n \n\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { SortableTableColumn } from '@core/models/sortable-table-column.model';\nimport { SortableTableHeaderDirective, SortEvent } from './sortable-table-header.directive';\n\nconst compare = (v1: string | number | boolean, v2: string | number | boolean) =>\n v1 < v2 ? -1 : v1 > v2 ? 1 : 0;\n\n@Component({\n selector: 'app-sortable-table',\n templateUrl: './sortable-table.component.html',\n styleUrls: ['./sortable-table.component.scss'],\n})\nexport class SortableTableComponent implements OnInit, OnChanges {\n @Input() columns: SortableTableColumn[];\n @Input() rows: any[];\n @Input() showEditAction: boolean = true;\n @Input() rowStyle: object | ((row: any) => object);\n\n sortHistory: SortEvent;\n\n computedRows: any[];\n\n @ViewChildren(SortableTableHeaderDirective) headers: QueryList;\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.sortHistory) {\n this.sort(this.sortHistory.column, this.sortHistory.direction);\n } else {\n this.computedRows = changes.rows.currentValue;\n }\n }\n\n ngOnInit(): void {\n const defaultSort = this.columns.find((c) => c.sort);\n if (defaultSort) {\n this.sort(defaultSort.field, defaultSort.sort);\n } else {\n this.computedRows = this.rows;\n }\n }\n\n onSort({ column, direction }: SortEvent) {\n this.headers.forEach((header) => {\n if (header.sortable !== column) {\n header.direction = TableSortDirection.none;\n }\n });\n\n if (direction === '' || column === '') {\n this.computedRows = this.rows;\n } else {\n this.sort(column, direction);\n }\n }\n\n getColumnStyles(column: SortableTableColumn, row: any) {\n switch (typeof column?.styles) {\n case 'object':\n return column.styles;\n\n case 'function':\n return column.styles(row);\n\n default:\n return {};\n }\n }\n\n getTooltip(column: SortableTableColumn, row: any): string {\n switch (typeof column?.tooltip) {\n case 'string':\n return column.tooltip;\n\n case 'function':\n return column.tooltip(row);\n\n default:\n return null;\n }\n }\n\n getWarningIcon(column: SortableTableColumn, row: any) {\n switch (typeof column?.warningIcon) {\n case 'boolean':\n return column.warningIcon;\n\n case 'function':\n return column.warningIcon(row);\n\n default:\n return false;\n }\n }\n\n getRowStyle(row: any) {\n switch (typeof this.rowStyle) {\n case 'object':\n return this.rowStyle;\n\n case 'function':\n return this.rowStyle(row);\n\n default:\n return {};\n }\n }\n\n getActionField(field1: string, field2: string) {\n return field1 ? field1 : field2;\n }\n\n private sort(column: string, direction: TableSortDirection) {\n this.sortHistory = { column, direction };\n this.computedRows = [...this.rows].sort((a, b) => {\n let res;\n const currentColumn = this.columns.find((c) => c.field === column);\n if (currentColumn.isDate) {\n res = compare(Date.parse(a[column]), Date.parse(b[column]));\n } else {\n res = compare(a[column], b[column]);\n }\n return direction === TableSortDirection.asc ? res : -res;\n });\n }\n}\n","
    \n
    \n \n \n New Address\n \n
    \n\n
    \n \n
    \n\n \n \n \n
    \n\n\n \n\n\n\n
    \n
    \n \n
    \n
    {{ address.name }}
    \n
    \n {{ address.addressLine1 }} {{ address.addressLine2 }} {{ address.addressLine3 }}\n
    \n
    \n \n {{ address.city }}\n \n {{ address.state }} {{ address.zipCode }} \n
    \n
    \n
    Default
    \n
    \n
    \n
    \n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Component, OnInit } from '@angular/core';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { MobileMedia } from '@core/constants/screen-sizes';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { SortableTableColumn } from '@core/models/sortable-table-column.model';\nimport { AppState } from '@core/store';\nimport { selectAddresses, selectLoading } from '@core/store/address';\nimport { Address, AddressType } from '@core/store/address/address-state-models';\nimport { fetchAddresses } from '@core/store/address/address.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-addresses',\n templateUrl: './addresses.component.html',\n styleUrls: ['./addresses.component.scss'],\n})\nexport class AddressesComponent implements OnInit {\n readonly NewAddressRoute = UserRoute.New;\n\n addresses$: Observable;\n loading$: Observable;\n\n addressType = AddressType;\n\n columns: SortableTableColumn[] = [\n { field: 'name', headerName: $localize`Address Name`, sortable: true },\n { field: 'type', headerName: $localize`Type`, sortable: true, sort: TableSortDirection.asc },\n { field: 'address', headerName: $localize`Address`, sortable: true, dataPrivate: true },\n { field: 'city', headerName: $localize`City`, sortable: true, dataPrivate: true },\n { field: 'state', headerName: $localize`State`, sortable: true },\n { field: 'zipCode', headerName: $localize`Zip`, sortable: true },\n {\n field: 'id',\n headerName: '',\n action: true,\n actionIcon: 'bi bi-pen',\n ariaLabel: $localize`Edit shipping address`,\n },\n ];\n\n constructor(\n private store$: Store,\n private breakpointObserver: BreakpointObserver,\n ) {}\n\n ngOnInit(): void {\n this.store$.dispatch(fetchAddresses());\n\n this.addresses$ = this.store$.select(selectAddresses);\n this.loading$ = this.store$.select(selectLoading);\n }\n\n isInMobileView(): boolean {\n return this.breakpointObserver.isMatched(MobileMedia);\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nexport enum OrderStatus {\n Shipped = 'Shipped',\n Processing = 'Processing', // State before shipping\n PartiallyShipped = 'PartiallyShipped',\n OnHold = 'OnHold',\n Cancelled = 'Cancelled',\n}\n","import { OrderStatus } from '@core/enums/shipment-status-enum';\n\nexport const OrderStatusLocale = {\n [OrderStatus.Shipped]: $localize`Shipped`,\n [OrderStatus.Processing]: $localize`In Process`,\n [OrderStatus.PartiallyShipped]: $localize`Partial Shipped`,\n [OrderStatus.OnHold]: $localize`On Hold`,\n [OrderStatus.Cancelled]: $localize`Cancelled`,\n};\n","
    \n
    Name
    \n
    Sku
    \n
    Quantity
    \n
    \n \n
    {{ backOrderItem.name }}
    \n
    #{{ backOrderItem.skuCode }}
    \n
    {{ backOrderItem.quantity }}
    \n
    \n
    \n
    \n
    \n\n
    \n \n
    \n
    {{ backOrderItem.name }}
    \n
    #{{ backOrderItem.skuCode }}
    \n
    \n {{ backOrderItem.quantity }}X \n
    \n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { selectOrderDetailBackOrderItems } from '@core/store/order';\nimport { OrderDetailsBackOrderItem } from '@core/store/order/order-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-order-details-back-order-items',\n templateUrl: './order-details-back-order-items.component.html',\n styleUrls: ['./order-details-back-order-items.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderDetailsBackOrderItemsComponent implements OnInit {\n backOrderItems$: Observable;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.backOrderItems$ = this.store$.select(selectOrderDetailBackOrderItems);\n }\n}\n","export const CarrierTypeName = {\n DTG: 'DeliverThis',\n UPS: 'UPS',\n ES: 'Estefa',\n FDEG: 'FedEx',\n FEDRH: 'FedEx',\n};\n","
    \n
    \n
    Sku
    \n
    Quantity
    \n
    \n \n
    \n
    {{ cartonItem.name }}
    \n
    \n
    #{{ cartonItem.sku }}
    \n
    {{ cartonItem.qty }}
    \n
    \n
    \n
    \n","import { Component, Input } from '@angular/core';\nimport { OrderDetailsCartonItem } from '@core/store/order/order-state-models';\n\n@Component({\n selector: 'app-carton-items',\n templateUrl: './carton-items.component.html',\n styleUrls: ['./carton-items.component.scss'],\n})\nexport class CartonItemsComponent {\n @Input() cartonItems: OrderDetailsCartonItem[];\n\n constructor() {}\n}\n","
    \n
    Name
    \n
    Shipping date
    \n
    Weight
    \n
    Tracking
    \n
    \n \n \n
    {{ carton.name }}
    \n
    {{ carton.shippingDate | date: 'MM/dd/YYYY' }}
    \n
    {{ carton.weight | number }}lb
    \n
    \n \n
    \n {{ carton.trackingNumber }}\n
    \n
    \n \n {{ getCollapseText(carton.id) }}\n \n
    \n \n
    \n 1 && i < cartons.length - 1\">\n
    \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    Name
    \n
    {{ carton.name }}
    \n
    Shipping date
    \n
    {{\n carton.shippingDate | date: 'MM/dd/YYYY'\n }}
    \n\n
    Weight
    \n
    {{ carton.weight }}lb
    \n\n
    Tracking
    \n \n
    \n {{ carton.trackingNumber }}\n
    \n \n
    \n
    {{ item.name }}
    \n
    #{{ item.sku }}
    \n
    \n {{ item.qty }}X\n
    \n
    \n
    \n \n {{ getCollapseText(carton.id) }}\n \n
    \n
    \n\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { CarrierTypeName } from '@core/constants/carrier-type-name';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { AppState } from '@core/store';\nimport { selectOrderDetailCartons } from '@core/store/order';\nimport { OrderDetailsCarton } from '@core/store/order/order-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-order-details-cartons',\n templateUrl: './order-details-cartons.component.html',\n styleUrls: ['./order-details-cartons.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderDetailsCartonsComponent implements OnInit {\n readonly thumbnail = Thumbnail;\n readonly CarrierName = CarrierTypeName;\n\n cartons$: Observable;\n collapseState: { [key: string]: boolean } = {};\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.cartons$ = this.store$.select(selectOrderDetailCartons);\n }\n\n getCollapseText(id: string) {\n return this.collapseState?.[id] ? $localize`Show less` : $localize`Show more`;\n }\n\n hasProp(key: string) {\n return key in this.collapseState;\n }\n}\n","export const compare = (v1: string | number, v2: string | number) =>\n v1 < v2 ? -1 : v1 > v2 ? 1 : 0;\n","
    \n \n
    \n \n \n \n
    \n
    \n
    \n
    {{ orderLine.collectionName }}
    \n {{ orderLine.productName | titlecase }}\n
    #{{ orderLine.sku }}
    \n
    \n
    \n
    \n
    \n {{ orderLine.quantity }}X\n \n {{ orderLine.discountedPrice | phCurrency }}\n \n \n {{ orderLine.originalPrice | phCurrency }}\n \n
    \n
    \n
    \n
    {{ orderLine.total | phCurrency }}
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n {{ column.title }}\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n \n \n \n
    \n
    {{ orderLine.collectionName }}
    \n \n {{ orderLine.productName | titlecase }}\n \n
    #{{ orderLine.sku }}
    \n
    \n
    \n
    \n
    \n

    {{ orderLine.quantity }}

    \n
    \n
    \n
    \n

    {{ orderLine.discountedPrice | phCurrency }}

    \n
    \n
    \n
    \n

    {{ orderLine.total | phCurrency }}

    \n
    \n
    \n
    \n
    \n","import { Component, Input, OnInit } from '@angular/core';\nimport { ProductRoutes } from '@core/constants/routes.const';\nimport { TableSortDirectionCycle } from '@core/constants/table-sort-direction-cycle';\nimport { OrderStatus } from '@core/enums/shipment-status-enum';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { OrderLineDetails } from '@core/store/order/order-state-models';\nimport { compare } from '../../common/order-sort-common';\n\n@Component({\n selector: 'app-order-details-table',\n templateUrl: './order-details-table.component.html',\n styleUrls: ['./order-details-table.component.scss'],\n})\nexport class OrderDetailsTableComponent implements OnInit {\n readonly productRoute = ProductRoutes.Product;\n readonly pRoute = ProductRoutes.P;\n\n @Input() orderLines: OrderLineDetails[];\n\n sortableOrderLines: OrderLineDetails[];\n tableSortDirection = TableSortDirection;\n shippingStatus = OrderStatus;\n orderLineColumns = [\n { title: $localize`Product`, type: 'productName' },\n { title: $localize`Qty`, type: 'quantity' },\n { title: $localize`Price`, type: 'discountedPrice' },\n { title: $localize`Total`, type: 'total' },\n ];\n\n sortColumn: string | null;\n direction: TableSortDirection;\n thumbnail = Thumbnail;\n\n constructor() {\n this.direction = TableSortDirection.none;\n this.sortColumn = null;\n }\n\n ngOnInit(): void {\n this.sortableOrderLines = this.orderLines;\n }\n\n onSort(column: string): void {\n if (column !== this.sortColumn) {\n this.direction = TableSortDirection.none;\n }\n this.direction = TableSortDirectionCycle[this.direction];\n this.sortColumn = column;\n\n if (this.direction === TableSortDirection.none) {\n this.sortableOrderLines = this.orderLines;\n } else {\n this.sort(column, this.direction);\n }\n }\n\n private sort(column: string, direction: TableSortDirection) {\n this.sortableOrderLines = this.sortableOrderLines.slice().sort((a, b) => {\n const res = compare(a[column], b[column]);\n return direction === TableSortDirection.asc ? res : -res;\n });\n }\n}\n","
    \n
    \n
    \n Promotional discount\n -{{ promotionalDiscount | phCurrency }}\n
    \n
    \n Merchandise total\n {{ merchandiseTotal | phCurrency }}\n
    \n
    \n Delivery fee total\n {{ deliveryFeeTotal | phCurrency }}\n
    \n
    \n Sales tax total\n {{ salesTaxTotal | phCurrency }}\n
    \n
    \n Total price\n {{ totalPrice | phCurrency }}\n
    \n
    \n
    \n","import { Component, Input } from '@angular/core';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\n\n@Component({\n selector: 'app-order-details-total',\n templateUrl: './order-details-total.component.html',\n styleUrls: ['./order-details-total.component.scss'],\n})\nexport class OrderDetailsTotalComponent {\n @Input() promotionalDiscount: number;\n @Input() merchandiseTotal: number;\n @Input() deliveryFeeTotal: number;\n @Input() salesTaxTotal: number;\n @Input() totalPrice: number;\n\n readonly isUsaEnv = isUsaEnv;\n\n constructor() {}\n}\n","
    \n \n \n My Orders\n \n
    \n \n
    \n \n Order Date{{ orderDetails.createdDate | date: 'longDate' }} |\n {{ OrderStatusLocale[orderDetails.orderStatus] }}\n \n
    \n
    \n
    \n
    \n
    \n My Orders >\n Order #{{ orderDetails.orderNumber }}\n
    \n
    \n
    \n
    \n
    \n \n Order #{{ orderDetails.orderNumber }}\n
    \n\n
    \n \n Order date{{ orderDetails.createdDate | date: 'longDate' }} |\n {{ OrderStatusLocale[orderDetails.orderStatus] }}\n \n
    \n
    \n
    \n
    \n\n
    0\">\n
    Download vouchers
    \n
    \n \n \n \n
    \n
    \n\n
    \n \n
    \n\n \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n \n
    \n
    \n
    \n To be shipped\n
    \n
    \n
    \n \n
    \n\n \n
    \n
    \n
    \n Carton information\n
    \n
    \n
    \n \n
    \n\n
    \n
    \n
    \n Product(s)\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { OrderStatusLocale } from '@core/constants/shipment-status-locale';\nimport { InfoCardAttributes } from '@core/models/info-card-attributes.model';\nimport { VoucherService } from '@core/services/voucher.service';\nimport { AppState } from '@core/store';\nimport { selectOrderDetails, selectOrderStateLoading } from '@core/store/order';\nimport { OrderAddress, OrderDetails, OrderLineDetails } from '@core/store/order/order-state-models';\nimport { fetchOrderDetails } from '@core/store/order/order.actions';\nimport { ReceivedVoucher } from '@core/store/voucher/voucher-state-models';\nimport { Store } from '@ngrx/store';\nimport {\n createConsultantInfoCard,\n createHostInfoCard,\n createPartyInfoCard,\n createPersonalInfoCard,\n} from '@shared/utils/create-shipping-info-card-attributes';\nimport { getMaskedCardNumber } from '@shared/utils/get-masked-card-number-utils';\nimport { Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-order-details',\n templateUrl: './order-details.component.html',\n styleUrls: ['./order-details.component.scss'],\n})\nexport class OrderDetailsComponent implements OnInit, OnDestroy {\n orderDetails$: Observable;\n loading$: Observable;\n orderLines$: Observable;\n cardNumber$: Observable;\n vouchers$: Observable;\n\n readonly AddressCardTitles = {\n shippingInfo: $localize`Shipping information`,\n billingInfo: $localize`Billing information`,\n };\n\n readonly OrderStatusLocale = OrderStatusLocale;\n createPersonalInfoCard = createPersonalInfoCard;\n createPartyInfoCard = createPartyInfoCard;\n createHostInfoCard = createHostInfoCard;\n createConsultantInfoCard = createConsultantInfoCard;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n private activatedRoute: ActivatedRoute,\n private voucherService: VoucherService,\n ) {}\n\n ngOnInit(): void {\n this.orderDetails$ = this.store$.select(selectOrderDetails);\n this.loading$ = this.store$.select(selectOrderStateLoading);\n this.orderLines$ = this.orderDetails$.pipe(map((orderDetails) => orderDetails.orderLines));\n this.cardNumber$ = this.orderDetails$.pipe(\n map((p) => ({\n title: $localize`Payment information`,\n cardNumber: getMaskedCardNumber(p.cardFirstFourDigits, p.cardLastFourDigits),\n readOnly: true,\n })),\n );\n\n this.vouchers$ = this.orderDetails$.pipe(map((orderDetails) => orderDetails?.vouchers));\n\n this.subscriptions.add(\n this.activatedRoute.paramMap.subscribe((pMap) => {\n const orderId = pMap.get('orderId');\n this.store$.dispatch(fetchOrderDetails({ orderId }));\n }),\n );\n }\n\n createAddressInfoCard(address: OrderAddress, title: string): InfoCardAttributes {\n return {\n title: title,\n name: address.firstName + ' ' + address.lastName,\n addressLine1: `${address.addressLine1}, ${address.addressLine2}`,\n addressLine2: `${address.city}, ${address.state}, ${address.zipCode}`,\n phone: address.phoneNumber,\n };\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n download(voucherId: string) {\n this.voucherService.downloadVoucher(voucherId);\n }\n}\n","
    \n \n
    \n\n\n
    \n \n
    \n
    \n
    \n \n Order ID{{ order.orderNumber }}\n
    \n
    \n

    \n {{ order.orderStatus }}\n

    \n
    \n\n
    \n \n Order date{{ order.createdDate | date: 'longDate' }}\n \n
    \n \n Consultant\n \n {{ order.consultantFirstName + ' ' + order.consultantLastName }}\n \n
    \n
    \n Host\n {{ order.partyHost }} \n
    \n
    \n \n \n {{ actionText }}\n \n \n \n \n
    \n
    \n {{ order.total | phCurrency }}\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n","import { formatDate } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output } from '@angular/core';\nimport { OrderStatusLocale } from '@core/constants/shipment-status-locale';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { SortableTableColumn } from '@core/models/sortable-table-column.model';\nimport { AppState } from '@core/store';\nimport { selectOrderHistory, selectOrderStateLoading } from '@core/store/order';\nimport { OrderHistoryItem } from '@core/store/order/order-state-models';\nimport { fetchOrderHistory } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-order-history',\n templateUrl: './order-history.component.html',\n styleUrls: ['./order-history.component.scss'],\n})\nexport class OrderHistoryComponent implements OnInit {\n @Input() actionIcon: string = 'bi bi-eye';\n @Input() actionText: string = $localize`Details`;\n @Input() actionField: string = 'id';\n @Input() enableActionMethod: boolean = false;\n @Output() actionMethod: EventEmitter = new EventEmitter();\n\n orderHistory$: Observable;\n orderHistoryTableData$: Observable;\n loading$: Observable;\n readonly orderStatusLocale = OrderStatusLocale;\n\n columns: SortableTableColumn[];\n\n constructor(private store$: Store, @Inject(LOCALE_ID) private localeId: string) {}\n\n ngOnInit(): void {\n this.initColumns();\n this.store$.dispatch(fetchOrderHistory());\n\n this.orderHistory$ = this.store$.select(selectOrderHistory);\n this.orderHistoryTableData$ = this.store$.select(selectOrderHistory).pipe(\n map((orderHistory) =>\n orderHistory.map((item) => ({\n orderNumber: item.orderNumber,\n createdDate: formatDate(item.createdDate, 'longDate', this.localeId),\n orderStatus: this.orderStatusLocale[item.orderStatus],\n total: +item.total.toFixed(2),\n id: item.orderId,\n })),\n ),\n );\n this.loading$ = this.store$.select(selectOrderStateLoading);\n }\n\n emitAction(value: any) {\n this.actionMethod.emit(value);\n }\n\n private initColumns() {\n this.columns = [\n { field: 'orderNumber', headerName: $localize`Order number`, sortable: true },\n {\n field: 'createdDate',\n headerName: $localize`Date`,\n sortable: true,\n isDate: true,\n sort: TableSortDirection.desc,\n },\n { field: 'orderStatus', headerName: $localize`Status`, sortable: true },\n { field: 'total', headerName: $localize`Total`, sortable: true, currency: '$' },\n {\n field: this.actionField,\n headerName: '',\n action: true,\n actionIcon: this.actionIcon,\n ariaLabel: $localize`View order`,\n ...(this.enableActionMethod ? { actionMethod: this.emitAction.bind(this) } : {}),\n },\n ];\n }\n}\n","\n
    \n

    Orders submitted by my Consultant

    \n
    You can see those orders here which were submitted by your consultant for you.
    \n
    \n\n \n
    \n \n
    \n
    \n
    \n \n Order ID{{ order.poeOrderId }}\n
    \n
    \n

    \n {{ order.ecommerceStatus }}\n

    \n
    \n\n
    \n \n Order date{{ order.dateReceived | date: 'longDate' }}\n \n
    \n
    \n \n \n {{ actionText }}\n \n \n \n \n
    \n
    \n {{ order.totalMerchCost | phCurrency }}\n
    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n","import { formatDate } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output } from '@angular/core';\nimport { OrderStatusLocale } from '@core/constants/shipment-status-locale';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { SortableTableColumn } from '@core/models/sortable-table-column.model';\nimport { AppState } from '@core/store';\nimport { selectCCOrderHistory } from '@core/store/order';\nimport { CCOrderHistoryItem } from '@core/store/order/order-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-cc-order-history',\n templateUrl: './cc-order-history.component.html',\n styleUrls: ['./cc-order-history.component.scss'],\n})\nexport class CCOrderHistoryComponent implements OnInit {\n @Input() actionIcon: string = 'bi bi-eye';\n @Input() actionText: string = $localize`Details`;\n @Input() actionField: string = 'id';\n @Input() enableActionMethod: boolean = false;\n @Output() actionMethod: EventEmitter = new EventEmitter();\n\n ccOrderHistory$: Observable;\n ccOrderHistoryTableData$: Observable;\n readonly OrderStatusLocale = OrderStatusLocale;\n readonly ActionPath = 'cc/';\n\n columns: SortableTableColumn[];\n\n constructor(private store$: Store, @Inject(LOCALE_ID) private localeId: string) {}\n\n ngOnInit(): void {\n this.initColumns();\n\n this.ccOrderHistory$ = this.store$.select(selectCCOrderHistory);\n this.ccOrderHistoryTableData$ = this.store$.select(selectCCOrderHistory).pipe(\n map((ccOrderHistory) =>\n ccOrderHistory.map((item) => ({\n orderNumber: item.poeOrderId,\n createdDate: formatDate(item.dateReceived, 'longDate', this.localeId),\n orderStatus: this.OrderStatusLocale[item.ecommerceStatus],\n total: +item.totalMerchCost.toFixed(2),\n id: item.poeOrderId,\n })),\n ),\n );\n }\n\n emitAction(value: any) {\n this.actionMethod.emit(value);\n }\n\n private initColumns() {\n this.columns = [\n { field: 'orderNumber', headerName: $localize`Order number`, sortable: true },\n {\n field: 'createdDate',\n headerName: $localize`Date`,\n sortable: true,\n isDate: true,\n sort: TableSortDirection.desc,\n },\n { field: 'orderStatus', headerName: $localize`Status`, sortable: true },\n { field: 'total', headerName: $localize`Total`, sortable: true, currency: '$' },\n {\n field: this.actionField,\n headerName: '',\n action: true,\n actionIcon: this.actionIcon,\n actionPath: this.ActionPath,\n ariaLabel: $localize`View order`,\n ...(this.enableActionMethod ? { actionMethod: this.emitAction.bind(this) } : {}),\n },\n ];\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { fetchCCOrderHistory } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'app-orders',\n templateUrl: './orders.component.html',\n styleUrls: ['./orders.component.scss'],\n})\nexport class OrdersComponent implements OnInit {\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.store$.dispatch(fetchCCOrderHistory());\n }\n}\n","
    \n
    \n \n
    \n\n \n\n \n
    \n","import { PaymentMethodType } from '@core/store/payment/payment-state-models';\n\nexport const PaymentMethodTypeLocale = {\n [PaymentMethodType.default]: $localize`Default`,\n [PaymentMethodType.other]: $localize`Set Default`,\n};\n","import { Component, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { ConfirmModalComponent } from '@shared/components/confirm-modal/confirm-modal.component';\n\n@Component({\n selector: 'app-address-required-modal',\n templateUrl: './address-required-modal.component.html',\n styleUrls: ['./address-required-modal.component.scss'],\n})\nexport class AddressRequiredModalComponent {\n @ViewChild('modal') private modal: ConfirmModalComponent;\n\n constructor(private router: Router) {}\n\n open() {\n this.modal.open();\n }\n\n onConfirm(): void {}\n\n navigateToShippingAddress(): void {\n this.router.navigate([UserRoute.MyAccount, UserRoute.Addresses]);\n }\n}\n","\n
    \n

    Due to fraud protection, please add a shipping address to be able to save a new card\n

    \n
    \n\n","
    \n
    \n \n \n
    \n\n
    \n \n
    \n\n \n \n \n
    \n\n\n \n\n\n\n
    \n \n
    \n
    \n
    {{ item.cardName }}
    \n
    {{ item.cardNumber }}
    \n
    \n {{ item.expiryDate }}\n \n
    \n
    \n {{ PaymentMethodTypeLocale[item.type] }}\n
    \n \n
    \n\n\n
    Are you sure you want to delete this payment method?
    \n\n\n\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PaymentMethodTypeLocale } from '@core/constants/payment-method-type-locale';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { MobileMedia } from '@core/constants/screen-sizes';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { SortableTableColumn } from '@core/models/sortable-table-column.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { selectAddresses } from '@core/store/address';\nimport { Address } from '@core/store/address/address-state-models';\nimport { selectPaymentMethodsState } from '@core/store/payment';\nimport { PaymentMethodItem, PaymentMethodType } from '@core/store/payment/payment-state-models';\nimport {\n deletePaymentMethod,\n fetchPaymentMethods,\n setAsDefault,\n} from '@core/store/payment/payment.actions';\nimport { Store, select } from '@ngrx/store';\nimport { ConfirmModalComponent } from '@shared/components/confirm-modal/confirm-modal.component';\nimport { Observable, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { AddressRequiredModalComponent } from './address-required-modal/address-required-modal.component';\n\n@Component({\n selector: 'app-payment-methods',\n templateUrl: './payment-methods.component.html',\n styleUrls: ['./payment-methods.component.scss'],\n})\nexport class PaymentMethodsComponent implements OnInit, OnDestroy {\n readonly paymentMethodType = PaymentMethodType;\n readonly PaymentMethodTypeLocale = PaymentMethodTypeLocale;\n\n readonly defaultCardTypeStyle = {\n background: '#626262',\n color: 'white',\n pointerEvents: 'none',\n };\n\n readonly cardTypeStyle = {\n cursor: 'pointer',\n border: '1px solid #626262',\n borderRadius: '3px',\n color: '#626262',\n fontSize: '0.8rem',\n justifyContent: 'center',\n padding: '0px 3px',\n };\n\n subscriptions: Subscription = new Subscription();\n paymentMethods: PaymentMethodItem[];\n addresses$: Observable;\n loading$: Observable;\n loadingCombined$: Observable;\n\n columns: SortableTableColumn[] = [\n {\n field: 'cardName',\n headerName: $localize`Cardholder name`,\n sortable: true,\n sort: TableSortDirection.asc,\n },\n { field: 'cardNumber', headerName: $localize`Card number`, sortable: true },\n {\n field: 'expiryDate',\n headerName: $localize`Expiry date`,\n sortable: true,\n styles: this.getExpiryDateFieldStyle.bind(this),\n tooltip: this.getTooltip.bind(this),\n warningIcon: this.expiredCondition.bind(this),\n },\n {\n field: 'type',\n headerName: '',\n sortable: true,\n action: true,\n styles: this.getTypeFieldStyle.bind(this),\n actionMethod: this.setAsDefault.bind(this),\n actionField: 'id',\n ariaLabel: $localize`Make default`,\n },\n {\n field: 'id',\n headerName: '',\n action: true,\n actionIcon: 'bi bi-trash',\n actionMethod: this.delete.bind(this),\n ariaLabel: $localize`Remove payment method`,\n },\n ];\n\n @ViewChild('confirmModal') private confirmModal: ConfirmModalComponent;\n @ViewChild('addressRequiredModal') private addressRequiredModal: AddressRequiredModalComponent;\n\n constructor(\n private store$: Store,\n private router: Router,\n private route: ActivatedRoute,\n private breakpointObserver: BreakpointObserver,\n private appInitService: AppInitService,\n ) {}\n\n ngOnInit(): void {\n this.store$.dispatch(fetchPaymentMethods());\n\n const paymentMethodState$ = this.store$.select(selectPaymentMethodsState);\n this.loading$ = paymentMethodState$.pipe(select((state) => state.loading));\n this.addresses$ = this.store$.select(selectAddresses);\n\n this.subscriptions.add(\n paymentMethodState$.pipe(select((state) => state.items)).subscribe((items) => {\n this.paymentMethods = items;\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n /** Add new card payment method */\n addCard() {\n const isAddressRequiredForAddCard = this.appInitService.Settings.ec.isFraudCheckRequired;\n if (isAddressRequiredForAddCard) {\n this.subscriptions.add(\n this.addresses$.pipe(take(1)).subscribe((addresses) => {\n if (addresses.length == 0) {\n this.addressRequiredModal.open();\n } else {\n this.navigateToAddNewPaymentMethod();\n }\n }),\n );\n } else {\n this.navigateToAddNewPaymentMethod();\n }\n }\n\n navigateToAddNewPaymentMethod() {\n this.router.navigate(['./' + UserRoute.New], { relativeTo: this.route });\n }\n\n isInMobileView(): boolean {\n return this.breakpointObserver.isMatched(MobileMedia);\n }\n\n delete(paymentMethodItemId: string) {\n const paymentMethod = this.paymentMethods.find((pm) => pm.id === paymentMethodItemId);\n if (paymentMethod) this.confirmModal.open(paymentMethod);\n }\n\n expiredCondition(row: PaymentMethodItem) {\n return row.isExpired;\n }\n\n getTooltip(row: PaymentMethodItem) {\n if (row.isExpired) {\n return $localize`This payment method is expired!`;\n }\n return null;\n }\n\n getRowStyle(row: PaymentMethodItem) {\n if (row.isExpired) {\n return { background: 'pink' };\n }\n return {};\n }\n\n setAsDefault(paymentMethodItemId: string) {\n const paymentMethod = this.paymentMethods.find((pm) => pm.id === paymentMethodItemId);\n if (paymentMethod?.type !== PaymentMethodType.default && !paymentMethod.isExpired) {\n this.store$.dispatch(\n setAsDefault({ token: paymentMethod.id, provider: paymentMethod.provider }),\n );\n }\n }\n\n getCardTypeStyle(type: PaymentMethodType) {\n let mobileCardTypeStyle = this.cardTypeStyle;\n if (type === this.paymentMethodType.default) {\n mobileCardTypeStyle = { ...mobileCardTypeStyle, ...this.defaultCardTypeStyle };\n }\n return mobileCardTypeStyle;\n }\n\n onDeleteConfirm(item: PaymentMethodItem) {\n this.store$.dispatch(deletePaymentMethod({ token: item.id, provider: item.provider }));\n }\n\n private getExpiryDateFieldStyle(row: PaymentMethodItem): object {\n return row.isExpired ? { color: 'red' } : {};\n }\n\n private getTypeFieldStyle(row: PaymentMethodItem): object {\n if (row.isExpired) {\n return { visibility: 'hidden', width: 0, height: 0 };\n }\n\n return row.type === PaymentMethodType.default\n ? { ...this.cardTypeStyle, ...this.defaultCardTypeStyle }\n : this.cardTypeStyle;\n }\n}\n","
    \n \n\n
    \n \n
    \n
    \n\n\n \n\n\n\n \n\n\n\n
    \n
    \n \n \n \n
    \n
    {{ recipe.categories }}
    \n \n {{ recipe.name }}\n \n
    \n\n \n
    \n
    \n
    \n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Component, OnInit } from '@angular/core';\nimport { RecipeAndMoreRoutes } from '@core/constants/routes.const';\nimport { MobileMedia } from '@core/constants/screen-sizes';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { SortableTableColumn } from '@core/models/sortable-table-column.model';\nimport { AppState } from '@core/store';\nimport { selectUserRecipes } from '@core/store/recipe';\nimport { RecipeItem } from '@core/store/recipe/recipe-state-models';\nimport { dislikeRecipe, fetchUserRecipes } from '@core/store/recipe/recipe.actions';\nimport { select, Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-recipes',\n templateUrl: './recipes.component.html',\n styleUrls: ['./recipes.component.scss'],\n})\nexport class RecipesComponent implements OnInit {\n readonly RecipeDetailPath = `/${RecipeAndMoreRoutes.Recipe}/${RecipeAndMoreRoutes.Detail}/`;\n readonly Thumbnail = Thumbnail;\n readonly columns: SortableTableColumn[] = [\n {\n field: 'name',\n headerName: $localize`Recipe name`,\n sortable: true,\n sort: TableSortDirection.asc,\n imageField: 'images',\n thumbnail: Thumbnail.recipeListDesktop,\n action: true,\n actionPath: this.RecipeDetailPath,\n actionField: 'url',\n styles: { fontWeight: 'bold' },\n },\n { field: 'categories', headerName: $localize`Category`, styles: { fontSize: '0.8rem' } },\n {\n field: 'id',\n headerName: '',\n action: true,\n actionIcon: 'bi bi-trash',\n actionMethod: this.dislike.bind(this),\n ariaLabel: $localize`Remove from wishlist`,\n },\n ];\n\n loading$: Observable;\n recipes$: Observable;\n\n constructor(\n private store$: Store,\n private breakpointObserver: BreakpointObserver,\n ) {}\n\n ngOnInit(): void {\n this.store$.dispatch(fetchUserRecipes());\n\n const userRecipes = this.store$.select(selectUserRecipes);\n\n this.recipes$ = userRecipes.pipe(\n map((ur) => ur.items.slice().sort((a, b) => (a.name > b.name ? 1 : -1))),\n );\n\n this.loading$ = userRecipes.pipe(select((ur) => ur.loading));\n }\n\n isInMobileView(): boolean {\n return this.breakpointObserver.isMatched(MobileMedia);\n }\n\n dislike(id: string, url: string) {\n this.store$.dispatch(dislikeRecipe({ id, url }));\n }\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { ReturnState } from './return-state-models';\n\nexport const returnStateFeatureKey = 'returnState';\n\nexport const selectReturnFeature = createFeatureSelector(returnStateFeatureKey);\n\nexport const selectReturnStateLoading = createSelector(selectReturnFeature, (state: ReturnState) =>\n state ? state.loading : false,\n);\n\nexport const selectReturnHistory = createSelector(selectReturnFeature, (state: ReturnState) =>\n state ? state.returnHistory : [],\n);\n\nexport const selectReturnDetails = createSelector(selectReturnFeature, (state: ReturnState) =>\n state ? state.returnDetails : null,\n);\n\nexport const selectSubmitReturnSucceeded = createSelector(\n selectReturnFeature,\n (state: ReturnState) => (state ? state.returnSucceeded : false),\n);\n","
    \n \n
    \n\n\n
    \n \n
    \n\n
    \n
    \n
    \n Return ID\n {{ return.returnId }}\n
    \n
    \n Return date\n {{ return.submittedDate | date: 'longDate' }}\n
    \n
    \n Qty\n {{ return.quantity | number }}\n
    \n
    \n \n
    \n {{ return.totalAmount | phCurrency }}\n
    \n
    \n
    \n
    \n
    \n","import { formatDate } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { SortableTableColumn } from '@core/models/sortable-table-column.model';\nimport { AppState } from '@core/store';\nimport { selectReturnHistory, selectReturnStateLoading } from '@core/store/return';\nimport { ReturnHistoryItem } from '@core/store/return/return-state-models';\nimport { fetchReturnHistory } from '@core/store/return/return.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-return-history',\n templateUrl: './return-history.component.html',\n styleUrls: ['./return-history.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReturnHistoryComponent implements OnInit {\n returnHistory$: Observable;\n returnHistoryTableData$: Observable;\n loading$: Observable;\n\n columns: SortableTableColumn[] = [\n {\n field: 'returnNumber',\n headerName: $localize`Return number`,\n sortable: true,\n sort: TableSortDirection.desc,\n },\n { field: 'date', headerName: $localize`Date`, sortable: true, isDate: true },\n { field: 'qty', headerName: $localize`Qty`, sortable: true },\n { field: 'total', headerName: $localize`Total`, sortable: true, currency: '$' },\n {\n field: 'id',\n headerName: '',\n action: true,\n actionIcon: 'bi bi-eye',\n ariaLabel: $localize`View order`,\n },\n ];\n\n constructor(private store$: Store, @Inject(LOCALE_ID) private localeId: string) {}\n\n ngOnInit(): void {\n this.store$.dispatch(fetchReturnHistory());\n\n this.loading$ = this.store$.select(selectReturnStateLoading);\n this.returnHistory$ = this.store$.select(selectReturnHistory);\n this.returnHistoryTableData$ = this.returnHistory$.pipe(\n map((returnHistory) =>\n returnHistory.map((item) => ({\n id: item.returnId,\n returnNumber: item.returnId,\n date: formatDate(item.submittedDate, 'longDate', this.localeId),\n qty: item.quantity,\n total: +item.totalAmount.toFixed(2),\n })),\n ),\n );\n }\n}\n","import { Component } from '@angular/core';\nimport { UserRoute } from '@core/constants/routes.const';\n\n@Component({\n templateUrl: './returns.component.html',\n styleUrls: ['./returns.component.scss'],\n})\nexport class ReturnsComponent {\n readonly NewReturnRoute = UserRoute.New;\n\n constructor() {}\n}\n","
    \n
    \n \n \n
    \n\n \n
    \n","
    \n
    \n \n
    \n\n
    \n \n
    \n\n \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    {{ wishlistItem.collectionName }}
    \n
    {{ wishlistItem.productName | titlecase }}
    \n
    #{{ wishlistItem.sku }}
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n Add to Cart\n \n
    \n \n \n ${{ wishlistItem.originalPrice }}\n
    \n\n \n ${{ wishlistItem.discountedPrice }}\n
    \n
    \n
    \n
    \n \n \n \n
    \n \n \n \n \n product\n \n \n \n price\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    {{ wishlistItem.collectionName }}
    \n
    {{\n wishlistItem.productName | titlecase\n }}
    \n
    #{{ wishlistItem.sku }}
    \n
    \n
    \n
    \n
    \n \n {{ wishlistItem.originalPrice | phCurrency }}\n
    \n \n {{ wishlistItem.discountedPrice | phCurrency }}\n

    \n \n
    \n \n \n Add to Cart\n \n \n \n \n \n
    \n
    \n \n\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { ProductRoutes } from '@core/constants/routes.const';\nimport { TableSortDirectionCycle } from '@core/constants/table-sort-direction-cycle';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { AppState } from '@core/store';\nimport { selectAddToCartConfirmModal } from '@core/store/cart';\nimport { addToCart } from '@core/store/cart/cart.actions';\nimport { selectLoading, selectWishlist } from '@core/store/wishlist';\nimport { WishlistItem } from '@core/store/wishlist/wishlist-state-models';\nimport { deleteFromWishlist, fetchWishlist } from '@core/store/wishlist/wishlist.actions';\nimport { select, Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nconst compare = (v1: string | number, v2: string | number) => (v1 < v2 ? -1 : v1 > v2 ? 1 : 0);\n\nenum WishlistColumnType {\n productName = 'productName',\n discountedPrice = 'discountedPrice',\n}\n\n@Component({\n selector: 'app-wishlist',\n templateUrl: './wishlist.component.html',\n styleUrls: ['./wishlist.component.scss'],\n})\nexport class WishlistComponent implements OnInit {\n productRoute = ProductRoutes.Product;\n pRoute = ProductRoutes.P;\n\n wishlistColumnType = WishlistColumnType;\n wishlist$: Observable;\n loading$: Observable;\n direction: TableSortDirection;\n sortColumn: WishlistColumnType | null;\n computedRows$: Observable;\n addToCartLoading$: Observable;\n\n thumbnail = Thumbnail;\n\n constructor(private store$: Store) {\n this.direction = TableSortDirection.none;\n this.sortColumn = null;\n }\n\n ngOnInit(): void {\n this.store$.dispatch(fetchWishlist());\n\n this.addToCartLoading$ = this.store$\n .select(selectAddToCartConfirmModal)\n .pipe(select((state) => state.loading));\n\n this.wishlist$ = this.store$.select(selectWishlist);\n this.loading$ = this.store$.select(selectLoading);\n this.computedRows$ = this.wishlist$;\n }\n\n onSort(column: WishlistColumnType) {\n if (column !== this.sortColumn) {\n this.direction = TableSortDirection.none;\n }\n this.direction = TableSortDirectionCycle[this.direction];\n this.sortColumn = column;\n\n if (this.direction === TableSortDirection.none) {\n this.computedRows$ = this.wishlist$;\n } else {\n this.sort(column, this.direction);\n }\n }\n\n addToCart(product: WishlistItem) {\n this.store$.dispatch(\n addToCart({\n payload: {\n images: product.images,\n collection: product.collectionName,\n productName: product.productName,\n sku: product.sku,\n discountedPrice: product.discountedPrice,\n price: product.originalPrice,\n quantity: 1,\n type: product.type,\n isPFASItem: product.isPFASItem,\n },\n }),\n );\n }\n\n removeFromWishList(sku: string) {\n this.store$.dispatch(deleteFromWishlist({ sku }));\n }\n\n private sort(column: string, direction: TableSortDirection) {\n this.computedRows$ = this.wishlist$.pipe(\n map((wishlist) =>\n wishlist.slice().sort((a, b) => {\n const res = compare(a[column], b[column]);\n return direction === TableSortDirection.asc ? res : -res;\n }),\n ),\n );\n }\n}\n","export const URL = {\n TermsOfUse: '/terms-of-use',\n PrivacyPolicy: '/privacy-policy',\n};\n","export enum InputMaxLength {\n Ten = 10,\n Fifteen = 15,\n Twenty = 20,\n Fifty = 50,\n}\n","
    \n
    \n
    \n
    \n

    Create an Account

    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n This e-mail cannot be used in Ecommerce because it is already registered on a PH\n consultant!\n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n Required\n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n Create account\n \n
    \n
    \n
    \n
    \n

    By creating an account, you agree to the\n Princess House's Terms of Use\n and\n Privacy Policy\n

    \n
    \n
    \n \n\n\n\n

    Password must

    \n
      \n
    • 8 or more characters
    • \n
    • Upper & lowercase letters
    • \n
    • At least one number: 0-9
    • \n
    • At least one symbol: {{ '!@#^&()+_,.{}?-' }}
    • \n
    \n
    \n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { PasswordPattern, ValidEmailRegExp } from '@core/constants/patterns';\nimport { URL } from '@core/constants/url.const';\nimport { ConsultantResponse } from '@core/dto/consultant.dto';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\nimport { InputMaxLength } from '@core/enums/input-max-length.enum';\nimport { PhExceptionErrorType } from '@core/enums/ph-exception-error-type.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { selectCurrentConsultant, selectHasCurrentConsultant } from '@core/store/consultant';\nimport { selectRegistrationFailedErrorType, selectUserLoading } from '@core/store/user';\nimport { registerUser, resetRegistrationFailedErrorType } from '@core/store/user/user.actions';\nimport { Store } from '@ngrx/store';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { hideRecaptchaBadge, showRecaptchaBadge } from '@shared/utils/recaptcha-utils';\nimport { matchValidator } from '@shared/utils/validation.utils';\nimport { ReCaptchaV3Service } from 'ng-recaptcha';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-registration',\n templateUrl: './registration.component.html',\n styleUrls: ['./registration.component.scss'],\n})\nexport class RegistrationComponent implements OnInit, AfterViewInit, OnDestroy {\n readonly URL = URL;\n readonly PhErrorTypes = PhExceptionErrorType;\n readonly FormErrorTypes = FormErrorTypes;\n readonly Name = 'name';\n readonly FirstName = 'firstName';\n readonly LastName = 'lastName';\n readonly Email = 'email';\n readonly EmailConfirm = 'emailConfirm';\n readonly PhoneNumber = 'phoneNumber';\n readonly Password = 'password';\n readonly PasswordConfirm = 'passwordConfirm';\n readonly Subscriptions = 'subscriptions';\n readonly Newsletters = 'newsletters';\n readonly ShareWithConsultant = 'shareWithConsultant';\n readonly ErrorMessages = {\n [this.FormErrorTypes.pattern]: FormErrorMessages.passwordPattern,\n [this.FormErrorTypes.required]: FormErrorMessages.required,\n };\n\n form: FormGroup;\n disableSubmit$: Observable;\n errorType$: Observable;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n private reCaptchaService: ReCaptchaV3Service,\n private appInitService: AppInitService,\n ) {}\n\n onSubmit(): void {\n if (this.form.valid) {\n this.subscriptions.add(\n this.reCaptchaService\n .execute('importantAction')\n .pipe(\n filter((token) => !!token || !this.appInitService.Settings.ec.isRecaptchaEnabled),\n take(1),\n )\n .subscribe((token: string) => {\n this.store$.dispatch(registerUser({ payload: this.form.value, token }));\n }),\n );\n } else {\n this.form.markAllAsTouched();\n }\n }\n\n ngOnInit(): void {\n this.createUserRegistrationForm();\n this.errorType$ = this.store$.select(selectRegistrationFailedErrorType);\n this.disableSubmit$ = combineLatest([\n this.store$.select(selectUserLoading),\n this.errorType$,\n ]).pipe(map(([loading, error]) => loading || error === this.PhErrorTypes.ValidationException));\n let consultant$: Observable = this.store$.select(selectCurrentConsultant);\n let hasCurrentConsultant$: Observable = this.store$.select(selectHasCurrentConsultant);\n\n this.subscriptions.add(\n combineLatest([consultant$, hasCurrentConsultant$]).subscribe(\n ([consultant, hasConsultant]) => {\n this.form.patchValue({\n activeConsultantId: hasConsultant ? consultant?.id : 1,\n });\n },\n ),\n );\n }\n\n ngAfterViewInit(): void {\n showRecaptchaBadge();\n this.resetRegistrationError();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n hideRecaptchaBadge();\n this.store$.dispatch(resetRegistrationFailedErrorType());\n }\n\n private createUserRegistrationForm(): void {\n this.form = this.fb.group({\n [this.Name]: this.fb.group({\n [this.FirstName]: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n [this.LastName]: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n }),\n [this.Email]: this.fb.group(\n {\n [this.Email]: ['', [Validators.required, emailValidator(ValidEmailRegExp)]],\n [this.EmailConfirm]: ['', [Validators.required, emailValidator(ValidEmailRegExp)]],\n },\n {\n validators: matchValidator(\n this.Email,\n this.EmailConfirm,\n this.FormErrorTypes.emailConfirm,\n ),\n },\n ),\n [this.Password]: this.fb.group(\n {\n [this.Password]: ['', [Validators.required, Validators.pattern(PasswordPattern)]],\n [this.PasswordConfirm]: ['', [Validators.required]],\n },\n {\n validators: matchValidator(\n this.Password,\n this.PasswordConfirm,\n this.FormErrorTypes.passwordConfirm,\n ),\n },\n ),\n [this.Subscriptions]: this.fb.group({\n [this.Newsletters]: [false],\n }),\n [this.PhoneNumber]: '',\n [this.ShareWithConsultant]: [true],\n });\n }\n\n private resetRegistrationError(): void {\n this.subscriptions.add(\n combineLatest([\n this.form.get(this.Email).get(this.Email).valueChanges,\n this.form.get(this.Email).get(this.EmailConfirm).valueChanges,\n ]).subscribe(() => this.store$.dispatch(resetRegistrationFailedErrorType())),\n );\n }\n}\n","
    \n
    \n
    \n Shipping addresses >\n
    {{ currentAddress?.name || newAddressTitle }}
    \n
    \n
    \n \n \n My Shipping Addresses\n \n
    \n \n \n \n Delete Address\n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n \n\n
    \n
    \n \n \n Save changes\n \n
    \n
    \n \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormControl,\n FormGroup,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { CountryName } from '@core/constants/country-name';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport {\n selectAddressValidation,\n selectAddresses,\n selectCountryStates,\n selectLoading,\n selectSaveInProgress,\n} from '@core/store/address';\nimport { Address, AddressVerification } from '@core/store/address/address-state-models';\nimport {\n createAddress,\n deleteAddress,\n fetchCountryStates,\n resetAddressValidationModal,\n updateAddress,\n} from '@core/store/address/address.actions';\nimport { environment } from '@env';\nimport { Store, select } from '@ngrx/store';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n templateUrl: './address-editor.component.html',\n styleUrls: ['./address-editor.component.scss'],\n})\nexport class AddressEditorComponent implements OnInit, OnDestroy {\n readonly isMexEnv = isMexEnv;\n readonly FirstName = 'firstName';\n readonly LastName = 'lastName';\n readonly Name = 'name';\n readonly AddressLine1 = 'addressLine1';\n readonly AddressLine2 = 'addressLine2';\n readonly AddressLine3 = 'addressLine3';\n readonly City = 'city';\n readonly State = 'state';\n readonly Country = 'country';\n readonly ZipCode = 'zipCode';\n readonly Default = 'default';\n\n addresses$: Observable;\n loading$: Observable;\n countryStates$: Observable;\n saveInProgress$: Observable;\n addressId: string;\n isNewAddress: boolean;\n addressForm: FormGroup;\n addressesSubscription: Subscription;\n currentAddress: Address;\n newAddressTitle = $localize`New address`;\n addressValidation$: Observable;\n inUseNames: string[] = [];\n\n constructor(\n private store$: Store,\n private activatedRoute: ActivatedRoute,\n private fb: FormBuilder,\n ) {\n this.addressId = this.activatedRoute.snapshot.paramMap.get('addressId');\n this.isNewAddress = this.addressId === UserRoute.New;\n }\n\n ngOnInit(): void {\n this.store$.dispatch(fetchCountryStates());\n\n this.addresses$ = this.store$.select(selectAddresses);\n this.loading$ = this.store$.select(selectLoading);\n this.saveInProgress$ = this.store$.select(selectSaveInProgress);\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectCountryStates));\n this.addressValidation$ = this.store$\n .select(selectAddressValidation)\n .pipe(select((data) => data?.addressVerificationResult));\n\n this.addressForm = this.fb.group(\n {\n [this.FirstName]: ['', [Validators.required]],\n [this.LastName]: ['', [Validators.required]],\n [this.Name]: ['', [Validators.required, this.uniqueNameValidator()]],\n [this.AddressLine1]: ['', [Validators.required]],\n [this.AddressLine2]: [''],\n [this.City]: ['', [Validators.required]],\n [this.State]: ['', [Validators.required]],\n [this.Country]: [CountryName[environment.country]],\n [this.ZipCode]: ['', [Validators.required]],\n [this.Default]: [false],\n },\n { updateOn: 'submit' },\n );\n\n if (this.isMexEnv) {\n this.addressForm.addControl(this.AddressLine3, new FormControl(''));\n }\n\n if (!this.isNewAddress) {\n this.addressesSubscription = this.addresses$.subscribe((addresses) => {\n this.currentAddress = addresses.find((a) => a.id.toString() === this.addressId);\n this.inUseNames = addresses.filter((a) => a !== this.currentAddress).map((a) => a.name);\n this.updateForm(this.currentAddress);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.addressesSubscription?.unsubscribe();\n }\n\n updateForm(address: Address): void {\n this.addressForm.patchValue(address);\n }\n\n onSave(): void {\n this.addressForm.markAllAsTouched();\n if (this.addressForm.valid) {\n if (this.isNewAddress) {\n this.store$.dispatch(\n createAddress({\n address: { skipAddressVerification: false, ...this.addressForm.value },\n }),\n );\n } else {\n this.store$.dispatch(\n updateAddress({\n address: {\n id: this.addressId,\n skipAddressVerification: false,\n ...this.addressForm.value,\n },\n }),\n );\n }\n }\n }\n\n finalizeAddress = (formGroup: FormGroup): void => {\n const firstName = this.addressForm.get(this.FirstName).value;\n const lastName = this.addressForm.get(this.LastName).value;\n if (this.isNewAddress) {\n this.store$.dispatch(\n createAddress({\n address: { skipAddressVerification: true, ...formGroup.value, firstName, lastName },\n }),\n );\n } else {\n this.store$.dispatch(\n updateAddress({\n address: {\n id: this.addressId,\n skipAddressVerification: true,\n ...formGroup.value,\n firstName,\n lastName,\n },\n }),\n );\n }\n this.store$.dispatch(resetAddressValidationModal());\n };\n\n onDismiss = (): void => {\n this.store$.dispatch(resetAddressValidationModal());\n };\n\n deleteAddress() {\n if (!this.isNewAddress) this.store$.dispatch(deleteAddress({ id: parseInt(this.addressId) }));\n }\n\n uniqueNameValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const found = this.inUseNames.find((a) => a.toLowerCase() === control.value.toLowerCase());\n return found ? { nameExists: { value: control.value } } : null;\n };\n }\n}\n","\n
    \n \n
    \n
    \n
    \n
    \n \n {{ orderItem.productName | titlecase }}\n \n
    #{{ orderItem.skuCode }}
    \n
    \n
    \n
    \n
    \n {{ orderItem.quantity }}X\n \n {{ orderItem.price | phCurrency }}\n \n
    \n
    \n
    \n
    {{ orderItem.totalPrice | phCurrency }}
    \n
    \n
    \n
    \n
    \n
    \n\n\n
    \n
    \n \n \n \n \n {{ column.title }}\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n \n {{ orderItem.productName | titlecase }}\n \n
    #{{ orderItem.skuCode }}
    \n
    \n
    \n
    \n
    \n

    {{ orderItem.quantity }}

    \n
    \n
    \n
    \n

    {{ orderItem.price | phCurrency }}

    \n
    \n
    \n
    \n

    {{ orderItem.totalPrice | phCurrency }}

    \n
    \n
    \n
    \n
    \n","import { Component, Input, OnInit } from '@angular/core';\nimport { TableSortDirectionCycle } from '@core/constants/table-sort-direction-cycle';\nimport { TableSortDirection } from '@core/enums/table-sort-direction.enum';\nimport { ConsultantCornerOrderItem } from '@core/store/order/order-state-models';\nimport { compare } from '../../common/order-sort-common';\n\n@Component({\n selector: 'app-cc-order-details-table',\n templateUrl: './cc-order-details-table.component.html',\n styleUrls: ['./cc-order-details-table.component.scss'],\n})\nexport class CcOrderDetailsTableComponentComponent implements OnInit {\n @Input() ccOrderItems: ConsultantCornerOrderItem[];\n\n readonly OrderItemColumns = [\n { title: $localize`Product`, type: 'productName' },\n { title: $localize`Qty`, type: 'quantity' },\n { title: $localize`Price`, type: 'price' },\n { title: $localize`Total`, type: 'total' },\n ];\n\n sortableCcOrderItems: ConsultantCornerOrderItem[];\n tableSortDirection = TableSortDirection;\n sortColumn: string | null;\n direction: TableSortDirection;\n\n constructor() {}\n\n ngOnInit() {\n this.sortableCcOrderItems = this.ccOrderItems;\n }\n\n onSort(column: string): void {\n if (column !== this.sortColumn) {\n this.direction = TableSortDirection.none;\n }\n this.direction = TableSortDirectionCycle[this.direction];\n this.sortColumn = column;\n\n if (this.direction === TableSortDirection.none) {\n this.sortableCcOrderItems = this.ccOrderItems;\n } else {\n this.sort(column, this.direction);\n }\n }\n\n private sort(column: string, direction: TableSortDirection) {\n this.sortableCcOrderItems = this.sortableCcOrderItems.slice().sort((a, b) => {\n const res = compare(a[column], b[column]);\n return direction === TableSortDirection.asc ? res : -res;\n });\n }\n}\n","
    \n
    \n
    \n Merchandise total\n {{ merchandiseTotal | phCurrency }}\n
    \n
    \n Delivery fee total\n {{ deliveryFeeTotal | phCurrency }}\n
    \n
    \n Sales tax total\n {{ salesTaxTotal | phCurrency }}\n
    \n
    \n Total price\n {{ totalPrice | phCurrency }}\n
    \n
    \n
    \n","import { Component, Input } from '@angular/core';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\n\n@Component({\n selector: 'app-cc-order-details-total',\n templateUrl: './cc-order-details-total.component.html',\n styleUrls: ['./cc-order-details-total.component.scss'],\n})\nexport class CcOrderDetailsTotalComponent {\n @Input() merchandiseTotal: number;\n @Input() deliveryFeeTotal: number;\n @Input() salesTaxTotal: number;\n @Input() totalPrice: number;\n\n readonly isUsaEnv = isUsaEnv;\n\n constructor() {}\n}\n","\n\n
    \n \n
    \n\n\n
    \n \n
    \n
    \n \n
    \n \n Order receive date{{ ccOrderDetails.dateReceived | date: 'longDate' }} |\n {{ OrderStatusLocale[ccOrderDetails.ecommerceStatus] }}\n \n
    \n
    \n
    \n
    \n
    \n My Orders >\n \n Order #{{ ccOrderDetails.masterOrderId }}\n \n
    \n
    \n
    \n
    \n
    \n \n Order #{{ ccOrderDetails.masterOrderId }}\n
    \n\n
    \n \n Order receive date{{ ccOrderDetails.dateReceived | date: 'longDate' }} |\n {{ OrderStatusLocale[ccOrderDetails.ecommerceStatus] }}\n \n
    \n
    \n
    \n
    \n
    \n\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n \n
    \n
    \n
    \n
    \n Product(s)\n
    \n
    \n
    \n\n \n
    \n\n \n
    \n
    \n \n
    \n
    \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { OrderStatusLocale } from '@core/constants/shipment-status-locale';\nimport { InfoCardAttributes } from '@core/models/info-card-attributes.model';\nimport { AppState } from '@core/store';\nimport { selectCCOrderDetails, selectCCOrderStateLoading } from '@core/store/order';\nimport {\n AddressInformation,\n CCOrderDetails,\n CustomerNameInfo,\n} from '@core/store/order/order-state-models';\nimport { fetchCCOrderDetails, resetCCOrderDetailsState } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-cc-order-details',\n templateUrl: './cc-order-details.component.html',\n styleUrls: ['./cc-order-details.component.scss'],\n})\nexport class CcOrderDetailsComponent implements OnInit, OnDestroy {\n ccOrderDetails$: Observable;\n loading$: Observable;\n poeOrderId: string;\n\n readonly AddressCardTitles = {\n shippingInfo: $localize`Shipping information`,\n billingInfo: $localize`Billing information`,\n };\n\n readonly OrderStatusLocale = OrderStatusLocale;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(private store$: Store, private activatedRoute: ActivatedRoute) {}\n\n ngOnInit() {\n this.ccOrderDetails$ = this.store$.select(selectCCOrderDetails);\n this.loading$ = this.store$.select(selectCCOrderStateLoading);\n\n this.subscriptions.add(\n this.activatedRoute.paramMap.subscribe((pMap) => {\n this.poeOrderId = pMap.get('poeOrderId');\n this.store$.dispatch(fetchCCOrderDetails({ poeOrderId: this.poeOrderId }));\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.store$.dispatch(resetCCOrderDetailsState());\n }\n\n createShippingAddressInfoCard(address: AddressInformation, title: string): InfoCardAttributes {\n return {\n title: title,\n addressLine1: `${address.address1}, ${address.address2}`,\n addressLine2: `${address.city}, ${address.stateProvince}, ${address.zipPostalCode}`,\n };\n }\n\n createCustomerInfoCard(customerShippingInfo: CustomerNameInfo): InfoCardAttributes {\n return { customer: customerShippingInfo.firstName + ' ' + customerShippingInfo.lastName };\n }\n\n getTotal(ccOrderDetails: CCOrderDetails): number {\n return (\n ccOrderDetails.totalMerchandiseCost +\n ccOrderDetails.shippingCost +\n ccOrderDetails.tax.finalAmount\n );\n }\n}\n","import { Component } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { CardPaymentTypes, PaymentImageSrc } from '@core/constants/payment.consts';\nimport { Country } from '@core/enums/country.enum';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { PaymentCardType, PaymentType } from '@core/enums/payment-type.enum';\nimport { PaymentMethodCardInfo } from '@core/store/payment/payment-state-models';\nimport { environment } from '@env';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { isMexEnv } from '@shared/utils/environment-utils';\n\n// TODO: Payment Method - clean up file\n\n@Component({\n template: '',\n})\nexport abstract class PaymentMethodBaseComponent {\n public readonly Country = Country;\n public readonly PaymentType = PaymentType;\n public readonly PaymentCardType = PaymentCardType;\n public readonly CreatePaymentErrorType = CreateCardPaymentErrorType;\n public readonly PaymentImageSrc = PaymentImageSrc;\n public readonly storeLocatorUrl = environment.storeLocatorUrl;\n public readonly CardPaymentTypes = CardPaymentTypes;\n\n public readonly FormGroup = {\n PaymentCard: 'paymentCard',\n };\n\n public isMexEnv = isMexEnv;\n public isPaymentMethodRequestable: boolean = false;\n public isSubmitted: boolean = false;\n public selectedPaymentType: PaymentType = PaymentType.CreditOrDebitCard;\n public selectedCardPaymentType: PaymentCardType = PaymentCardType.DebitCard;\n public cardPaymentTypeOptions: SelectOption[] = Object.keys(this.CardPaymentTypes).map((key) => ({\n name: this.CardPaymentTypes[key],\n value: key,\n }));\n public paymentFormGroup: FormGroup;\n public isCardPaymentError: boolean = false;\n public cardPaymentErrorType: CreateCardPaymentErrorType = CreateCardPaymentErrorType.None;\n public cardPaymentMethodCardInfo: PaymentMethodCardInfo;\n}\n","
    \n
    \n
    \n Payment Methods >\n
    {{ newPaymentMethodTitle }}
    \n
    \n
    \n \n \n My Payment Methods\n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n\n
    \n Please fill in the payment related fields with valid values!\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n Save changes\n \n
    \n
    \n\n\n\n
    \n \n
    \n
    \n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { EcPaymentHandlerType, PaymentHandlerType } from '@core/enums/payment-handler-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { LogCardAttemptData } from '@core/models/log-card-attempt-data.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { LoggerService } from '@core/services/logger.service';\nimport { AppState } from '@core/store';\nimport { selectCreatePaymentMethodResponse, selectPaymentMethodLoading } from '@core/store/payment';\nimport { CreatedCardPaymentMethod } from '@core/store/payment/payment-state-models';\nimport {\n resetCardPaymentInfo,\n resetCreatedPaymentMethod,\n resetPaymentInfo,\n} from '@core/store/payment/payment.actions';\nimport { Store } from '@ngrx/store';\nimport { CardPaymentWrapperComponent } from '@payment/components/card-payment-wrapper/card-payment-wrapper.component';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { PaymentHandlerFactory } from '@payment/payment-handler/payment-handler-factory';\nimport {\n PaymentTypeOptionsAndImages,\n getPaymentProviderType,\n initPaymentTypeOptionsAndImages,\n} from '@payment/payment-handler/payment-provider.utils';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, mergeMap, take, tap } from 'rxjs/operators';\nimport { PaymentMethodBaseComponent } from '../payment-method-base.component';\n\n@Component({\n selector: 'app-create-payment-method',\n templateUrl: './create-payment-method.component.html',\n styleUrls: ['./create-payment-method.component.scss'],\n})\nexport class CreatePaymentMethodComponent\n extends PaymentMethodBaseComponent\n implements OnInit, OnDestroy\n{\n readonly BraintreeDelayAfterLoad = 600;\n\n paymentHandler: PaymentHandlerBase;\n paymentMethodId: string;\n isSubmitted = false;\n isSubmitDisabled = true;\n newPaymentMethodTitle = $localize`New payment method`;\n makeDefault = false;\n saveInProgress$: Observable;\n paymentProviderType: PaymentProviderType;\n isPaymentMethodRequestable: boolean = false;\n isNexioPaymentEnabled: boolean;\n\n @ViewChild('cardPaymentWrapper')\n private paymentWrapperComponent: CardPaymentWrapperComponent;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n appInitService: AppInitService,\n private store$: Store,\n private paymentHandlerFactory: PaymentHandlerFactory,\n private logger: LoggerService,\n private router: Router,\n private cdRef: ChangeDetectorRef,\n ) {\n super();\n this.isNexioPaymentEnabled = appInitService.Settings.ec.isNexioCardPaymentEnabled;\n }\n\n ngOnInit(): void {\n this.saveInProgress$ = this.store$.select(selectPaymentMethodLoading);\n this.paymentHandler = this.paymentHandlerFactory.getPaymentHandler(\n PaymentHandlerType.ECommerce,\n EcPaymentHandlerType.CreatePaymentMethod,\n );\n this.initPaymentTypeElements();\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetPaymentInfo());\n this.store$.dispatch(resetCreatedPaymentMethod());\n this.store$.dispatch(resetCardPaymentInfo());\n this.subscriptions.unsubscribe();\n }\n\n handlePaymentRequestable(isPaymentMethodRequestable: boolean): void {\n this.isPaymentMethodRequestable = isPaymentMethodRequestable;\n // https://github.com/webcomponents/polyfills/issues/238\n this.cdRef.detectChanges();\n }\n\n handlePaymentProviderLoading(isLoaded: boolean) {\n if (isUsaEnv && !isLoaded) this.handleBraintreeCustomization();\n }\n\n resetCardPayment(): void {\n // TODO: PaymentMethod - this does not work as intended\n setTimeout(() => this.paymentWrapperComponent.resetToken());\n }\n\n onSave(): void {\n let isValid: boolean = false;\n this.isSubmitted = true;\n isValid = this.isPaymentMethodRequestable && !this.isCardPaymentError;\n if (isValid) {\n this.subscriptions.add(\n this.requestCardPaymentMethod().subscribe(\n (response: CreatedCardPaymentMethod) => {\n if (\n response &&\n (response.errorType == undefined ||\n response.errorType === CreateCardPaymentErrorType.None)\n ) {\n this.navigateToPaymentMethods();\n } else {\n this.logger.error('Payment method creation failed:', response?.errorType);\n }\n },\n (error) => {\n this.navigateToPaymentMethods();\n this.logger.error('Payment method creation failed:', error);\n },\n ),\n );\n }\n }\n\n handleCardAttempt(cardAttemptData: LogCardAttemptData): void {\n this.paymentHandler.logCardAttempt(cardAttemptData.success, cardAttemptData.response);\n }\n\n private initPaymentTypeElements(): void {\n const paymentTypeData: PaymentTypeOptionsAndImages = initPaymentTypeOptionsAndImages(\n false,\n false,\n );\n this.paymentProviderType = getPaymentProviderType(\n paymentTypeData.paymentTypeOptions[0].value,\n this.isNexioPaymentEnabled,\n );\n }\n\n private navigateToPaymentMethods() {\n this.router.navigate([UserRoute.MyAccount, UserRoute.PaymentMethods]);\n }\n\n /** Requests a payment method object via dropin third party library and creates a payment method */\n private requestCardPaymentMethod(): Observable {\n const paymentMethodObject$ = this.paymentWrapperComponent\n .requestPaymentMethodObject()\n .pipe(take(1));\n const listenCreateMethod$ = this.store$.select(selectCreatePaymentMethodResponse).pipe(\n filter((response: any) => !!response),\n take(1),\n );\n\n return paymentMethodObject$.pipe(\n tap(() => this.paymentWrapperComponent.createPaymentMethod()),\n mergeMap(() => listenCreateMethod$),\n );\n }\n\n private handleBraintreeCustomization() {\n this.hideCarDSelectorForBraintreeCreateCard();\n this.automateClickOnBraintreeCreateCard();\n }\n\n private hideCarDSelectorForBraintreeCreateCard() {\n let brainTreeMethodsContainer: HTMLElement = document.querySelector('.braintree-methods');\n\n if (brainTreeMethodsContainer) {\n setTimeout(() => {\n brainTreeMethodsContainer.style.display = 'none';\n }, this.BraintreeDelayAfterLoad);\n }\n }\n\n private automateClickOnBraintreeCreateCard() {\n let chooseAnotherWayButton: HTMLElement = document.querySelector(\n '.braintree-large-button.braintree-toggle',\n );\n\n if (chooseAnotherWayButton) {\n setTimeout(() => {\n chooseAnotherWayButton.click();\n }, this.BraintreeDelayAfterLoad);\n }\n }\n}\n","\n","import { Component, Inject, LOCALE_ID, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidEmailRegExp } from '@core/constants/patterns';\nimport { LocalStorageKey } from '@core/enums/local-storage-key.enum';\nimport { Locale } from '@core/enums/locale';\nimport { LocalStorageService } from '@core/services/local-storage.service';\nimport { AppState } from '@core/store';\nimport { selectUser, selectUserLoading } from '@core/store/user';\nimport { UserModel } from '@core/store/user/user-state-models';\nimport { fetchUser, updateUser } from '@core/store/user/user.actions';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { b2cPolicies, createB2CUrl } from 'app/auth-config';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nenum profileFormKey {\n firstName = 'firstName',\n lastName = 'lastName',\n email = 'email',\n phoneNumber = 'phoneNumber',\n newsletters = 'newsletters',\n shareWithConsultant = 'shareWithConsultant',\n}\n\n@Component({\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.scss'],\n})\nexport class ProfileComponent implements OnInit, OnDestroy {\n readonly profileFormKey = profileFormKey;\n readonly OldPasswordRequired = 'oldPasswordRequired';\n\n user$: Observable;\n disableSave$: Observable;\n phoneNumberIsVerified$: Observable;\n profileForm: FormGroup;\n userSubscription: Subscription;\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n private localStorageService: LocalStorageService,\n @Inject(LOCALE_ID) private localeId: Locale,\n ) {}\n\n ngOnInit(): void {\n this.profileForm = this.fb.group({\n [profileFormKey.firstName]: ['', Validators.required],\n [profileFormKey.lastName]: ['', Validators.required],\n [profileFormKey.email]: ['', [Validators.required, emailValidator(ValidEmailRegExp)]],\n [profileFormKey.phoneNumber]: '',\n [profileFormKey.newsletters]: false,\n [profileFormKey.shareWithConsultant]: true,\n });\n\n this.store$.dispatch(fetchUser());\n this.user$ = this.store$.select(selectUser);\n this.disableSave$ = this.store$.select(selectUserLoading);\n this.userSubscription = this.user$.subscribe((user) => {\n this.updateForm(user);\n });\n this.phoneNumberIsVerified$ = combineLatest([\n this.profileForm.get(profileFormKey.phoneNumber).valueChanges,\n this.user$,\n ]).pipe(map(([value, user]) => user.phoneNumberValidated && user.phoneNumber === value));\n }\n\n get showPhoneVerificationPart(): boolean {\n return (\n !!this.profileForm.get(this.profileFormKey.phoneNumber).value &&\n environment.feature.mobileLogin\n );\n }\n\n ngOnDestroy(): void {\n this.userSubscription.unsubscribe();\n }\n\n onCancel = (): void => {\n this.store$.dispatch(fetchUser());\n };\n\n onSave = (): void => {\n if (this.profileForm.valid) {\n this.store$.dispatch(updateUser({ user: this.profileForm.value }));\n }\n };\n\n changePassword(): void {\n const email = this.profileForm.get(profileFormKey.email).value;\n const redirectUri = `${window.location.origin}${window.location.pathname}`;\n\n const passwordChangeUrl = createB2CUrl(\n b2cPolicies.names.profileEditPasswordChange,\n this.localeId,\n redirectUri,\n );\n\n if (email) {\n window.location.href = `${passwordChangeUrl}&prefill_email=${email}`;\n }\n }\n\n verifyPhoneNumber(): void {\n const phoneNumber = this.profileForm.get(profileFormKey.phoneNumber).value;\n if (!phoneNumber) return;\n\n const email = this.profileForm.get(profileFormKey.email).value;\n const redirectUri = `${window.location.origin}${window.location.pathname}`;\n\n const verifyPhoneNumberUrl = createB2CUrl(\n b2cPolicies.names.verifyPhoneNumber,\n this.localeId,\n redirectUri,\n );\n\n this.localStorageService.setItem(LocalStorageKey.toVerifyPhoneNumber, phoneNumber);\n // eslint-disable-next-line max-len\n window.location.href = `${verifyPhoneNumberUrl}&prefill_phone=${phoneNumber}&prefill_email=${email}`;\n }\n\n updateForm = (user: UserModel): void => {\n this.profileForm.patchValue(user);\n };\n\n validInput = (controlName: string): boolean => {\n const formControl = this.profileForm.get(controlName);\n if (!formControl.touched) {\n return true;\n }\n return formControl.valid;\n };\n}\n","
    \n \n\n
      \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    \n\n \n \n\n
    \n
    \n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { DatePipe } from '@angular/common';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { DateFormat } from '@core/constants/date-format';\nimport { OrderStatus } from '@core/enums/shipment-status-enum';\nimport { ImageDetails } from '@core/models/image.model';\nimport { AppState } from '@core/store';\nimport { selectOrderDetails } from '@core/store/order';\nimport { OrderAddress } from '@core/store/order/order-state-models';\nimport { resetOrderDetailsState, resetOrderHistoryState } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport type ReturnOrderLineType = {\n checked?: boolean;\n reason: string;\n orderLineId?: string;\n collectionName: string;\n productName: string;\n sku: string;\n price: number;\n orderStatus?: OrderStatus;\n shippingDate?: string;\n images: ImageDetails[];\n};\n\nexport type ReturnOrderInformationType = {\n shippingAddress: OrderAddress;\n billingAddress: OrderAddress;\n party: {\n consultant: string;\n host: string;\n };\n};\n\nconst initialValues = {\n title: $localize`New Return`,\n orderDate: null,\n orderLines: [],\n orderInfo: null,\n};\n\n@Component({\n templateUrl: './new-return.component.html',\n styleUrls: ['./new-return.component.scss'],\n providers: [DatePipe],\n})\nexport class NewReturnComponent implements OnInit, OnDestroy {\n title = initialValues.title;\n orderDate: string;\n\n orderLines: ReturnOrderLineType[] = [];\n orderInfo: ReturnOrderInformationType;\n\n subscriptions = new Subscription();\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private _activeStep = 0;\n get activeStep(): number {\n return this._activeStep;\n }\n set activeStep(value: number) {\n if (value === 0) {\n this.resetOrderDetialValues();\n }\n this._activeStep = value;\n }\n\n readonly steps: string[] = [\n $localize`Select order`,\n $localize`Select product`,\n $localize`Return summary`,\n ];\n\n constructor(private store$: Store, private datePipe: DatePipe) {}\n\n ngOnInit(): void {\n this.resetOrderState();\n this.initOrderDetails();\n }\n\n ngOnDestroy(): void {\n this.resetOrderState();\n this.subscriptions.unsubscribe();\n }\n\n private resetOrderState(): void {\n this.store$.dispatch(resetOrderHistoryState());\n this.store$.dispatch(resetOrderDetailsState());\n }\n\n private initOrderDetails(): void {\n this.subscriptions.add(\n this.store$\n .select(selectOrderDetails)\n .pipe(filter((orderDetails) => !!orderDetails))\n .subscribe((orderDetails) => {\n this.title = `${$localize`Order #`}${orderDetails.orderNumber}`;\n this.orderDate = `${$localize`Order date:`} ${this.datePipe.transform(\n orderDetails.createdDate,\n DateFormat.DayMonthNameYear,\n )}`;\n\n this.orderInfo = {\n shippingAddress: { ...orderDetails.shippingAddress },\n billingAddress: { ...orderDetails.billingAddress },\n party: {\n consultant: `${orderDetails.consultantFirstName} ${orderDetails.consultantLastName}`,\n host: orderDetails.partyHost,\n },\n };\n\n orderDetails.orderLines.forEach((orderLine) => {\n for (let index = 0; index < orderLine.quantity; index++) {\n this.orderLines.push({\n ...orderLine,\n price: orderLine.discountedPrice || orderLine.originalPrice,\n checked: false,\n reason: null,\n });\n }\n this.orderLines.sort((a, b) => (a.productName < b.productName ? -1 : 1));\n });\n }),\n );\n }\n\n private resetOrderDetialValues() {\n this.title = initialValues.title;\n this.orderDate = initialValues.orderDate;\n this.orderLines = initialValues.orderLines;\n this.orderInfo = initialValues.orderInfo;\n }\n}\n","
    \n
    \n {{ data?.title }}\n \n \n \n
    \n
    \n
    \n Name\n
    \n
    \n {{ data?.name }}\n
    \n
    \n Address\n
    \n
    \n {{ data?.addressLine1 }}\n {{ data?.addressLine2 }}\n
    \n
    \n Consultant\n
    \n
    \n {{ data?.consultant }}\n
    \n
    \n Host\n
    \n
    \n {{ data?.host }}\n
    \n
    \n\n
    \n
    \n Name\n {{ data?.name }}\n
    \n
    \n Address\n
    \n {{ data?.addressLine1 }}\n {{ data?.addressLine2 }}\n
    \n
    \n
    \n Consultant\n {{ data?.consultant }}\n
    \n
    \n Host\n {{ data?.host }}\n
    \n
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { InfoCardAttributes } from '@core/models/info-card-attributes.model';\n\n@Component({\n selector: 'app-my-returns-info-card',\n templateUrl: './my-returns-info-card.component.html',\n styleUrls: ['./my-returns-info-card.component.scss'],\n})\nexport class MyReturnsInfoCardComponent {\n @Input() data: InfoCardAttributes;\n @Output() openChangeAddressModal: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n changeAddress(): void {\n this.openChangeAddressModal.emit();\n }\n}\n","\n
    \n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport { selectCountryStates } from '@core/store/address';\nimport { fetchCountryStates } from '@core/store/address/address.actions';\nimport { OrderAddress } from '@core/store/order/order-state-models';\nimport { Store } from '@ngrx/store';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-address-form-modal',\n templateUrl: './address-form-modal.component.html',\n styleUrls: ['./address-form-modal.component.scss'],\n})\nexport class AddressFormModalComponent implements OnInit {\n @Input() address: OrderAddress;\n @Output() addressChange: EventEmitter = new EventEmitter();\n\n readonly FirstName: string = 'firstName';\n readonly LastName: string = 'lastName';\n readonly AddressLine1: string = 'addressLine1';\n readonly AddressLine2: string = 'addressLine2';\n readonly AddressLine3: string = 'addressLine3';\n readonly City: string = 'city';\n readonly State: string = 'state';\n readonly ZipCode: string = 'zipCode';\n readonly isMexEnv = isMexEnv;\n\n countryStates$: Observable;\n addressFormGroup: FormGroup;\n modalConfig: ModalConfig = {\n title: $localize`Change address`,\n hideCloseButton: true,\n hideDismissButton: true,\n onDismiss: this.cancel.bind(this),\n ngbModalOptions: {\n size: 'md',\n },\n };\n\n @ViewChild('modal') private modal: ModalComponent;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n ) {}\n\n ngOnInit(): void {\n this.store$.dispatch(fetchCountryStates());\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectCountryStates));\n this.createFormGroup();\n }\n\n openModal(): void {\n this.addressFormGroup.patchValue(this.address);\n this.modal.open();\n }\n\n apply(): void {\n this.addressChange.emit(this.addressFormGroup.value);\n this.modal.close();\n }\n\n cancel(): void {\n this.modal.close();\n }\n\n private createFormGroup(): void {\n this.addressFormGroup = this.fb.group({\n [this.FirstName]: ['', Validators.required],\n [this.LastName]: ['', Validators.required],\n [this.AddressLine1]: ['', Validators.required],\n [this.AddressLine2]: [''],\n [this.City]: ['', Validators.required],\n [this.State]: ['', Validators.required],\n [this.ZipCode]: ['', Validators.required],\n });\n\n if (isMexEnv) {\n const addressLine3Control = new FormControl('');\n this.addressFormGroup.addControl(this.AddressLine3, addressLine3Control);\n }\n }\n}\n","
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { AddressType } from '@core/enums/address-type.enum';\nimport { InfoCardAttributes } from '@core/models/info-card-attributes.model';\nimport { OrderAddress } from '@core/store/order/order-state-models';\nimport { createAddressCardFromOrderAddress } from '@shared/utils/create-shipping-info-card-attributes';\nimport { ReturnOrderInformationType } from '../new-return/new-return.component';\nimport { AddressFormModalComponent } from './address-form-modal/address-form-modal.component';\n\n@Component({\n selector: 'app-order-information',\n templateUrl: './order-information.component.html',\n styleUrls: ['./order-information.component.scss'],\n})\nexport class OrderInformationComponent implements OnChanges {\n @Input() orderInfo: ReturnOrderInformationType;\n @Input() readOnly: boolean = true;\n @Output() orderInfoChange = new EventEmitter();\n @ViewChild('addressFormModal') addressFormModal: AddressFormModalComponent;\n\n shippingAddressCardInformation: InfoCardAttributes;\n billingAddressCardInformation: InfoCardAttributes;\n partyCardInformation: InfoCardAttributes;\n selectedAddressType: AddressType;\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!!changes.orderInfo.currentValue) {\n this.createCards();\n }\n }\n\n openModal(): void {\n this.addressFormModal.openModal();\n }\n\n addressChange(address: OrderAddress): void {\n this.orderInfo.shippingAddress = address;\n this.createCards();\n }\n\n private createCards(): void {\n this.shippingAddressCardInformation = createAddressCardFromOrderAddress(\n this.orderInfo.shippingAddress,\n $localize`Shipping information`,\n );\n this.shippingAddressCardInformation.readOnly = this.readOnly;\n this.partyCardInformation = { ...this.orderInfo.party, title: $localize`Party information` };\n }\n}\n","export enum ReturnReason {\n MissingParts,\n Damaged,\n PackingError,\n}\n","import { ReturnReason } from '@core/enums/return-reason';\n\nexport const ReturnReasonLocale = {\n [ReturnReason.MissingParts]: $localize`Missing parts`,\n [ReturnReason.Damaged]: $localize`Damaged`,\n [ReturnReason.PackingError]: $localize`Packing error`,\n};\n","\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    {{ orderLine.collectionName }}
    \n
    \n {{ orderLine.productName }}\n
    \n
    #{{ orderLine.sku }}
    \n
    \n
    \n\n
    \n
    {{ orderLine.price | phCurrency }}
    \n
    \n\n
    \n
    {{ orderLine.reason }}
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n \n
    \n
    {{ orderLine.collectionName }}
    \n
    {{ orderLine.productName }}
    \n
    #{{ orderLine.sku }}
    \n \n
    \n Return\n \n
    \n \n
    \n
    \n
    {{ orderLine.price | phCurrency }}
    \n
    \n
    \n
    \n
    {{ orderLine.reason }}
    \n
    \n
    \n
    \n
    \n
    \n\n\n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ReturnReasonLocale } from '@core/constants/retrun-reason-locale';\nimport { ReturnReason } from '@core/enums/return-reason';\nimport { Thumbnail } from '@core/enums/thumbnail.enum';\nimport { ReturnOrderLineType } from '../../new-return/new-return.component';\n\n@Component({\n selector: 'app-return-order-line',\n templateUrl: './return-order-line.component.html',\n styleUrls: ['./return-order-line.component.scss'],\n})\nexport class ReturnOrderLineComponent implements OnInit {\n @Input() readOnly: boolean;\n @Input() orderLine: ReturnOrderLineType;\n @Output() orderLineChange: EventEmitter =\n new EventEmitter();\n readonly ReturnReasonEnum = ReturnReason;\n readonly ReturnReasonLocale = ReturnReasonLocale;\n\n thumbnail = Thumbnail;\n returnReasonList = [];\n\n constructor() {}\n\n ngOnInit(): void {\n this.createReasonsOfReturnList();\n }\n\n toggleOrderLine() {\n this.orderLineChange.emit({ ...this.orderLine, checked: !this.orderLine.checked });\n }\n\n changeReturnReason(reason: any) {\n this.orderLineChange.emit({ ...this.orderLine, reason: reason.target.value });\n }\n\n createReasonsOfReturnList() {\n for (let key in this.ReturnReasonEnum) {\n if (!isNaN(Number(key))) {\n this.returnReasonList.push(this.ReturnReasonLocale[key]);\n }\n }\n }\n}\n","
    \n
    Product(s)
    \n
    Price
    \n
    Reason of return
    \n
    \n
    \n\n \n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ReturnOrderLineType } from '../new-return/new-return.component';\n\n@Component({\n selector: 'app-return-order-lines',\n templateUrl: './return-order-lines.component.html',\n styleUrls: ['./return-order-lines.component.scss'],\n})\nexport class ReturnOrderLinesComponent {\n @Input() readOnly: boolean;\n @Input() orderLines: ReturnOrderLineType[] = [];\n @Output() orderLinesChange: EventEmitter = new EventEmitter<\n ReturnOrderLineType[]\n >();\n\n constructor() {}\n\n orderLineChange(orderLine: ReturnOrderLineType, index: number) {\n const newOrderLines = [...this.orderLines];\n newOrderLines[index] = orderLine;\n this.orderLinesChange.emit(newOrderLines);\n }\n}\n","
    \n \n \n \n \n \n My Returns\n \n \n\n \n
    \n \n
    \n \n \n
    \n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { DefaultLayoutComponent } from '@base/components/layout/default-layout/default-layout.component';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { AuthGuardService } from '@core/services/auth-guard.service';\nimport { GuestGuardService } from '@core/services/guest-guard.service';\nimport { UsaCountryGuardService } from '@core/services/usa-country-guard.service';\nimport { UserFeatureGuardService } from '@core/services/user-feature-guard.service';\nimport { AccountComponent } from '@user/components/account/account.component';\nimport { AddressesComponent } from '@user/components/account/addresses/addresses.component';\nimport { OrderDetailsComponent } from '@user/components/account/orders/order-details/order-details.component';\nimport { OrdersComponent } from '@user/components/account/orders/orders.component';\nimport { PaymentMethodsComponent } from '@user/components/account/payment-methods/payment-methods.component';\nimport { RecipesComponent } from '@user/components/account/recipes/recipes.component';\nimport { ReturnsComponent } from '@user/components/account/returns/returns.component';\nimport { WishlistComponent } from '@user/components/account/wishlist/wishlist.component';\nimport { RegistrationComponent } from '@user/components/registration/registration.component';\nimport { AddressEditorComponent } from './components/account/addresses/address-editor/address-editor.component';\nimport { CcOrderDetailsComponent } from './components/account/orders/cc-order-details/cc-order-details.component';\nimport { CreatePaymentMethodComponent } from './components/account/payment-methods/create-payment-method/create-payment-method.component';\nimport { ProfileComponent } from './components/account/profile/profile.component';\nimport { NewReturnComponent } from './components/account/returns/new-return/new-return.component';\nimport { ReturnDetailsPageComponent } from './components/account/returns/return-details-page/return-details-page.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: DefaultLayoutComponent,\n children: [\n {\n path: UserRoute.Registration,\n component: RegistrationComponent,\n canActivate: [GuestGuardService, UserFeatureGuardService],\n data: {\n title: $localize`PH - Registration Page - Title`,\n },\n },\n {\n path: UserRoute.MyAccount,\n component: AccountComponent,\n children: [\n {\n path: UserRoute.Profile,\n component: ProfileComponent,\n data: { title: $localize`PH - Profile Page - Title` },\n },\n {\n path: UserRoute.Orders,\n component: OrdersComponent,\n data: { title: $localize`PH - My Orders Page - Title` },\n },\n { path: UserRoute.Orders + '/:orderId', component: OrderDetailsComponent },\n { path: UserRoute.Orders + '/cc/:poeOrderId', component: CcOrderDetailsComponent },\n {\n path: UserRoute.Wishlist,\n component: WishlistComponent,\n data: { title: $localize`PH - My Wishlist Page - Title` },\n },\n {\n path: UserRoute.Addresses,\n component: AddressesComponent,\n data: { title: $localize`PH - My Addresses Page - Title` },\n },\n { path: UserRoute.Addresses + '/:addressId', component: AddressEditorComponent },\n {\n path: UserRoute.PaymentMethods,\n component: PaymentMethodsComponent,\n canActivate: [UsaCountryGuardService],\n data: { title: $localize`PH - My Payment Method Page - Title` },\n },\n {\n path: UserRoute.PaymentMethods + '/' + UserRoute.New,\n component: CreatePaymentMethodComponent,\n canActivate: [UsaCountryGuardService],\n data: { title: $localize`PH - New Payment Method Page - Title` },\n },\n {\n path: UserRoute.Recipes,\n component: RecipesComponent,\n data: { title: $localize`PH - Recipes Page - Title` },\n },\n {\n path: UserRoute.Returns,\n component: ReturnsComponent,\n data: { title: $localize`PH - My Returns Page - Title` },\n },\n { path: UserRoute.Returns + '/' + UserRoute.New, component: NewReturnComponent },\n { path: UserRoute.Returns + '/:returnId', component: ReturnDetailsPageComponent },\n ],\n canActivate: [AuthGuardService],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class UserRoutingModule {}\n","import { DatePipe } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { DateFormat } from '@core/constants/date-format';\nimport { AppState } from '@core/store';\nimport { selectReturnDetails, selectReturnStateLoading } from '@core/store/return';\nimport { ReturnDetails } from '@core/store/return/return-state-models';\nimport { fetchReturnDetails } from '@core/store/return/return.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport {\n ReturnOrderInformationType,\n ReturnOrderLineType,\n} from '../new-return/new-return.component';\n\n@Component({\n templateUrl: './return-details-page.component.html',\n styleUrls: ['./return-details-page.component.scss'],\n providers: [DatePipe],\n})\nexport class ReturnDetailsPageComponent implements OnInit {\n returnDetails$: Observable;\n loading$: Observable;\n\n title: string;\n returnDate: string;\n returnInfo: ReturnOrderInformationType;\n productLines: ReturnOrderLineType[] = [];\n\n constructor(\n private store$: Store,\n private activatedRoute: ActivatedRoute,\n private datePipe: DatePipe,\n ) {}\n\n ngOnInit(): void {\n this.loading$ = this.store$.select(selectReturnStateLoading);\n this.returnDetails$ = this.store$.select(selectReturnDetails);\n this.store$.dispatch(\n fetchReturnDetails({ returnId: this.activatedRoute.snapshot.params['returnId'] }),\n );\n\n this.returnDetails$\n .pipe(\n filter((returnDetials) => !!returnDetials),\n take(1),\n )\n .subscribe((returnDetails) => {\n this.title = `${$localize`Return ID #`}${returnDetails.returnId}`;\n this.returnDate = `${$localize`Return date:`} ${this.datePipe.transform(\n returnDetails.submittedDate,\n DateFormat.DayMonthNameYear,\n )}`;\n\n this.productLines = returnDetails.returnProductDetails.map((productLine) => ({\n reason: productLine.reason,\n productName: productLine.productName,\n collectionName: productLine.collectionName,\n sku: productLine.sku,\n price: productLine.price,\n images: productLine.images,\n }));\n\n this.returnInfo = {\n shippingAddress: returnDetails.shippingAddress,\n billingAddress: returnDetails.shippingAddress,\n party: {\n consultant: `${returnDetails.consultantFirstName} ${returnDetails.consultantLastName}`,\n host: returnDetails.partyHost,\n },\n };\n });\n }\n}\n","
    \n
    \n \n \n activeStep; else stepDone\">{{ i + 1 }}\n \n \n \n \n {{ step }}\n
    \n
    \n\n\n
    \n
    \n
    \n {{ steps[activeStep] }}\n
    \n
    \n Next: {{ steps[activeStep + 1] }}\n
    \n
    \n \n
    \n
    \n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-return-stepper-navigator',\n templateUrl: './return-stepper-navigator.component.html',\n styleUrls: ['./return-stepper-navigator.component.scss'],\n})\nexport class ReturnStepperNavigatorComponent {\n @Input() activeStep: number;\n @Input() steps: string[];\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-return-step-navigation-buttons',\n templateUrl: './return-step-navigation-buttons.component.html',\n styleUrls: ['./return-step-navigation-buttons.component.scss'],\n})\nexport class ReturnStepNavigationButtonsComponent {\n @Input() negativeButtonLabel: string = $localize`Back`;\n @Input() positiveButtonLabel: string = $localize`Next`;\n @Input() positiveButtonDisabled: boolean = false;\n @Output() negativeButtonClick: EventEmitter = new EventEmitter();\n @Output() positiveButtonClick: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n previousStepClick(): void {\n this.negativeButtonClick.emit();\n }\n\n nextStepClick(): void {\n this.positiveButtonClick.emit();\n }\n}\n","
    \n
    \n \n
    \n
    \n \n {{ positiveButtonLabel }}\n \n
    \n
    \n","\n
    \n \n
    \n
    \n
    {{ title }}
    \n \n
    \n \n
    \n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { ConfirmModalComponent } from '../confirm-modal/confirm-modal.component';\n\n@Component({\n selector: 'app-info-modal',\n templateUrl: './info-modal.component.html',\n styleUrls: ['./info-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InfoModalComponent {\n @Input() title: string;\n @Input() actionLabel: string = $localize`Close`;\n @Input() size: 'sm' | 'lg' | 'xl';\n @Input() backdrop: boolean | 'static' = 'static';\n @Input() showX: boolean = false;\n\n @Output() actionClick: EventEmitter = new EventEmitter();\n\n @ViewChild('modal') private modalContent: TemplateRef;\n\n private payload: any;\n private modalRef: NgbModalRef;\n\n constructor(private modalService: NgbModal) {}\n\n open(payload: any = null) {\n this.payload = payload;\n this.modalRef = this.modalService.open(this.modalContent, {\n centered: true,\n size: this.size,\n backdrop: this.backdrop,\n });\n }\n\n onAction() {\n this.actionClick.emit(this.payload);\n this.close();\n }\n\n close() {\n this.modalRef.dismiss();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { selectSubmitReturnSucceeded } from '@core/store/return';\nimport { resetReturnState, submitReturn } from '@core/store/return/return.actions';\nimport { Store } from '@ngrx/store';\nimport { InfoModalComponent } from '@shared/components/info-modal/info-modal.component';\nimport { Subscription } from 'rxjs';\n\nimport { CountryName } from '@core/constants/country-name';\nimport { UserRoute } from '@core/constants/routes.const';\nimport { OrderAddress } from '@core/store/order/order-state-models';\nimport { filter, take } from 'rxjs/operators';\nimport { ReturnOrderInformationType, ReturnOrderLineType } from '../new-return.component';\n\n@Component({\n selector: 'app-return-summary-step',\n templateUrl: './return-summary-step.component.html',\n styleUrls: ['./return-summary-step.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReturnSummaryStepComponent implements OnChanges, OnInit, OnDestroy {\n @Input() activeStep: number;\n @Output() activeStepChange = new EventEmitter();\n\n @Input() orderInfo: ReturnOrderInformationType;\n @Output() orderInfoChange = new EventEmitter();\n\n @Input() orderLines: ReturnOrderLineType[];\n\n checkedOrderLines: ReturnOrderLineType[];\n subscriptions = new Subscription();\n\n @ViewChild('infoModal') private infoModal: InfoModalComponent;\n\n constructor(\n private store$: Store,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.store$\n .select(selectSubmitReturnSucceeded)\n .pipe(\n filter((succeeded) => succeeded),\n take(1),\n )\n .subscribe(() => {\n this.infoModal.open();\n }),\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.orderLines) {\n this.checkedOrderLines = this.orderLines.filter((orderLine) => orderLine.checked);\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n submitReturn() {\n this.store$.dispatch(\n submitReturn({\n payload: {\n firstName: this.orderInfo.shippingAddress.firstName,\n lastName: this.orderInfo.shippingAddress.lastName,\n shippingAddress: this.mapOrderInfoShippingAddressToReturnPayloadAddress(\n this.orderInfo.shippingAddress,\n ),\n items: this.checkedOrderLines.map((orderLine) => ({\n orderLineId: orderLine.orderLineId,\n reason: orderLine.reason.toString(),\n })),\n },\n }),\n );\n }\n\n confirm() {\n this.store$.dispatch(resetReturnState());\n this.router.navigateByUrl(`/${UserRoute.MyAccount}/${UserRoute.Returns}`);\n }\n\n private mapOrderInfoShippingAddressToReturnPayloadAddress(\n shippingAddress: OrderAddress,\n ): OrderAddress {\n const address = { ...shippingAddress };\n address.country = CountryName[address.country];\n return address;\n }\n}\n","\n
    \n \n
    \n\n
    \n
    \n \n
    \n
    \n\n\n
    \n
    Your return request were successful. Our team will get in touch with you soon!\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { fetchOrderDetails } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'app-select-order-step',\n templateUrl: './select-order-step.component.html',\n styleUrls: ['./select-order-step.component.scss'],\n})\nexport class SelectOrderStepComponent {\n @Input() activeStep: number;\n @Output() activeStepChange = new EventEmitter();\n\n constructor(private store$: Store) {}\n\n selectOrder(orderId: string) {\n this.store$.dispatch(fetchOrderDetails({ orderId }));\n this.activeStepChange.emit(this.activeStep + 1);\n }\n}\n","

    Select an order to set a new return.

    \n\n","

    Need to add simple one sentence instruction on what to do on this return product screen.

    \n\n\n \n
    \n \n
    \n\n
    \n
    \n \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { selectOrderStateLoading } from '@core/store/order';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { ReturnOrderInformationType, ReturnOrderLineType } from '../new-return.component';\n\n@Component({\n selector: 'app-select-products-step',\n templateUrl: './select-products-step.component.html',\n styleUrls: ['./select-products-step.component.scss'],\n})\nexport class SelectProductsStepComponent implements OnInit {\n @Input() activeStep: number;\n @Output() activeStepChange = new EventEmitter();\n\n @Input() orderInfo: ReturnOrderInformationType;\n @Output() orderInfoChange = new EventEmitter();\n\n @Input() orderLines: ReturnOrderLineType[];\n @Output() orderLinesChange = new EventEmitter();\n\n loading$: Observable;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.loading$ = this.store$.select(selectOrderStateLoading);\n }\n\n next() {\n if (this.isProductSelectionValid()) {\n this.activeStepChange.emit(this.activeStep + 1);\n }\n }\n\n private isProductSelectionValid(): boolean {\n const hasCheckedItem = this.orderLines.filter((orderLine) => orderLine.checked).length > 0;\n const allCheckedItemHasReason =\n this.orderLines.filter((orderLine) => orderLine.checked && !orderLine.reason).length === 0;\n\n return hasCheckedItem && allCheckedItemHasReason;\n }\n}\n","import { LayoutModule } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouterModule } from '@angular/router';\nimport { CartModule } from '@cart/cart.module';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { PaymentModule } from '@payment/payment.module';\nimport { SharedModule } from '@shared/shared.module';\nimport { UserRoutingModule } from '@user/user-routing.module';\n\nimport { ConsultantModule } from '../consultant/consultant.module';\nimport { AccountComponent } from './components/account/account.component';\nimport { AddressEditorComponent } from './components/account/addresses/address-editor/address-editor.component';\nimport { AddressesComponent } from './components/account/addresses/addresses.component';\nimport { CcOrderDetailsTableComponentComponent } from './components/account/orders/cc-order-details/cc-order-details-table/cc-order-details-table.component';\nimport { CcOrderDetailsTotalComponent } from './components/account/orders/cc-order-details/cc-order-details-total/cc-order-details-total.component';\nimport { CcOrderDetailsComponent } from './components/account/orders/cc-order-details/cc-order-details.component';\nimport { CCOrderHistoryComponent } from './components/account/orders/cc-order-history/cc-order-history.component';\nimport { OrderDetailsBackOrderItemsComponent } from './components/account/orders/order-details/order-details-back-order-items/order-details-back-order-items.component';\nimport { CartonItemsComponent } from './components/account/orders/order-details/order-details-cartons/carton-items/carton-items.component';\nimport { OrderDetailsCartonsComponent } from './components/account/orders/order-details/order-details-cartons/order-details-cartons.component';\nimport { OrderDetailsTableComponent } from './components/account/orders/order-details/order-details-table/order-details-table.component';\nimport { OrderDetailsTotalComponent } from './components/account/orders/order-details/order-details-total/order-details-total.component';\nimport { OrderDetailsComponent } from './components/account/orders/order-details/order-details.component';\nimport { OrderHistoryComponent } from './components/account/orders/order-history/order-history.component';\nimport { OrdersComponent } from './components/account/orders/orders.component';\nimport { AddressRequiredModalComponent } from './components/account/payment-methods/address-required-modal/address-required-modal.component';\nimport { CreatePaymentMethodComponent } from './components/account/payment-methods/create-payment-method/create-payment-method.component';\nimport { PaymentMethodsComponent } from './components/account/payment-methods/payment-methods.component';\nimport { ProfileComponent } from './components/account/profile/profile.component';\nimport { RecipesComponent } from './components/account/recipes/recipes.component';\nimport { NewReturnComponent } from './components/account/returns/new-return/new-return.component';\nimport { ReturnStepNavigationButtonsComponent } from './components/account/returns/new-return/return-step-navigation-buttons/return-step-navigation-buttons.component';\nimport { ReturnStepperNavigatorComponent } from './components/account/returns/new-return/return-stepper-navigator/return-stepper-navigator.component';\nimport { ReturnSummaryStepComponent } from './components/account/returns/new-return/return-summary-step/return-summary-step.component';\nimport { SelectOrderStepComponent } from './components/account/returns/new-return/select-order-step/select-order-step.component';\nimport { SelectProductsStepComponent } from './components/account/returns/new-return/select-products-step/select-products-step.component';\nimport { AddressFormModalComponent } from './components/account/returns/order-information/address-form-modal/address-form-modal.component';\nimport { MyReturnsInfoCardComponent } from './components/account/returns/order-information/my-returns-info-card/my-returns-info-card.component';\nimport { OrderInformationComponent } from './components/account/returns/order-information/order-information.component';\nimport { ReturnDetailsPageComponent } from './components/account/returns/return-details-page/return-details-page.component';\nimport { ReturnHistoryComponent } from './components/account/returns/return-history/return-history.component';\nimport { ReturnOrderLineComponent } from './components/account/returns/return-order-lines/return-order-line/return-order-line.component';\nimport { ReturnOrderLinesComponent } from './components/account/returns/return-order-lines/return-order-lines.component';\nimport { ReturnsComponent } from './components/account/returns/returns.component';\nimport { WishlistComponent } from './components/account/wishlist/wishlist.component';\nimport { RegistrationComponent } from './components/registration/registration.component';\n\n@NgModule({\n declarations: [\n AccountComponent,\n ProfileComponent,\n OrdersComponent,\n WishlistComponent,\n AddressesComponent,\n PaymentMethodsComponent,\n RecipesComponent,\n ReturnsComponent,\n RegistrationComponent,\n ProfileComponent,\n AddressEditorComponent,\n OrderDetailsComponent,\n OrderDetailsTotalComponent,\n OrderDetailsTableComponent,\n OrderInformationComponent,\n CcOrderDetailsComponent,\n CcOrderDetailsTableComponentComponent,\n CcOrderDetailsTotalComponent,\n CreatePaymentMethodComponent,\n SelectOrderStepComponent,\n ReturnStepperNavigatorComponent,\n MyReturnsInfoCardComponent,\n AddressFormModalComponent,\n OrderDetailsCartonsComponent,\n OrderDetailsBackOrderItemsComponent,\n ReturnStepNavigationButtonsComponent,\n SelectProductsStepComponent,\n ReturnOrderLinesComponent,\n ReturnOrderLineComponent,\n ReturnHistoryComponent,\n NewReturnComponent,\n OrderHistoryComponent,\n ReturnSummaryStepComponent,\n ReturnDetailsPageComponent,\n CartonItemsComponent,\n AddressRequiredModalComponent,\n CCOrderHistoryComponent,\n ],\n imports: [\n BrowserModule,\n CommonModule,\n NgbModule,\n ReactiveFormsModule,\n UserRoutingModule,\n RouterModule,\n SharedModule,\n LayoutModule,\n FormsModule,\n CartModule,\n ConsultantModule,\n PaymentModule,\n ],\n exports: [AccountComponent, RegistrationComponent],\n})\nexport class UserModule {}\n","import { ModuleWithProviders } from '@angular/core';\nimport { effects } from '@core/store';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\n\nexport const EffectModuleConfig: ModuleWithProviders = EffectsModule.forRoot(effects);\n","import { Component, HostListener } from '@angular/core';\n\n@Component({\n selector: 'app-back-forward-cache-initializer',\n template: '',\n})\nexport class BackForwardCacheInitializerComponent {\n @HostListener('window:pageshow', ['$event']) pageshow(e) {\n if (e.persisted) {\n window.location.reload();\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { LocalStorageService } from '@core/services/local-storage.service';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-party-initializer',\n template: '',\n})\nexport class PartyInitializerComponent extends BaseComponent implements OnInit, OnDestroy {\n constructor(private router: Router, private localStorageService: LocalStorageService) {\n super();\n }\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.router.events\n .pipe(filter((e) => e instanceof NavigationStart))\n .subscribe((e: NavigationStart) => {\n const partyId = this.router.parseUrl(e.url).queryParams?.[RouterQueryParams.partyId];\n\n if (partyId) {\n this.localStorageService.setItem(RouterQueryParams.partyId, partyId);\n }\n }),\n );\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { environment } from '@env';\n\n@Component({\n selector: 'app-gtm-initializer',\n template: '',\n})\nexport class GtmInitializerComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {\n const script0 = document.createElement('script');\n script0.innerText = 'window.dataLayer = window.dataLayer || [];';\n\n const script1 = document.createElement('script');\n script1.innerText = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','${environment.gtmContainerId}');`;\n\n const script2 = document.createElement('noscript');\n const iframe = document.createElement('iframe');\n iframe.setAttribute(\n 'src',\n `https://www.googletagmanager.com/ns.html?id=${environment.gtmContainerId}`,\n );\n iframe.setAttribute('height', '0');\n iframe.setAttribute('width', '0');\n iframe.setAttribute('style', 'display:none;visibility:hidden');\n script2.appendChild(iframe);\n\n document.head.appendChild(script0);\n document.head.appendChild(script1);\n document.body.appendChild(script2);\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CartRoutes, ConsultantRoutes, StartNowAppRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport {\n selectCurrentConsultantParties,\n selectIsConsultantCheckingDone,\n selectParty,\n} from '@core/store/consultant';\nimport { Store } from '@ngrx/store';\nimport { ConfirmModalComponent } from '@shared/components/confirm-modal/confirm-modal.component';\nimport { combineLatest } from 'rxjs';\nimport { filter, take, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-open-party-notification-initializer',\n templateUrl: './open-party-notification-initializer.component.html',\n})\nexport class OpenPartyNotificationInitializerComponent implements OnInit {\n @ViewChild('notificationModal') private notificationModal: ConfirmModalComponent;\n\n constructor(\n private store$: Store,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n const party$ = this.store$.select(selectParty);\n const openParties$ = this.store$.select(selectCurrentConsultantParties);\n const isConsultantCheckingDone$ = this.store$.select(selectIsConsultantCheckingDone);\n\n combineLatest([openParties$, isConsultantCheckingDone$])\n .pipe(\n filter(() => !window.location.href.includes(`/${CartRoutes.Checkout}`)),\n filter(() => !window.location.href.includes(`/${StartNowAppRoutes.StartNowApp}`)),\n filter(() => !window.location.href.includes('/deliveryinfo')),\n filter(([, isConsultantCheckingDone]) => isConsultantCheckingDone),\n withLatestFrom(party$),\n filter(([[openParties], party]) => openParties?.length && party === null),\n take(1),\n )\n .subscribe(() => this.notificationModal.open());\n }\n\n onYes() {\n this.router.navigate([ConsultantRoutes.MyOpenPartiesRoute]);\n }\n}\n","\n
    \n Do you want to shop in one of the open parties so that the host gets credit for the order?\n
    \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MsalBroadcastService, MsalService } from '@azure/msal-angular';\nimport { EventMessage, EventType, InteractionStatus } from '@azure/msal-browser';\nimport { AccountInfo } from '@azure/msal-common';\nimport { LocalStorageKey } from '@core/enums/local-storage-key.enum';\nimport { TokenClaims } from '@core/models/token-claims.model';\nimport { LocalStorageService } from '@core/services/local-storage.service';\nimport { AppState } from '@core/store';\nimport { logInFailed, logInSuccess, setAuthLoading } from '@core/store/auth/auth.actions';\nimport { Store } from '@ngrx/store';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-auth-initializer',\n template: '',\n})\nexport class AuthInitializerComponent implements OnInit, OnDestroy {\n isLoading: boolean = false;\n eventSubscription: Subscription = new Subscription();\n\n constructor(\n private msalService: MsalService,\n private msalBroadcastService: MsalBroadcastService,\n private store$: Store,\n private toastr: ToastrService,\n private localStorageService: LocalStorageService,\n ) {}\n\n ngOnInit() {\n this.initAuthEvents();\n this.dispatchLoginState();\n }\n\n ngOnDestroy() {\n this.eventSubscription.unsubscribe();\n }\n\n private initAuthEvents() {\n this.msalService.instance.enableAccountStorageEvents();\n\n this.eventSubscription.add(\n this.msalBroadcastService.inProgress$.subscribe((status: InteractionStatus) => {\n switch (status) {\n case InteractionStatus.None:\n this.store$.dispatch(setAuthLoading({ loading: false }));\n break;\n\n default:\n this.store$.dispatch(setAuthLoading({ loading: true }));\n break;\n }\n }),\n );\n\n this.eventSubscription.add(\n this.msalBroadcastService.msalSubject$.subscribe((event: EventMessage) => {\n switch (event.eventType) {\n case EventType.LOGIN_SUCCESS:\n case EventType.ACCOUNT_ADDED:\n this.dispatchLoginState();\n break;\n\n case EventType.SSO_SILENT_SUCCESS:\n this.dispatchLoginState(false);\n break;\n\n case EventType.ACQUIRE_TOKEN_SUCCESS:\n this.handlePhoneVerification(\n (event.payload as AccountInfo).idTokenClaims as TokenClaims,\n );\n break;\n\n case EventType.ACQUIRE_TOKEN_FAILURE:\n this.msalService.logoutRedirect();\n break;\n\n default:\n break;\n }\n }),\n );\n }\n\n private dispatchLoginState(isNewLogin: boolean = true) {\n if (this.isAccountExist()) {\n this.store$.dispatch(logInSuccess({ isNewLogin }));\n } else {\n this.store$.dispatch(logInFailed({ error: null }));\n }\n }\n\n private isAccountExist(): boolean {\n return this.msalService.instance.getAllAccounts().length > 0;\n }\n\n private handlePhoneVerification(tokenClaims: TokenClaims): void {\n const toVerifyPhoneNumber = this.localStorageService.getItem(\n LocalStorageKey.toVerifyPhoneNumber,\n ) as string | null;\n\n if (toVerifyPhoneNumber && tokenClaims.phone.endsWith(toVerifyPhoneNumber)) {\n this.toastr.success(\n $localize`Mobile number verification is success`,\n $localize`Mobile number verified!`,\n );\n this.localStorageService.removeItem(LocalStorageKey.toVerifyPhoneNumber);\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { selectCart } from '@core/store/cart';\nimport { fetchCart } from '@core/store/cart/cart.actions';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { first, tap } from 'rxjs/operators';\n\n@Component({\n selector: 'app-cart-initializer',\n template: '',\n})\nexport class CartInitializerComponent implements OnInit, OnDestroy {\n private subscription: Subscription;\n\n constructor(private store: Store) {}\n\n ngOnInit(): void {\n this.subscription = this.store\n .select(selectCart)\n .pipe(\n first(),\n tap((cart) => {\n if (!cart) {\n this.store.dispatch(fetchCart());\n }\n }),\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","\n \n \n
    \n
    \n
    \n We recognized you have an\n \n active connection with {{ connected.fullName }}.\n \n You are on the\n \n consultant website for {{ current.fullName }}.\n \n Please choose an option below to continue.\n
    \n
    \n
    \n
    \n \n Go to\n \n {{ connected.fullName }}'s\n \n website\n \n
    \n
    \n \n Change my consultant connection to\n \n {{ current.fullName }}\n \n \n
    \n
    \n \n Place just this one time order with\n \n {{ current.fullName }}\n \n \n
    \n
    \n
    \n
    \n
    \n
    \n\n\n
    \n You are making a change to your consultant connection. Your new consultant will be\n {{ (currentConsultant$ | async)?.fullName }}.\n
    \n\n\n\n
    \n
    \n","import { AfterViewInit, Component, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AppState } from '@core/store';\nimport {\n selectAssignedConsultant,\n selectCurrentConsultant,\n selectIsAssignedConsultantFetched,\n selectIsCurrentConsultantFetched,\n} from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport {\n consultantCheckingInProgress,\n consultantCheckingIsDone,\n fetchAssignedConsultant,\n fetchCurrentConsultantByVanityName,\n} from '@core/store/consultant/consultant.actions';\nimport { selectUser } from '@core/store/user';\nimport { updateAssignedConsultant } from '@core/store/user/user.actions';\nimport { Store } from '@ngrx/store';\nimport { ConfirmModalComponent } from '@shared/components/confirm-modal/confirm-modal.component';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, filter, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-consultant-checker',\n templateUrl: './consultant-checker.component.html',\n styleUrls: ['./consultant-checker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ConsultantCheckerComponent implements AfterViewInit, OnDestroy {\n modalConfig: ModalConfig = {\n title: $localize`Confirm consultant connection`,\n hideCloseButton: true,\n hideDismissButton: true,\n onDismiss: this.consultantCheckingDone.bind(this),\n ngbModalOptions: {\n size: 'lg',\n modalDialogClass: 'checkerModal',\n },\n };\n\n currentConsultant$: Observable;\n assignedConsultant$: Observable;\n isCurrentConsultantFetched$: Observable;\n isAssignedConsultantFetched$: Observable;\n\n private subscriptions: Subscription = new Subscription();\n\n @ViewChild('checkerModal') private checkerModal: ModalComponent;\n @ViewChild('confirmModal') private confirmModal: ConfirmModalComponent;\n\n constructor(private store$: Store) {}\n\n ngAfterViewInit(): void {\n this.currentConsultant$ = this.store$.select(selectCurrentConsultant);\n this.isCurrentConsultantFetched$ = this.store$.select(selectIsCurrentConsultantFetched);\n this.assignedConsultant$ = this.store$.select(selectAssignedConsultant);\n this.isAssignedConsultantFetched$ = this.store$.select(selectIsAssignedConsultantFetched);\n this.subscriptions.add(\n combineLatest([this.store$.select(selectUser), this.currentConsultant$])\n .pipe(\n distinctUntilChanged(\n ([prevUser, prevConsultant], [currUser, currConsultant]) =>\n prevUser?.activeConsultantProwessId === currUser?.activeConsultantProwessId &&\n prevConsultant?.beeNumber === currConsultant?.beeNumber,\n ),\n filter(([user]) => !!user?.activeConsultantProwessId),\n filter(([user, consultant]) => user.activeConsultantProwessId !== consultant?.beeNumber),\n )\n .subscribe(() => {\n this.store$.dispatch(consultantCheckingInProgress());\n this.store$.dispatch(fetchAssignedConsultant());\n }),\n );\n this.listenFetchedCurrentAndAssignedConsultant();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n fetchConsultant(vanityName: string) {\n this.store$.dispatch(fetchCurrentConsultantByVanityName({ vanityName, filterCountry: true }));\n this.checkerModal.close();\n }\n\n close() {\n this.checkerModal.close();\n this.consultantCheckingDone();\n }\n\n openConfirmDialog(beeNumber: number) {\n this.confirmModal.open(beeNumber);\n this.checkerModal.close();\n }\n\n onConfirm(consultantProwessId: number) {\n this.store$.dispatch(updateAssignedConsultant({ consultantProwessId }));\n this.consultantCheckingDone();\n }\n\n onCancel() {\n this.checkerModal.open();\n }\n\n private consultantCheckingDone() {\n this.store$.dispatch(consultantCheckingIsDone());\n }\n\n private listenFetchedCurrentAndAssignedConsultant(): void {\n this.subscriptions.add(\n combineLatest([this.isCurrentConsultantFetched$, this.isAssignedConsultantFetched$])\n .pipe(\n filter(\n ([isCurrentConsultantFetched, isAssignedConsultantFetched]) =>\n isCurrentConsultantFetched && isAssignedConsultantFetched,\n ),\n withLatestFrom(this.currentConsultant$, this.assignedConsultant$),\n filter(\n ([, currentConsultant, assignedConsultant]) =>\n currentConsultant?.beeNumber !== assignedConsultant?.beeNumber,\n ),\n )\n .subscribe(([, currentConsultant, assignedConsultant]) => {\n if (!!currentConsultant && !!assignedConsultant) {\n this.checkerModal.open();\n } else if (!!currentConsultant && !assignedConsultant) {\n this.store$.dispatch(\n updateAssignedConsultant({ consultantProwessId: currentConsultant.beeNumber }),\n );\n } else if (!currentConsultant && !!assignedConsultant) {\n this.store$.dispatch(\n fetchCurrentConsultantByVanityName({\n vanityName: assignedConsultant.vanityName,\n filterCountry: true,\n }),\n );\n }\n }),\n );\n }\n}\n","import { Location } from '@angular/common';\nimport { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { ConsultantFinderModalComponent } from '@consultant/consultant-finder-modal/consultant-finder-modal.component';\nimport { BaseRoutes, StartNowAppRoutes } from '@core/constants/routes.const';\nimport { Country } from '@core/enums/country.enum';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { WebsiteMode } from '@core/enums/website-mode.enum';\nimport { AppState } from '@core/store';\nimport { selectIsNewLogin } from '@core/store/auth';\nimport { selectCurrentConsultant, selectIsCurrentConsultantCleared } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport {\n fetchCurrentConsultantByLoginName,\n fetchCurrentConsultantByVanityName,\n} from '@core/store/consultant/consultant.actions';\nimport { selectUser } from '@core/store/user';\nimport { updateAssignedConsultant } from '@core/store/user/user.actions';\nimport { selectWebsiteMode } from '@core/store/website-mode';\nimport { environment } from '@env';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, filter, map, take, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'app-consultant-initializer',\n templateUrl: './consultant-initializer.component.html',\n})\nexport class ConsultantInitializerComponent implements OnInit, AfterViewInit, OnDestroy {\n constructor(\n private store$: Store,\n private router: Router,\n private location: Location,\n ) {}\n\n readonly Routes = {\n ClearConsultant: BaseRoutes.ClearConsultant,\n };\n\n currentConsultant$: Observable;\n\n private subscriptions: Subscription = new Subscription();\n\n @ViewChild('consultantFinder') private consultantFinderModal: ConsultantFinderModalComponent;\n\n ngOnInit(): void {\n this.currentConsultant$ = this.store$.select(selectCurrentConsultant);\n\n this.initSetCidParam();\n this.initFetchCurrentConsultant();\n this.initConsultantAssigner();\n }\n\n ngAfterViewInit(): void {\n this.initOpenConsultantFinder();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private initFetchCurrentConsultant() {\n // eslint-disable-next-line max-len\n /* TODO: should refactor the logic: handle local storage here & isCurrentConsultantFetched in separate action */\n this.initFetchCurrentConsultantByVanityName();\n /* TODO: After all the CC1 users are moved to CC2 have to remove the loginName 7 lnid*/\n this.initFetchCurrentConsultantByLoginName();\n }\n\n private initOpenConsultantFinder() {\n combineLatest([\n this.store$.select(selectIsNewLogin),\n this.store$.select(selectWebsiteMode),\n this.store$.select(selectUser),\n ])\n .pipe(\n filter(([, , user]) => !!user.email && !user.activeConsultantProwessId),\n filter(([newLogin]) => newLogin),\n filter(([, websiteMode]) => websiteMode === WebsiteMode.corporate),\n filter(() => !window.location.href.includes('/deliveryinfo')),\n take(1),\n )\n .subscribe(() => this.consultantFinderModal.open());\n }\n\n private initSetCidParam() {\n this.subscriptions.add(\n combineLatest([\n this.router.events.pipe(filter((e) => e instanceof NavigationEnd)),\n this.currentConsultant$.pipe(distinctUntilChanged()),\n ])\n .pipe(\n map(([navEnd, currentConsultant]: [NavigationEnd, Consultant]) => ({\n navEnd,\n currentConsultant,\n })),\n filter(\n ({ navEnd }) =>\n !navEnd.url.includes(`/${this.Routes.ClearConsultant}`) &&\n !navEnd.url.includes(`/${StartNowAppRoutes.StartNowApp}`),\n ),\n filter(({ currentConsultant }) => !!currentConsultant),\n distinctUntilChanged(\n (prev, curr) =>\n prev.currentConsultant.vanityName === curr.currentConsultant.vanityName &&\n prev.navEnd.id === curr.navEnd.id,\n ),\n )\n .subscribe(({ currentConsultant }) => this.setCidUrlParam(currentConsultant.vanityName)),\n );\n }\n\n private initFetchCurrentConsultantByVanityName() {\n this.subscriptions.add(\n combineLatest([\n this.router.events.pipe(filter((e) => e instanceof NavigationStart)),\n this.currentConsultant$,\n ])\n .pipe(\n withLatestFrom(this.store$.select(selectIsCurrentConsultantCleared)),\n map<\n [[NavigationStart, Consultant], boolean],\n {\n navStart: NavigationStart;\n currentConsultant: Consultant;\n currentConsultantCleared: boolean;\n }\n >(([[navStart, currentConsultant], currentConsultantCleared]) => ({\n navStart,\n currentConsultant,\n currentConsultantCleared,\n })),\n filter(({ currentConsultantCleared }) => !currentConsultantCleared),\n filter(({ navStart }) => !navStart.url.includes(`/${this.Routes.ClearConsultant}`)),\n filter(\n ({ navStart }) =>\n this.router.parseUrl(navStart.url).queryParams?.[RouterQueryParams.cid] ||\n !this.router.parseUrl(navStart.url).queryParams?.[RouterQueryParams.lnid],\n ),\n distinctUntilChanged(\n ({ navStart: prevEvent }, { navStart: currEvent, currentConsultant }) => {\n const prevCid = this.router.parseUrl(prevEvent.url).queryParams?.[\n RouterQueryParams.cid\n ];\n const currCid = this.router.parseUrl(currEvent.url).queryParams?.[\n RouterQueryParams.cid\n ];\n return prevCid === currCid || (!currCid && !!currentConsultant);\n },\n ),\n )\n .subscribe(({ navStart }) => {\n const currUrlTree = this.router.parseUrl(navStart.url);\n this.store$.dispatch(\n fetchCurrentConsultantByVanityName({\n vanityName: currUrlTree.queryParams?.[RouterQueryParams.cid],\n filterCountry: this.shouldFilterCountry(navStart.url),\n }),\n );\n }),\n );\n }\n\n private initFetchCurrentConsultantByLoginName() {\n this.subscriptions.add(\n combineLatest([\n this.router.events.pipe(filter((e) => e instanceof NavigationStart)),\n this.currentConsultant$,\n ])\n .pipe(\n filter(\n ([navStart]: [NavigationStart, Consultant]) =>\n !navStart.url.includes(`/${this.Routes.ClearConsultant}`),\n ),\n filter(\n ([navStart]: [NavigationStart, Consultant]) =>\n !this.router.parseUrl(navStart.url).queryParams?.[RouterQueryParams.cid] &&\n this.router.parseUrl(navStart.url).queryParams?.[RouterQueryParams.lnid],\n ),\n distinctUntilChanged(\n (\n [prevEvent]: [NavigationStart, Consultant],\n [currEvent, currConsultant]: [NavigationStart, Consultant],\n ) => {\n const prevLnid = this.router.parseUrl(prevEvent.url).queryParams[\n RouterQueryParams.lnid\n ];\n const currLnid = this.router.parseUrl(currEvent.url).queryParams[\n RouterQueryParams.lnid\n ];\n return prevLnid === currLnid || (!currLnid && !!currConsultant);\n },\n ),\n )\n .subscribe(([navEnd]: [NavigationStart, Consultant]) => {\n const currUrlTree = this.router.parseUrl(navEnd.url);\n this.store$.dispatch(\n fetchCurrentConsultantByLoginName({\n loginName: currUrlTree.queryParams[RouterQueryParams.lnid],\n filterCountry: this.shouldFilterCountry(navEnd.url),\n }),\n );\n }),\n );\n }\n\n private initConsultantAssigner() {\n const user$ = this.store$.select(selectUser);\n\n combineLatest([user$, this.currentConsultant$])\n .pipe(\n filter(([user]) => user.email && !user.activeConsultantProwessId),\n filter(([, currentConsultant]) => !!currentConsultant),\n take(1),\n )\n .subscribe(([, currentConsultant]) => {\n this.store$.dispatch(\n updateAssignedConsultant({ consultantProwessId: currentConsultant.beeNumber }),\n );\n });\n }\n\n private setCidUrlParam(cid: string): void {\n const urlParams = new URLSearchParams(location.search);\n urlParams.set(RouterQueryParams.cid, cid);\n this.location.replaceState(this.router.url.split('?')[0], urlParams.toString());\n }\n\n private shouldFilterCountry(route: string): boolean {\n const currentRoute = route.split('?')[0];\n let filterCountry = true;\n\n if (environment.country === Country.Mexico) {\n filterCountry = currentRoute != `/${StartNowAppRoutes.StartNowApp}`;\n }\n\n return filterCountry;\n }\n}\n","\n\n","import { Component, HostListener } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\n\n@Component({\n selector: 'app-replicated-site-initializer',\n template: '',\n})\nexport class ReplicatedSiteInitializerComponent extends BaseComponent {\n private shouldConfirm: boolean = true;\n\n constructor(private router: Router) {\n super();\n }\n\n @HostListener('window:beforeunload')\n leavingPageWithoutConfirm(): boolean {\n return this.shouldConfirm;\n }\n\n redirectToEc1(): void {\n this.shouldConfirm = false;\n window.location.href = 'http://www.princesshouse.com/';\n }\n\n urlContainsCid(url: string): boolean {\n return !!this.router.parseUrl(url).queryParams?.[RouterQueryParams.cid];\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { StartNowAppRoutes } from '@core/constants/routes.const';\nimport { AppState } from '@core/store';\nimport { selectWishlist } from '@core/store/wishlist';\nimport { fetchWishlist } from '@core/store/wishlist/wishlist.actions';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-wishlist-initializer',\n template: '',\n})\nexport class WishlistInitializerComponent implements OnInit, OnDestroy {\n private subscription: Subscription = new Subscription();\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n if (window.location.pathname == '/' + StartNowAppRoutes.StartNowApp) {\n return;\n }\n\n this.subscription.add(\n this.store$\n .select(selectWishlist)\n .pipe(\n take(1),\n filter((wishList) => !wishList.length),\n )\n .subscribe(() => this.store$.dispatch(fetchWishlist())),\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { LogRocketService } from '@core/services/logrocket.service';\nimport { AppState } from '@core/store';\nimport { selectUser } from '@core/store/user';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-logrocket-initializer',\n template: '',\n})\nexport class LogRocketInitializerComponent implements OnDestroy {\n private subscriptions: Subscription = new Subscription();\n private initialized: boolean = false;\n\n private initRoutes: string[] = [\n 'start-now-app',\n 'product',\n 'products',\n 'search',\n 'cart',\n 'login',\n 'registration',\n ];\n\n constructor(\n private store$: Store,\n private logRocketService: LogRocketService,\n private router: Router,\n ) {\n this.subscriptions.add(\n this.router.events\n .pipe(\n filter(() => !this.initialized),\n filter((e) => e instanceof NavigationStart),\n filter((e: NavigationStart) => this.initRoutes.includes(e.url.split(/[\\/?]+/)?.[1])),\n )\n .subscribe(() => {\n this.logRocketService.initLogRocket();\n this.identify();\n this.initialized = true;\n }),\n );\n }\n\n identify(): void {\n this.subscriptions.add(\n this.store$.select(selectUser).subscribe((user) => {\n this.logRocketService.logRocketIdentify(user.email);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AppcuesService } from '@core/services/appcues.service';\nimport { AppState } from '@core/store';\nimport { selectUser } from '@core/store/user';\nimport { Store } from '@ngrx/store';\nimport { Subscription, combineLatest } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-appcues-initializer',\n template: '',\n})\nexport class AppcuesInitializerComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n private appcuesService: AppcuesService,\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n combineLatest([this.appcuesService.initAppcues(), this.store$.select(selectUser)])\n .pipe(filter(([appcues]) => appcues))\n .subscribe(([, user]) => {\n this.appcuesService.setAppcuesIdentityForLoggedInUser(user);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { DEFAULT_PAGE_DESCRIPTION, DEFAULT_PAGE_TITLE } from '@core/constants/page-title';\nimport { Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-title-initializer',\n template: '',\n})\nexport class TitleInitializerComponent implements OnInit, OnDestroy {\n subscriptions: Subscription = new Subscription();\n\n constructor(\n private router: Router,\n private titleService: Title,\n private meta: Meta,\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n map(() => {\n let route: ActivatedRoute = this.router.routerState.root;\n while (route.firstChild) {\n route = route.firstChild;\n }\n return [\n this.getTitle(route.snapshot.data['title']),\n this.getTitle(route.snapshot.data['description']),\n ];\n }),\n )\n .subscribe(([title, description]) => {\n this.titleService.setTitle(title);\n this.meta.updateTag({ name: 'description', content: this.getDescription(description) });\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private getTitle(title: string): string {\n return title ? title : DEFAULT_PAGE_TITLE;\n }\n\n private getDescription(description: string): string {\n return description ? description : DEFAULT_PAGE_DESCRIPTION;\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { WebsiteMode } from '@core/enums/website-mode.enum';\nimport { AppState } from '@core/store';\nimport { selectCurrentConsultant, selectParty } from '@core/store/consultant';\nimport { setWebsiteMode } from '@core/store/website-mode/website-mode.actions';\nimport { Store } from '@ngrx/store';\nimport { Subscription, combineLatest } from 'rxjs';\n\n@Component({\n selector: 'app-website-mode-initializer',\n template: '',\n})\nexport class WebsiteModeInitializerComponent implements OnInit, OnDestroy {\n subscriptions: Subscription = new Subscription();\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n combineLatest([\n this.store$.select(selectCurrentConsultant),\n this.store$.select(selectParty),\n ]).subscribe(([consultant, party]) => {\n if (!!consultant && !!party) {\n this.store$.dispatch(setWebsiteMode({ websiteMode: WebsiteMode.order }));\n } else if (!!consultant && !party) {\n this.store$.dispatch(setWebsiteMode({ websiteMode: WebsiteMode.consultant }));\n } else if (!consultant && !party) {\n this.store$.dispatch(setWebsiteMode({ websiteMode: WebsiteMode.corporate }));\n }\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n \n\n","import { Component } from '@angular/core';\nimport { AppInitService } from '@core/services/app-init.service';\n\n@Component({\n selector: 'app-cookiebot-initializer',\n templateUrl: './cookiebot-initializer.component.html',\n})\nexport class CookiebotInitializerComponent {\n isCookieBotEnabled: boolean;\n\n constructor(appInitService: AppInitService) {\n this.isCookieBotEnabled = appInitService.Settings.ec.isCookieBotEnabled;\n }\n}\n","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport var globalConsole = console;\nexport var originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach(function (name) {\n originalConsoleMethods[name] = globalConsole[name];\n});\nvar PREFIX = 'Datadog Browser SDK:';\nexport var display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\n","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n return fn.apply(void 0, args);\n }\n catch (err) {\n display.error(errorMsg, err);\n }\n };\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n }\n }\n }\n}\nexport function displayIfDebugEnabled() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (debugMode) {\n display.error.apply(display, __spreadArray(['[MONITOR]'], args, false));\n }\n}\n","export function includes(candidate, search) {\n return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n if (Array.from) {\n return Array.from(arrayLike);\n }\n var array = [];\n if (arrayLike instanceof Set) {\n arrayLike.forEach(function (item) { return array.push(item); });\n }\n else {\n for (var i = 0; i < arrayLike.length; i++) {\n array.push(arrayLike[i]);\n }\n }\n return array;\n}\nexport function find(array, predicate) {\n for (var i = 0; i < array.length; i += 1) {\n var item = array[i];\n if (predicate(item, i)) {\n return item;\n }\n }\n return undefined;\n}\nexport function findLast(array, predicate) {\n for (var i = array.length - 1; i >= 0; i -= 1) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\nexport function forEach(list, callback) {\n Array.prototype.forEach.call(list, callback);\n}\nexport function objectValues(object) {\n return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectEntries(object) {\n return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function startsWith(candidate, search) {\n return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n return candidate.slice(-search.length) === search;\n}\nexport function elementMatches(element, selector) {\n if (element.matches) {\n return element.matches(selector);\n }\n // IE11 support\n if (element.msMatchesSelector) {\n return element.msMatchesSelector(selector);\n }\n return false;\n}\n// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n if (window.CSS && window.CSS.escape) {\n return window.CSS.escape(str);\n }\n // eslint-disable-next-line no-control-regex\n return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === '\\0') {\n return '\\uFFFD';\n }\n // Control characters and (dependent upon position) numbers get escaped as code points\n return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n }\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\".concat(ch);\n });\n}\nexport function assign(target) {\n var toAssign = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n toAssign[_i - 1] = arguments[_i];\n }\n toAssign.forEach(function (source) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n });\n return target;\n}\n","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get: function () {\n return this;\n },\n configurable: true,\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n var globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self;\n }\n else if (typeof window === 'object') {\n globalObject = window;\n }\n else {\n globalObject = {};\n }\n }\n return globalObject;\n}\n","export var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n var length = buffers.reduce(function (total, buffer) { return total + buffer.length; }, 0);\n var result = new Uint8Array(length);\n var offset = 0;\n for (var _i = 0, buffers_1 = buffers; _i < buffers_1.length; _i++) {\n var buffer = buffers_1[_i];\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}\n","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n var browserWindow = getGlobalObject();\n var original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}\n","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n var inWaitPeriod = false;\n var pendingExecutionWithParameters;\n var pendingTimeoutId;\n return {\n throttled: function () {\n var parameters = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn.apply(void 0, parameters);\n }\n else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(function () {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn.apply(void 0, pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: function () {\n clearTimeout(pendingTimeoutId);\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n },\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n}\n","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination;\n }\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source;\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof RegExp) {\n var flags = source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('');\n return new RegExp(source.source, flags);\n }\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined;\n }\n else if (Array.isArray(source)) {\n var merged_1 = Array.isArray(destination) ? destination : [];\n for (var i = 0; i < source.length; ++i) {\n merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n }\n return merged_1;\n }\n var merged = getType(destination) === 'object' ? destination : {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n }\n }\n return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n return mergeInto(undefined, value);\n}\nexport function combine() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var destination;\n for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n var source = sources_1[_a];\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue;\n }\n destination = mergeInto(destination, source);\n }\n return destination;\n}\nfunction createCircularReferenceChecker() {\n if (typeof WeakSet !== 'undefined') {\n var set_1 = new WeakSet();\n return {\n hasAlreadyBeenSeen: function (value) {\n var has = set_1.has(value);\n if (!has) {\n set_1.add(value);\n }\n return has;\n },\n };\n }\n var array = [];\n return {\n hasAlreadyBeenSeen: function (value) {\n var has = array.indexOf(value) >= 0;\n if (!has) {\n array.push(value);\n }\n return has;\n },\n };\n}\n","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n var restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n }\n catch (_a) {\n return '';\n }\n finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n var object = value;\n var objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return function () {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}\n","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount) {\n var _a;\n if (maxCharacterCount === void 0) { maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT; }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = [];\n var visitedObjectsWithPath = new WeakMap();\n var sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n var accumulatedCharacterCount = ((_a = JSON.stringify(sanitizedData)) === null || _a === void 0 ? void 0 : _a.length) || 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n var containerToProcess = containerQueue.shift();\n var separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n }\n else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4;\n }\n accumulatedCharacterCount += separatorLength;\n separatorLength = 1;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n else {\n for (var key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n var sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return \"[Reference seen at \".concat(visitedObjectsWithPath.get(sourceAsObject), \"]\");\n }\n // Add processed source to queue\n var currentPath = key !== undefined ? \"\".concat(parentPath, \".\").concat(key) : parentPath;\n var target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({ source: sourceToSanitize, target: target, path: currentPath });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return \"[BigInt] \".concat(value.toString());\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return \"[Function] \".concat(value.name || 'unknown');\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n return \"[Symbol] \".concat(value.description || value.toString());\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted,\n };\n }\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value);\n var match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return \"[\".concat(match[1], \"]\");\n }\n }\n catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n }\n catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\"The data provided has been \".concat(changeType, \" as it is over the limit of \").concat(maxCharacterCount, \" characters:\"), source);\n}\n","var Observable = /** @class */ (function () {\n function Observable(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n Observable.prototype.subscribe = function (f) {\n var _this = this;\n if (!this.observers.length && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe() || undefined;\n }\n this.observers.push(f);\n return {\n unsubscribe: function () {\n _this.observers = _this.observers.filter(function (other) { return f !== other; });\n if (!_this.observers.length && _this.onLastUnsubscribe) {\n _this.onLastUnsubscribe();\n }\n },\n };\n };\n Observable.prototype.notify = function (data) {\n this.observers.forEach(function (observer) { return observer(data); });\n };\n return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var globalObservable = new Observable(function () {\n var subscriptions = observables.map(function (observable) {\n return observable.subscribe(function (data) { return globalObservable.notify(data); });\n });\n return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n });\n return globalObservable;\n}\n","var _a;\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { display } from '../../tools/display';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport var CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\nvar CustomerDataLabel = (_a = {},\n _a[0 /* CustomerDataType.FeatureFlag */] = 'feature flag evaluation',\n _a[1 /* CustomerDataType.User */] = 'user',\n _a[2 /* CustomerDataType.GlobalContext */] = 'global context',\n _a[3 /* CustomerDataType.LoggerContext */] = 'logger context',\n _a);\nexport function warnIfCustomerDataLimitReached(bytesCount, customerDataType) {\n if (bytesCount > CUSTOMER_DATA_BYTES_LIMIT) {\n display.warn(\"The \".concat(CustomerDataLabel[customerDataType], \" data exceeds the recommended \").concat(CUSTOMER_DATA_BYTES_LIMIT / ONE_KIBI_BYTE, \"KiB threshold. More details: https://docs.datadoghq.com/real_user_monitoring/browser/troubleshooting/#customer-data-exceeds-the-recommended-3kib-warning\"));\n return true;\n }\n return false;\n}\n","import { computeBytesCount } from '../../tools/utils/byteUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { deepClone } from '../../tools/mergeInto';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nimport { warnIfCustomerDataLimitReached } from './heavyCustomerDataWarning';\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createContextManager(customerDataType, computeBytesCountImpl) {\n if (computeBytesCountImpl === void 0) { computeBytesCountImpl = computeBytesCount; }\n var context = {};\n var bytesCountCache;\n var alreadyWarned = false;\n var changeObservable = new Observable();\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call context APIs synchronously multiple times in a row\n var computeBytesCountThrottled = throttle(function (context) {\n bytesCountCache = computeBytesCountImpl(jsonStringify(context));\n if (!alreadyWarned) {\n alreadyWarned = warnIfCustomerDataLimitReached(bytesCountCache, customerDataType);\n }\n }, BYTES_COMPUTATION_THROTTLING_DELAY).throttled;\n var contextManager = {\n getBytesCount: function () { return bytesCountCache; },\n /** @deprecated use getContext instead */\n get: function () { return context; },\n /** @deprecated use setContextProperty instead */\n add: function (key, value) {\n context[key] = value;\n computeBytesCountThrottled(context);\n changeObservable.notify();\n },\n /** @deprecated renamed to removeContextProperty */\n remove: function (key) {\n delete context[key];\n computeBytesCountThrottled(context);\n changeObservable.notify();\n },\n /** @deprecated use setContext instead */\n set: function (newContext) {\n context = newContext;\n computeBytesCountThrottled(context);\n changeObservable.notify();\n },\n getContext: function () { return deepClone(context); },\n setContext: function (newContext) {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext);\n computeBytesCountThrottled(context);\n }\n else {\n contextManager.clearContext();\n }\n changeObservable.notify();\n },\n setContextProperty: function (key, property) {\n context[key] = sanitize(property);\n computeBytesCountThrottled(context);\n changeObservable.notify();\n },\n removeContextProperty: function (key) {\n delete context[key];\n computeBytesCountThrottled(context);\n changeObservable.notify();\n },\n clearContext: function () {\n context = {};\n bytesCountCache = 0;\n changeObservable.notify();\n },\n changeObservable: changeObservable,\n };\n return contextManager;\n}\n","var BUFFER_LIMIT = 500;\nvar BoundedBuffer = /** @class */ (function () {\n function BoundedBuffer() {\n this.buffer = [];\n }\n BoundedBuffer.prototype.add = function (callback) {\n var length = this.buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n this.buffer.splice(0, 1);\n }\n };\n BoundedBuffer.prototype.drain = function () {\n this.buffer.forEach(function (callback) { return callback(); });\n this.buffer.length = 0;\n };\n return BoundedBuffer;\n}());\nexport { BoundedBuffer };\n","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\n","import { isNumber, round } from './numberUtils';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n var correctedOrigin = (dateNow() - performance.now());\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n return (end - start);\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart;\n }\n return navigationStart;\n}\nexport function resetNavigationStart() {\n navigationStart = undefined;\n}\n","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay, options) {\n var date = new Date();\n date.setTime(date.getTime() + expireDelay);\n var expires = \"expires=\".concat(date.toUTCString());\n var sameSite = options && options.crossSite ? 'none' : 'strict';\n var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n var secure = options && options.secure ? ';secure' : '';\n document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure);\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n }\n catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n if (getCurrentSiteCache === undefined) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_site_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n var domainLevels = window.location.hostname.split('.');\n var candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n }\n deleteCookie(testCookieName, { domain: candidateDomain });\n getCurrentSiteCache = candidateDomain;\n }\n return getCurrentSiteCache;\n}\n","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\nexport function findCommaSeparatedValue(rawString, name) {\n var regex = new RegExp(\"(?:^|;)\\\\s*\".concat(name, \"\\\\s*=\\\\s*([^;]+)\"));\n var matches = regex.exec(rawString);\n return matches ? matches[1] : undefined;\n}\nexport function safeTruncate(candidate, length, suffix) {\n if (suffix === void 0) { suffix = ''; }\n var lastChar = candidate.charCodeAt(length - 1);\n var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength) {\n return candidate;\n }\n return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n","import { getCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n var value = window._DATADOG_SYNTHETICS_RESULT_ID || getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\n","import { endsWith } from '../tools/utils/polyfills';\nimport { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n var eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getAllowedWebViewHosts: function () {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send: function (eventType, event) {\n eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event }));\n },\n };\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n var bridge = getEventBridge();\n return (!!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(_, eventTarget, eventNames, listener, _a) {\n var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n var listenerWithMonitor = monitor(once\n ? function (event) {\n stop();\n listener(event);\n }\n : listener);\n var options = passive ? { capture: capture, passive: passive } : capture;\n var add = getZoneJsOriginalValue(eventTarget, 'addEventListener');\n eventNames.forEach(function (eventName) { return add.call(eventTarget, eventName, listenerWithMonitor, options); });\n function stop() {\n var remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener');\n eventNames.forEach(function (eventName) { return remove.call(eventTarget, eventName, listenerWithMonitor, options); });\n }\n return {\n stop: stop,\n };\n}\n","import { computeBytesCount } from '../../tools/utils/byteUtils';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { createContextManager } from './contextManager';\nvar CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nvar storageListeners = [];\nexport function createStoredContextManager(configuration, productKey, customerDataType, computeBytesCountImpl) {\n if (computeBytesCountImpl === void 0) { computeBytesCountImpl = computeBytesCount; }\n var storageKey = buildStorageKey(productKey, customerDataType);\n var contextManager = createContextManager(customerDataType, computeBytesCountImpl);\n synchronizeWithStorage();\n storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, function (_a) {\n var key = _a.key;\n if (storageKey === key) {\n synchronizeWithStorage();\n }\n }));\n contextManager.changeObservable.subscribe(dumpToStorage);\n return contextManager;\n function synchronizeWithStorage() {\n var rawContext = localStorage.getItem(storageKey);\n var context = rawContext !== null ? JSON.parse(rawContext) : {};\n contextManager.setContext(context);\n }\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n return \"\".concat(CONTEXT_STORE_KEY_PREFIX, \"_\").concat(productKey, \"_\").concat(customerDataType);\n}\nexport function removeStorageListeners() {\n storageListeners.map(function (listener) { return listener.stop(); });\n}\n","import { startsWith } from '../../tools/utils/polyfills';\nvar UNKNOWN_FUNCTION = '?';\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = [];\n var stackProperty = tryToGetString(ex, 'stack');\n var exString = String(ex);\n if (stackProperty && startsWith(stackProperty, exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach(function (line) {\n var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack,\n };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet||\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n var parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n };\n}\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n var value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}\n","import { computeStackTrace } from '../tracekit';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { noop } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nexport var NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError(_a) {\n var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n var isErrorInstance = originalError instanceof Error;\n var message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n var stack = hasUsableStack(isErrorInstance, stackTrace)\n ? toStackTraceString(stackTrace)\n : NO_ERROR_STACK_PRESENT_MESSAGE;\n var causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n var type = stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name;\n var fingerprint = tryToGetFingerprint(originalError);\n return {\n startClocks: startClocks,\n source: source,\n handling: handling,\n handlingStack: handlingStack,\n originalError: originalError,\n type: type,\n message: message,\n stack: stack,\n causes: causes,\n fingerprint: fingerprint,\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n ? stackTrace.message\n : !isErrorInstance\n ? \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(sanitize(originalError)))\n : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n if (stackTrace === undefined) {\n return false;\n }\n if (isErrorInstance) {\n return true;\n }\n // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n // TODO rework tracekit integration to avoid generating those unusable stack\n return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n return originalError instanceof Error && 'dd_fingerprint' in originalError\n ? String(originalError.dd_fingerprint)\n : undefined;\n}\nexport function toStackTraceString(stack) {\n var result = formatErrorMessage(stack);\n stack.stack.forEach(function (frame) {\n var func = frame.func === '?' ? '' : frame.func;\n var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n var line = frame.line ? \":\".concat(frame.line) : '';\n var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n result += \"\\n at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n });\n return result;\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function formatErrorMessage(stack) {\n return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n/**\n Creates a stacktrace without SDK internal frames.\n \n Constraints:\n - Has to be called at the utmost position of the call stack.\n - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n var internalFramesToSkip = 2;\n var error = new Error();\n var formattedStack;\n // IE needs to throw the error to fill in the stack trace\n if (!error.stack) {\n try {\n throw error;\n }\n catch (e) {\n noop();\n }\n }\n callMonitored(function () {\n var stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\nexport function flattenErrorCauses(error, parentSource) {\n var currentError = error;\n var causes = [];\n while ((currentError === null || currentError === void 0 ? void 0 : currentError.cause) instanceof Error && causes.length < 10) {\n var stackTrace = computeStackTrace(currentError.cause);\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n });\n currentError = currentError.cause;\n }\n return causes.length ? causes : undefined;\n}\n","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { assign } from '../../tools/utils/polyfills';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n // We shallow clone only to prevent mutation of user data.\n var user = assign({}, newUser);\n var keys = ['id', 'name', 'email'];\n keys.forEach(function (key) {\n if (key in user) {\n user[key] = String(user[key]);\n }\n });\n return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n var isValid = getType(newUser) === 'object';\n if (!isValid) {\n display.error('Unsupported user:', newUser);\n }\n return isValid;\n}\n","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n ExperimentalFeature[\"PAGEHIDE\"] = \"pagehide\";\n ExperimentalFeature[\"FEATURE_FLAGS\"] = \"feature_flags\";\n ExperimentalFeature[\"RESOURCE_PAGE_STATES\"] = \"resource_page_states\";\n ExperimentalFeature[\"PAGE_STATES\"] = \"page_states\";\n ExperimentalFeature[\"COLLECT_FLUSH_REASON\"] = \"collect_flush_reason\";\n ExperimentalFeature[\"NO_RESOURCE_DURATION_FROZEN_STATE\"] = \"no_resource_duration_frozen_state\";\n ExperimentalFeature[\"SCROLLMAP\"] = \"scrollmap\";\n ExperimentalFeature[\"INTERACTION_TO_NEXT_PAINT\"] = \"interaction_to_next_paint\";\n ExperimentalFeature[\"WEB_VITALS_ATTRIBUTION\"] = \"web_vitals_attribution\";\n ExperimentalFeature[\"DISABLE_REPLAY_INLINE_CSS\"] = \"disable_replay_inline_css\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nvar enabledExperimentalFeatures = new Set();\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach(function (flag) {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}\n","import { assign } from './polyfills';\nexport function shallowClone(object) {\n return assign({}, object);\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n var newObject = {};\n for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n var key = _a[_i];\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}\n","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils/timeUtils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\n","var browserIsIE;\nexport function isIE() {\n return browserIsIE !== null && browserIsIE !== void 0 ? browserIsIE : (browserIsIE = Boolean(document.documentMode));\n}\nvar browserIsChromium;\nexport function isChromium() {\n return (browserIsChromium !== null && browserIsChromium !== void 0 ? browserIsChromium : (browserIsChromium = !!window.chrome || /HeadlessChrome/.test(window.navigator.userAgent)));\n}\nvar browserIsSafari;\nexport function isSafari() {\n return browserIsSafari !== null && browserIsSafari !== void 0 ? browserIsSafari : (browserIsSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent));\n}\n","export var SESSION_STORE_KEY = '_dd_s';\n","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { SESSION_EXPIRATION_DELAY } from './sessionConstants';\nvar SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/;\nvar SESSION_ENTRY_SEPARATOR = '&';\nexport function isSessionInExpiredState(session) {\n return isEmptyObject(session);\n}\nexport function expandSessionState(session) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n return objectEntries(session)\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value);\n })\n .join(SESSION_ENTRY_SEPARATOR);\n}\nexport function toSessionState(sessionString) {\n var session = {};\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n var matches = SESSION_ENTRY_REGEXP.exec(entry);\n if (matches !== null) {\n var key = matches[1], value = matches[2];\n session[key] = value;\n }\n });\n }\n return session;\n}\nfunction isValidSessionString(sessionString) {\n return (!!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, deleteCookie, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_EXPIRATION_DELAY } from '../sessionConstants';\nimport { toSessionString, toSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n var cookieOptions = buildCookieOptions(initConfiguration);\n return areCookiesAuthorized(cookieOptions) ? { type: 'Cookie', cookieOptions: cookieOptions } : undefined;\n}\nexport function initCookieStrategy(cookieOptions) {\n var cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: persistSessionCookie(cookieOptions),\n retrieveSession: retrieveSessionCookie,\n clearSession: deleteSessionCookie(cookieOptions),\n };\n tryOldCookiesMigration(cookieStore);\n return cookieStore;\n}\nfunction persistSessionCookie(options) {\n return function (session) {\n setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n };\n}\nfunction retrieveSessionCookie() {\n var sessionString = getCookie(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction deleteSessionCookie(options) {\n return function () {\n deleteCookie(SESSION_STORE_KEY, options);\n };\n}\nexport function buildCookieOptions(initConfiguration) {\n var cookieOptions = {};\n cookieOptions.secure = !!initConfiguration.useSecureSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n cookieOptions.crossSite = !!initConfiguration.useCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite();\n }\n return cookieOptions;\n}\n","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { toSessionString, toSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nvar LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n try {\n var id = generateUUID();\n var testKey = \"\".concat(LOCAL_STORAGE_TEST_KEY).concat(id);\n localStorage.setItem(testKey, id);\n var retrievedId = localStorage.getItem(testKey);\n localStorage.removeItem(testKey);\n return id === retrievedId ? { type: 'LocalStorage' } : undefined;\n }\n catch (e) {\n return undefined;\n }\n}\nexport function initLocalStorageStrategy() {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n clearSession: clearSessionFromLocalStorage,\n };\n}\nfunction persistInLocalStorage(sessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n var sessionString = localStorage.getItem(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction clearSessionFromLocalStorage() {\n localStorage.removeItem(SESSION_STORE_KEY);\n}\n","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport var LOCK_RETRY_DELAY = 10;\nexport var LOCK_MAX_TRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries) {\n var _a;\n if (numberOfRetries === void 0) { numberOfRetries = 0; }\n var isLockEnabled = sessionStoreStrategy.isLockEnabled, retrieveSession = sessionStoreStrategy.retrieveSession, persistSession = sessionStoreStrategy.persistSession, clearSession = sessionStoreStrategy.clearSession;\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy);\n return;\n }\n var currentLock;\n var currentSession = retrieveSession();\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentSession.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = generateUUID();\n currentSession.lock = currentLock;\n persistSession(currentSession);\n // if lock is not acquired, retry later\n currentSession = retrieveSession();\n if (currentSession.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n var processedSession = operations.process(currentSession);\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentSession = retrieveSession();\n if (currentSession.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n clearSession();\n }\n else {\n expandSessionState(processedSession);\n persistSession(processedSession);\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentSession = retrieveSession();\n if (currentSession.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n delete currentSession.lock;\n persistSession(currentSession);\n processedSession = currentSession;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentSession);\n next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n setTimeout(function () {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n ongoingOperations = undefined;\n var nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore);\n }\n}\n","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport var STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n var sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy();\n }\n return sessionStoreStrategyType;\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, productKey, computeSessionState) {\n var renewObservable = new Observable();\n var expireObservable = new Observable();\n var sessionStoreStrategy = sessionStoreStrategyType.type === 'Cookie'\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy();\n var clearSession = sessionStoreStrategy.clearSession, retrieveSession = sessionStoreStrategy.retrieveSession;\n var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n var sessionCache = retrieveActiveSession();\n function expandOrRenewSession() {\n var isTracked;\n processSessionStoreOperations({\n process: function (sessionState) {\n var synchronizedSession = synchronizeSession(sessionState);\n isTracked = expandOrRenewSessionState(synchronizedSession);\n return synchronizedSession;\n },\n after: function (sessionState) {\n if (isTracked && !hasSessionInCache()) {\n renewSessionInCache(sessionState);\n }\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }\n function expandSession() {\n processSessionStoreOperations({\n process: function (sessionState) { return (hasSessionInCache() ? synchronizeSession(sessionState) : undefined); },\n }, sessionStoreStrategy);\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations({\n process: function (sessionState) { return (!isActiveSession(sessionState) ? {} : undefined); },\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n function synchronizeSession(sessionState) {\n if (!isActiveSession(sessionState)) {\n sessionState = {};\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache();\n }\n else {\n sessionCache = sessionState;\n }\n }\n return sessionState;\n }\n function expandOrRenewSessionState(sessionState) {\n var _a = computeSessionState(sessionState[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n sessionState[productKey] = trackingType;\n if (isTracked && !sessionState.id) {\n sessionState.id = generateUUID();\n sessionState.created = String(dateNow());\n }\n return isTracked;\n }\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined;\n }\n function isSessionInCacheOutdated(sessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n }\n function expireSessionInCache() {\n sessionCache = {};\n expireObservable.notify();\n }\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState;\n renewObservable.notify();\n }\n function retrieveActiveSession() {\n var session = retrieveSession();\n if (isActiveSession(session)) {\n return session;\n }\n return {};\n }\n function isActiveSession(sessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n }\n return {\n expandOrRenewSession: throttle(expandOrRenewSession, STORAGE_POLL_DELAY).throttled,\n expandSession: expandSession,\n getSession: function () { return sessionCache; },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: function () {\n clearSession();\n synchronizeSession({});\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId);\n },\n };\n}\n","import { getCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n var sessionString = getCookie(SESSION_STORE_KEY);\n if (!sessionString) {\n var oldSessionId = getCookie(OLD_SESSION_COOKIE_NAME);\n var oldRumType = getCookie(OLD_RUM_COOKIE_NAME);\n var oldLogsType = getCookie(OLD_LOGS_COOKIE_NAME);\n var session = {};\n if (oldSessionId) {\n session.id = oldSessionId;\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType;\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType;\n }\n if (!isSessionInExpiredState(session)) {\n expandSessionState(session);\n cookieStoreStrategy.persistSession(session);\n }\n }\n}\n","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n return buildUrl(url, getLocationOrigin()).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n }\n catch (_a) {\n return false;\n }\n}\nexport function getOrigin(url) {\n return getLinkElementOrigin(buildUrl(url));\n}\nexport function getPathName(url) {\n var pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function getSearch(url) {\n return buildUrl(url).search;\n}\nexport function getHash(url) {\n return buildUrl(url).hash;\n}\nexport function buildUrl(url, base) {\n var supportedURL = getSupportedUrl();\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n }\n catch (error) {\n throw new Error(\"Failed to construct URL: \".concat(String(error), \" \").concat(jsonStringify({ url: url, base: base })));\n }\n }\n if (base === undefined && !/:/.test(url)) {\n throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n }\n var doc = document;\n var anchorElement = doc.createElement('a');\n if (base !== undefined) {\n doc = document.implementation.createHTMLDocument('');\n var baseElement = doc.createElement('base');\n baseElement.href = base;\n doc.head.appendChild(baseElement);\n doc.body.appendChild(anchorElement);\n }\n anchorElement.href = url;\n return anchorElement;\n}\nvar originalURL = URL;\nvar isURLSupported;\nfunction getSupportedUrl() {\n if (isURLSupported === undefined) {\n try {\n var url = new originalURL('http://test/path');\n isURLSupported = url.href === 'http://test/path';\n }\n catch (_a) {\n isURLSupported = false;\n }\n }\n return isURLSupported ? originalURL : undefined;\n}\nexport function getLocationOrigin() {\n return getLinkElementOrigin(window.location);\n}\n/**\n * Fallback\n * On IE HTMLAnchorElement origin is not supported: https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/origin\n * On Firefox window.location.origin is \"null\" for file: URIs: https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n */\nexport function getLinkElementOrigin(element) {\n if (element.origin && element.origin !== 'null') {\n return element.origin;\n }\n var sanitizedHost = element.host.replace(/(:80|:443)$/, '');\n return \"\".concat(element.protocol, \"//\").concat(sanitizedHost);\n}\n","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport var INTAKE_SITE_AP1 = 'ap1.datadoghq.com';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\n","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_AP1, INTAKE_SITE_US1 } from './intakeSites';\nexport var ENDPOINTS = {\n logs: 'logs',\n rum: 'rum',\n sessionReplay: 'session-replay',\n};\nvar INTAKE_TRACKS = {\n logs: 'logs',\n rum: 'rum',\n sessionReplay: 'replay',\n};\nexport function createEndpointBuilder(initConfiguration, endpointType, configurationTags) {\n var buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, endpointType);\n return {\n build: function (api, payload) {\n var parameters = buildEndpointParameters(initConfiguration, endpointType, configurationTags, api, payload);\n return buildUrlWithParameters(parameters);\n },\n urlPrefix: buildUrlWithParameters(''),\n endpointType: endpointType,\n };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, endpointType) {\n var path = \"/api/v2/\".concat(INTAKE_TRACKS[endpointType]);\n var proxy = initConfiguration.proxy, proxyUrl = initConfiguration.proxyUrl;\n if (proxy) {\n var normalizedProxyUrl_1 = normalizeUrl(proxy);\n return function (parameters) { return \"\".concat(normalizedProxyUrl_1, \"?ddforward=\").concat(encodeURIComponent(\"\".concat(path, \"?\").concat(parameters))); };\n }\n var host = buildEndpointHost(initConfiguration, endpointType);\n if (proxy === undefined && proxyUrl) {\n // TODO: remove this in a future major.\n var normalizedProxyUrl_2 = normalizeUrl(proxyUrl);\n return function (parameters) {\n return \"\".concat(normalizedProxyUrl_2, \"?ddforward=\").concat(encodeURIComponent(\"https://\".concat(host).concat(path, \"?\").concat(parameters)));\n };\n }\n return function (parameters) { return \"https://\".concat(host).concat(path, \"?\").concat(parameters); };\n}\nfunction buildEndpointHost(initConfiguration, endpointType) {\n var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US1 : _a, internalAnalyticsSubdomain = initConfiguration.internalAnalyticsSubdomain;\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return \"\".concat(internalAnalyticsSubdomain, \".\").concat(INTAKE_SITE_US1);\n }\n var domainParts = site.split('.');\n var extension = domainParts.pop();\n var subdomain = site !== INTAKE_SITE_AP1 ? \"\".concat(ENDPOINTS[endpointType], \".\") : '';\n return \"\".concat(subdomain, \"browser-intake-\").concat(domainParts.join('-'), \".\").concat(extension);\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(_a, endpointType, configurationTags, api, _b) {\n var clientToken = _a.clientToken, internalAnalyticsSubdomain = _a.internalAnalyticsSubdomain;\n var retry = _b.retry, flushReason = _b.flushReason, encoding = _b.encoding;\n var tags = [\"sdk_version:\".concat(\"4.50.1\"), \"api:\".concat(api)].concat(configurationTags);\n if (flushReason && isExperimentalFeatureEnabled(ExperimentalFeature.COLLECT_FLUSH_REASON)) {\n tags.push(\"flush_reason:\".concat(flushReason));\n }\n if (retry) {\n tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n }\n var parameters = [\n 'ddsource=browser',\n \"ddtags=\".concat(encodeURIComponent(tags.join(','))),\n \"dd-api-key=\".concat(clientToken),\n \"dd-evp-origin-version=\".concat(encodeURIComponent(\"4.50.1\")),\n 'dd-evp-origin=browser',\n \"dd-request-id=\".concat(generateUUID()),\n ];\n if (encoding) {\n parameters.push(\"dd-evp-encoding=\".concat(encoding));\n }\n if (endpointType === 'rum') {\n parameters.push(\"batch_time=\".concat(timeStampNow()));\n }\n if (internalAnalyticsSubdomain) {\n parameters.reverse();\n }\n return parameters.join('&');\n}\n","import { display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n var env = configuration.env, service = configuration.service, version = configuration.version, datacenter = configuration.datacenter;\n var tags = [];\n if (env) {\n tags.push(buildTag('env', env));\n }\n if (service) {\n tags.push(buildTag('service', service));\n }\n if (version) {\n tags.push(buildTag('version', version));\n }\n if (datacenter) {\n tags.push(buildTag('datacenter', datacenter));\n }\n return tags;\n}\nvar FORBIDDEN_CHARACTERS = /[^a-z0-9_:./-]/;\nexport function buildTag(key, rawValue) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n if (rawValue.length > valueSizeLimit || FORBIDDEN_CHARACTERS.test(rawValue)) {\n display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized\"));\n }\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n var sanitizedValue = rawValue.replace(/,/g, '_');\n return \"\".concat(key, \":\").concat(sanitizedValue);\n}\n","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { display } from '../../tools/display';\nimport { ExperimentalFeature, addExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n};\nexport function validateAndBuildConfiguration(initConfiguration) {\n var _a, _b, _c;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n var sessionSampleRate = (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : initConfiguration.sampleRate;\n if (sessionSampleRate !== undefined && !isPercentage(sessionSampleRate)) {\n display.error('Session Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.telemetrySampleRate !== undefined && !isPercentage(initConfiguration.telemetrySampleRate)) {\n display.error('Telemetry Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.telemetryConfigurationSampleRate !== undefined &&\n !isPercentage(initConfiguration.telemetryConfigurationSampleRate)) {\n display.error('Telemetry Configuration Sample Rate should be a number between 0 and 100');\n return;\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n if (Array.isArray(initConfiguration.enableExperimentalFeatures)) {\n addExperimentalFeatures(initConfiguration.enableExperimentalFeatures.filter(function (flag) {\n return objectHasValue(ExperimentalFeature, flag);\n }));\n }\n return assign({\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: sessionSampleRate !== null && sessionSampleRate !== void 0 ? sessionSampleRate : 100,\n telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n service: initConfiguration.service,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND),\n /**\n * Logs intake limit\n */\n batchMessagesLimit: 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n }, computeTransportConfiguration(initConfiguration));\n}\nexport function serializeConfiguration(initConfiguration) {\n var _a, _b;\n var proxy = (_a = initConfiguration.proxy) !== null && _a !== void 0 ? _a : initConfiguration.proxyUrl;\n return {\n session_sample_rate: (_b = initConfiguration.sessionSampleRate) !== null && _b !== void 0 ? _b : initConfiguration.sampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: proxy !== undefined ? !!proxy : undefined,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n track_resources: initConfiguration.trackResources,\n track_long_task: initConfiguration.trackLongTasks,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n };\n}\n","import { objectValues, assign } from '../../tools/utils/polyfills';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1 } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n var tags = buildTags(initConfiguration);\n var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n var intakeUrlPrefixes = objectValues(endpointBuilders).map(function (builder) { return builder.urlPrefix; });\n var replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags);\n return assign({\n isIntakeUrl: function (url) { return intakeUrlPrefixes.some(function (intakeEndpoint) { return url.indexOf(intakeEndpoint) === 0; }); },\n replica: replicaConfiguration,\n site: initConfiguration.site || INTAKE_SITE_US1,\n }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'sessionReplay', tags),\n };\n}\nfunction computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags) {\n if (!initConfiguration.replica) {\n return;\n }\n var replicaConfiguration = assign({}, initConfiguration, {\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n });\n var replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n };\n intakeUrlPrefixes.push.apply(intakeUrlPrefixes, objectValues(replicaEndpointBuilders).map(function (builder) { return builder.urlPrefix; }));\n return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\n","import { startsWith } from './utils/polyfills';\nimport { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n var itemType = getType(item);\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith) {\n if (useStartsWith === void 0) { useStartsWith = false; }\n return list.some(function (item) {\n try {\n if (typeof item === 'function') {\n return item(value);\n }\n else if (item instanceof RegExp) {\n return item.test(value);\n }\n else if (typeof item === 'string') {\n return useStartsWith ? startsWith(value, item) : item === value;\n }\n }\n catch (e) {\n display.error(e);\n }\n return false;\n });\n}\n","import { objectEntries, shallowClone, performDraw, isNumber, assign, find, getType, isMatchOption, matchList, } from '@datadog/browser-core';\nexport function isTracingOption(item) {\n var expectedItem = item;\n return (getType(expectedItem) === 'object' &&\n isMatchOption(expectedItem.match) &&\n Array.isArray(expectedItem.propagatorTypes));\n}\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined;\n context.spanId = undefined;\n context.traceSampled = undefined;\n }\n}\nexport function startTracer(configuration, sessionManager) {\n return {\n clearTracingIfNeeded: clearTracingIfNeeded,\n traceFetch: function (context) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n var _a;\n if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n context.input = new Request(context.input);\n Object.keys(tracingHeaders).forEach(function (key) {\n ;\n context.input.headers.append(key, tracingHeaders[key]);\n });\n }\n else {\n context.init = shallowClone(context.init);\n var headers_1 = [];\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach(function (value, key) {\n headers_1.push([key, value]);\n });\n }\n else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach(function (header) {\n headers_1.push(header);\n });\n }\n else if (context.init.headers) {\n Object.keys(context.init.headers).forEach(function (key) {\n headers_1.push([key, context.init.headers[key]]);\n });\n }\n context.init.headers = headers_1.concat(objectEntries(tracingHeaders));\n }\n });\n },\n traceXhr: function (context, xhr) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n Object.keys(tracingHeaders).forEach(function (name) {\n xhr.setRequestHeader(name, tracingHeaders[name]);\n });\n });\n },\n };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n return;\n }\n var tracingOption = find(configuration.allowedTracingUrls, function (tracingOption) {\n return matchList([tracingOption.match], context.url, true);\n });\n if (!tracingOption) {\n return;\n }\n context.traceId = new TraceIdentifier();\n context.spanId = new TraceIdentifier();\n context.traceSampled = !isNumber(configuration.traceSampleRate) || performDraw(configuration.traceSampleRate);\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes));\n}\nexport function isTracingSupported() {\n return getCrypto() !== undefined;\n}\nfunction getCrypto() {\n return window.crypto || window.msCrypto;\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled, propagatorTypes) {\n var tracingHeaders = {};\n propagatorTypes.forEach(function (propagatorType) {\n switch (propagatorType) {\n case 'datadog': {\n assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toDecimalString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toDecimalString(),\n });\n break;\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext': {\n assign(tracingHeaders, {\n traceparent: \"00-0000000000000000\".concat(traceId.toPaddedHexadecimalString(), \"-\").concat(spanId.toPaddedHexadecimalString(), \"-0\").concat(traceSampled ? '1' : '0'),\n });\n break;\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3': {\n assign(tracingHeaders, {\n b3: \"\".concat(traceId.toPaddedHexadecimalString(), \"-\").concat(spanId.toPaddedHexadecimalString(), \"-\").concat(traceSampled ? '1' : '0'),\n });\n break;\n }\n case 'b3multi': {\n assign(tracingHeaders, {\n 'X-B3-TraceId': traceId.toPaddedHexadecimalString(),\n 'X-B3-SpanId': spanId.toPaddedHexadecimalString(),\n 'X-B3-Sampled': traceSampled ? '1' : '0',\n });\n break;\n }\n }\n });\n return tracingHeaders;\n}\n/* eslint-disable no-bitwise */\nvar TraceIdentifier = /** @class */ (function () {\n function TraceIdentifier() {\n this.buffer = new Uint8Array(8);\n getCrypto().getRandomValues(this.buffer);\n this.buffer[0] = this.buffer[0] & 0x7f; // force 63-bit\n }\n TraceIdentifier.prototype.toString = function (radix) {\n var high = this.readInt32(0);\n var low = this.readInt32(4);\n var str = '';\n do {\n var mod = (high % radix) * 4294967296 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n } while (high || low);\n return str;\n };\n /**\n * Format used everywhere except the trace intake\n */\n TraceIdentifier.prototype.toDecimalString = function () {\n return this.toString(10);\n };\n /**\n * Format used by OTel headers\n */\n TraceIdentifier.prototype.toPaddedHexadecimalString = function () {\n var traceId = this.toString(16);\n return Array(17 - traceId.length).join('0') + traceId;\n };\n TraceIdentifier.prototype.readInt32 = function (offset) {\n return (this.buffer[offset] * 16777216 +\n (this.buffer[offset + 1] << 16) +\n (this.buffer[offset + 2] << 8) +\n this.buffer[offset + 3]);\n };\n return TraceIdentifier;\n}());\nexport { TraceIdentifier };\n/* eslint-enable no-bitwise */\n","import { getType, arrayFrom, getOrigin, isMatchOption, serializeConfiguration, assign, DefaultPrivacyLevel, display, isPercentage, objectHasValue, validateAndBuildConfiguration, } from '@datadog/browser-core';\nimport { isTracingOption } from './tracing/tracer';\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n var _a, _b, _c, _d, _e, _f;\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.');\n return;\n }\n if (initConfiguration.sessionReplaySampleRate !== undefined &&\n !isPercentage(initConfiguration.sessionReplaySampleRate)) {\n display.error('Session Replay Sample Rate should be a number between 0 and 100');\n return;\n }\n // TODO remove fallback in next major\n var premiumSampleRate = (_a = initConfiguration.premiumSampleRate) !== null && _a !== void 0 ? _a : initConfiguration.replaySampleRate;\n if (premiumSampleRate !== undefined && initConfiguration.sessionReplaySampleRate !== undefined) {\n display.warn('Ignoring Premium Sample Rate because Session Replay Sample Rate is set');\n premiumSampleRate = undefined;\n }\n if (premiumSampleRate !== undefined && !isPercentage(premiumSampleRate)) {\n display.error('Premium Sample Rate should be a number between 0 and 100');\n return;\n }\n var traceSampleRate = (_b = initConfiguration.traceSampleRate) !== null && _b !== void 0 ? _b : initConfiguration.tracingSampleRate;\n if (traceSampleRate !== undefined && !isPercentage(traceSampleRate)) {\n display.error('Trace Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n display.error('Excluded Activity Urls should be an array');\n return;\n }\n var allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n if (!allowedTracingUrls) {\n return;\n }\n var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n if (!baseConfiguration) {\n return;\n }\n var trackUserInteractions = !!((_c = initConfiguration.trackUserInteractions) !== null && _c !== void 0 ? _c : initConfiguration.trackInteractions);\n var trackFrustrations = !!initConfiguration.trackFrustrations;\n return assign({\n applicationId: initConfiguration.applicationId,\n version: initConfiguration.version,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate: (_e = (_d = initConfiguration.sessionReplaySampleRate) !== null && _d !== void 0 ? _d : premiumSampleRate) !== null && _e !== void 0 ? _e : 100,\n oldPlansBehavior: initConfiguration.sessionReplaySampleRate === undefined,\n traceSampleRate: traceSampleRate,\n allowedTracingUrls: allowedTracingUrls,\n excludedActivityUrls: (_f = initConfiguration.excludedActivityUrls) !== null && _f !== void 0 ? _f : [],\n workerUrl: initConfiguration.workerUrl,\n trackUserInteractions: trackUserInteractions || trackFrustrations,\n trackFrustrations: trackFrustrations,\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: initConfiguration.trackResources,\n trackLongTasks: initConfiguration.trackLongTasks,\n subdomain: initConfiguration.subdomain,\n defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n ? initConfiguration.defaultPrivacyLevel\n : DefaultPrivacyLevel.MASK_USER_INPUT,\n customerDataTelemetrySampleRate: 1,\n }, baseConfiguration);\n}\n/**\n * Handles allowedTracingUrls and processes legacy allowedTracingOrigins\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n // Advise about parameters precedence.\n if (initConfiguration.allowedTracingUrls !== undefined && initConfiguration.allowedTracingOrigins !== undefined) {\n display.warn('Both allowedTracingUrls and allowedTracingOrigins (deprecated) have been defined. The parameter allowedTracingUrls will override allowedTracingOrigins.');\n }\n // Handle allowedTracingUrls first\n if (initConfiguration.allowedTracingUrls !== undefined) {\n if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n display.error('Allowed Tracing URLs should be an array');\n return;\n }\n if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled');\n return;\n }\n // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n var tracingOptions_1 = [];\n initConfiguration.allowedTracingUrls.forEach(function (option) {\n if (isMatchOption(option)) {\n tracingOptions_1.push({ match: option, propagatorTypes: ['datadog'] });\n }\n else if (isTracingOption(option)) {\n tracingOptions_1.push(option);\n }\n else {\n display.warn('Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter', option);\n }\n });\n return tracingOptions_1;\n }\n // Handle conversion of allowedTracingOrigins to allowedTracingUrls\n if (initConfiguration.allowedTracingOrigins !== undefined) {\n if (!Array.isArray(initConfiguration.allowedTracingOrigins)) {\n display.error('Allowed Tracing Origins should be an array');\n return;\n }\n if (initConfiguration.allowedTracingOrigins.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled');\n return;\n }\n var tracingOptions_2 = [];\n initConfiguration.allowedTracingOrigins.forEach(function (legacyMatchOption) {\n var tracingOption = convertLegacyMatchOptionToTracingOption(legacyMatchOption);\n if (tracingOption) {\n tracingOptions_2.push(tracingOption);\n }\n });\n return tracingOptions_2;\n }\n return [];\n}\n/**\n * Converts parameters from the deprecated allowedTracingOrigins\n * to allowedTracingUrls. Handles the change from origin to full URLs.\n */\nfunction convertLegacyMatchOptionToTracingOption(item) {\n var match;\n if (typeof item === 'string') {\n match = item;\n }\n else if (item instanceof RegExp) {\n match = function (url) { return item.test(getOrigin(url)); };\n }\n else if (typeof item === 'function') {\n match = function (url) { return item(getOrigin(url)); };\n }\n if (match === undefined) {\n display.warn('Allowed Tracing Origins parameters should be a string, RegExp or function. Ignoring parameter', item);\n return undefined;\n }\n return { match: match, propagatorTypes: ['datadog'] };\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls,\n * and assumes 'datadog' has been selected when using allowedTracingOrigins\n */\nfunction getSelectedTracingPropagators(configuration) {\n var usedTracingPropagators = new Set();\n if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n configuration.allowedTracingUrls.forEach(function (option) {\n if (isMatchOption(option)) {\n usedTracingPropagators.add('datadog');\n }\n else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n option.propagatorTypes.forEach(function (propagatorType) { return usedTracingPropagators.add(propagatorType); });\n }\n });\n }\n if (Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0) {\n usedTracingPropagators.add('datadog');\n }\n return arrayFrom(usedTracingPropagators);\n}\nexport function serializeRumConfiguration(configuration) {\n var _a, _b;\n var baseSerializedConfiguration = serializeConfiguration(configuration);\n return assign({\n premium_sample_rate: configuration.premiumSampleRate,\n replay_sample_rate: configuration.replaySampleRate,\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n trace_sample_rate: (_a = configuration.traceSampleRate) !== null && _a !== void 0 ? _a : configuration.tracingSampleRate,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_origins: Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,\n use_allowed_tracing_urls: Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n use_excluded_activity_urls: Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n use_worker_url: !!configuration.workerUrl,\n track_frustrations: configuration.trackFrustrations,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: (_b = configuration.trackUserInteractions) !== null && _b !== void 0 ? _b : configuration.trackInteractions,\n }, baseSerializedConfiguration);\n}\n","export function buildCommonContext(globalContextManager, userContextManager, recorderApi) {\n return {\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n hasReplay: recorderApi.isRecording() ? true : undefined,\n };\n}\n","export function sendToExtension(type, payload) {\n var callback = window.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({ type: type, payload: payload });\n }\n}\n","export var TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n};\n","import { ConsoleApiName } from '../../tools/display';\nimport { toStackTraceString, NO_ERROR_STACK_PRESENT_MESSAGE } from '../error/error';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { computeStackTrace } from '../tracekit';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\nvar telemetryConfiguration = { maxEventsPerPage: 0, sentEventCount: 0, telemetryEnabled: false, telemetryConfigurationEnabled: false };\nvar onRawTelemetryEventCollected;\nexport function startTelemetry(telemetryService, configuration) {\n var contextProvider;\n var observable = new Observable();\n telemetryConfiguration.telemetryEnabled =\n !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate);\n telemetryConfiguration.telemetryConfigurationEnabled =\n telemetryConfiguration.telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate);\n var runtimeEnvInfo = getRuntimeEnvInfo();\n onRawTelemetryEventCollected = function (rawEvent) {\n if (telemetryConfiguration.telemetryEnabled) {\n var event_1 = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n observable.notify(event_1);\n sendToExtension('telemetry', event_1);\n }\n };\n startMonitorErrorCollection(addTelemetryError);\n assign(telemetryConfiguration, {\n maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n sentEventCount: 0,\n });\n function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n return combine({\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: \"4.50.1\",\n source: 'browser',\n _dd: {\n format_version: 2,\n },\n telemetry: combine(event, {\n runtime_env: runtimeEnvInfo,\n }),\n experimental_features: arrayFrom(getExperimentalFeatures()),\n }, contextProvider !== undefined ? contextProvider() : {});\n }\n return {\n setContextProvider: function (provider) {\n contextProvider = provider;\n },\n observable: observable,\n enabled: telemetryConfiguration.telemetryEnabled,\n };\n}\nfunction getRuntimeEnvInfo() {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self,\n };\n}\nexport function startFakeTelemetry() {\n var events = [];\n assign(telemetryConfiguration, {\n maxEventsPerPage: Infinity,\n sentEventCount: 0,\n });\n onRawTelemetryEventCollected = function (event) {\n events.push(event);\n };\n return events;\n}\nexport function resetTelemetry() {\n onRawTelemetryEventCollected = undefined;\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n addTelemetry(assign({\n type: TelemetryType.log,\n message: message,\n status: \"debug\" /* StatusType.debug */,\n }, context));\n}\nexport function addTelemetryError(e, context) {\n addTelemetry(assign({\n type: TelemetryType.log,\n status: \"error\" /* StatusType.error */,\n }, formatError(e), context));\n}\nexport function addTelemetryConfiguration(configuration) {\n if (telemetryConfiguration.telemetryConfigurationEnabled) {\n addTelemetry({\n type: TelemetryType.configuration,\n configuration: configuration,\n });\n }\n}\nfunction addTelemetry(event) {\n if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {\n telemetryConfiguration.sentEventCount += 1;\n onRawTelemetryEventCollected(event);\n }\n}\nexport function formatError(e) {\n if (e instanceof Error) {\n var stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message,\n };\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: \"\".concat(\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */, \" \").concat(jsonStringify(e)),\n };\n}\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n return stackTrace;\n}\n","import { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures';\nimport { Observable } from '../tools/observable';\nimport { objectValues, includes } from '../tools/utils/polyfills';\nimport { noop } from '../tools/utils/functionUtils';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport var PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n};\nexport function createPageExitObservable(configuration) {\n var observable = new Observable(function () {\n var pagehideEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGEHIDE);\n var stopListeners = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */, \"pagehide\" /* DOM_EVENT.PAGE_HIDE */], function (event) {\n if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */ && pagehideEnabled) {\n /**\n * Only event that detect page unload events while being compatible with the back/forward cache (bfcache)\n */\n observable.notify({ reason: PageExitReason.PAGEHIDE });\n }\n else if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN });\n }\n else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN });\n }\n }, { capture: true }).stop;\n var stopBeforeUnloadListener = noop;\n if (!pagehideEnabled) {\n stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, function () {\n observable.notify({ reason: PageExitReason.UNLOADING });\n }).stop;\n }\n return function () {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n return observable;\n}\nexport function isPageExitReason(reason) {\n return includes(objectValues(PageExitReason), reason);\n}\n","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n var MutationObserver = getMutationObserverConstructor();\n var observable = new Observable(function () {\n if (!MutationObserver) {\n return;\n }\n var observer = new MutationObserver(monitor(function () { return observable.notify(); }));\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n return function () { return observer.disconnect(); };\n });\n return observable;\n}\nexport function getMutationObserverConstructor() {\n var constructor;\n var browserWindow = window;\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we try to get the original MutationObserver constructor stored by\n // Zone.js.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n //\n // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver');\n if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n // instance in its properties[4]. Let's get the original MutationObserver constructor from\n // there.\n //\n // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n var patchedInstance = new browserWindow.MutationObserver(noop);\n var originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n constructor = originalInstance && originalInstance.constructor;\n }\n }\n if (!constructor) {\n constructor = browserWindow.MutationObserver;\n }\n return constructor;\n}\n","import { addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback();\n }\n else {\n var eventName = expectedReadyState === 'complete' ? \"load\" /* DOM_EVENT.LOAD */ : \"DOMContentLoaded\" /* DOM_EVENT.DOM_CONTENT_LOADED */;\n addEventListener(configuration, window, eventName, callback, { once: true });\n }\n}\n","import { assign, addTelemetryDebug, elapsed, getPathName, includes, isValidUrl, toServerDuration, } from '@datadog/browser-core';\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document';\nvar RESOURCE_TYPES = [\n [\"document\" /* ResourceType.DOCUMENT */, function (initiatorType) { return FAKE_INITIAL_DOCUMENT === initiatorType; }],\n [\"xhr\" /* ResourceType.XHR */, function (initiatorType) { return 'xmlhttprequest' === initiatorType; }],\n [\"fetch\" /* ResourceType.FETCH */, function (initiatorType) { return 'fetch' === initiatorType; }],\n [\"beacon\" /* ResourceType.BEACON */, function (initiatorType) { return 'beacon' === initiatorType; }],\n [\"css\" /* ResourceType.CSS */, function (_, path) { return /\\.css$/i.test(path); }],\n [\"js\" /* ResourceType.JS */, function (_, path) { return /\\.js$/i.test(path); }],\n [\n \"image\" /* ResourceType.IMAGE */,\n function (initiatorType, path) {\n return includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null;\n },\n ],\n [\"font\" /* ResourceType.FONT */, function (_, path) { return /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null; }],\n [\n \"media\" /* ResourceType.MEDIA */,\n function (initiatorType, path) {\n return includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null;\n },\n ],\n];\nexport function computeResourceKind(timing) {\n var url = timing.name;\n if (!isValidUrl(url)) {\n addTelemetryDebug(\"Failed to construct URL for \\\"\".concat(timing.name, \"\\\"\"));\n return \"other\" /* ResourceType.OTHER */;\n }\n var path = getPathName(url);\n for (var _i = 0, RESOURCE_TYPES_1 = RESOURCE_TYPES; _i < RESOURCE_TYPES_1.length; _i++) {\n var _a = RESOURCE_TYPES_1[_i], type = _a[0], isType = _a[1];\n if (isType(timing.initiatorType, path)) {\n return type;\n }\n }\n return \"other\" /* ResourceType.OTHER */;\n}\nfunction areInOrder() {\n var numbers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n numbers[_i] = arguments[_i];\n }\n for (var i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false;\n }\n }\n return true;\n}\nexport function isRequestKind(timing) {\n return timing.initiatorType === 'xmlhttprequest' || timing.initiatorType === 'fetch';\n}\nexport function computePerformanceResourceDuration(entry) {\n var duration = entry.duration, startTime = entry.startTime, responseEnd = entry.responseEnd;\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return toServerDuration(elapsed(startTime, responseEnd));\n }\n return toServerDuration(duration);\n}\nexport function computePerformanceResourceDetails(entry) {\n var validEntry = toValidEntry(entry);\n if (!validEntry) {\n return undefined;\n }\n var startTime = validEntry.startTime, fetchStart = validEntry.fetchStart, redirectStart = validEntry.redirectStart, redirectEnd = validEntry.redirectEnd, domainLookupStart = validEntry.domainLookupStart, domainLookupEnd = validEntry.domainLookupEnd, connectStart = validEntry.connectStart, secureConnectionStart = validEntry.secureConnectionStart, connectEnd = validEntry.connectEnd, requestStart = validEntry.requestStart, responseStart = validEntry.responseStart, responseEnd = validEntry.responseEnd;\n var details = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart),\n };\n // Make sure a connection occurred\n if (connectEnd !== fetchStart) {\n details.connect = formatTiming(startTime, connectStart, connectEnd);\n // Make sure a secure connection occurred\n if (areInOrder(connectStart, secureConnectionStart, connectEnd)) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n }\n }\n // Make sure a domain lookup occurred\n if (domainLookupEnd !== fetchStart) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n }\n if (hasRedirection(entry)) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n }\n return details;\n}\nexport function toValidEntry(entry) {\n // Ensure timings are in the right order. On top of filtering out potential invalid\n // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n // it.\n if (!areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd)) {\n return undefined;\n }\n if (!hasRedirection(entry)) {\n return entry;\n }\n var redirectStart = entry.redirectStart, redirectEnd = entry.redirectEnd;\n // Firefox doesn't provide redirect timings on cross origin requests.\n // Provide a default for those.\n if (redirectStart < entry.startTime) {\n redirectStart = entry.startTime;\n }\n if (redirectEnd < entry.startTime) {\n redirectEnd = entry.fetchStart;\n }\n // Make sure redirect timings are in order\n if (!areInOrder(entry.startTime, redirectStart, redirectEnd, entry.fetchStart)) {\n return undefined;\n }\n return assign({}, entry, {\n redirectEnd: redirectEnd,\n redirectStart: redirectStart,\n });\n}\nfunction hasRedirection(entry) {\n // The only time fetchStart is different than startTime is if a redirection occurred.\n return entry.fetchStart !== entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start)),\n };\n}\nexport function computeSize(entry) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n return entry.decodedBodySize;\n }\n return undefined;\n}\nexport function isAllowedRequestUrl(configuration, url) {\n return url && !configuration.isIntakeUrl(url);\n}\n","export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n}\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot);\n}\nexport function isNodeShadowRoot(node) {\n var shadowRoot = node;\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node);\n}\nexport function forEachChildNodes(node, callback) {\n node.childNodes.forEach(callback);\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot);\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}\n","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils';\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n return undefined;\n }\n return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n var traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n var traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n var comment = findTraceComment(document);\n if (!comment) {\n return undefined;\n }\n return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n var traceTime = rawTraceTime && Number(rawTraceTime);\n if (!traceId || !traceTime) {\n return undefined;\n }\n return {\n traceId: traceId,\n traceTime: traceTime,\n };\n}\nexport function findTraceComment(document) {\n // 1. Try to find the comment as a direct child of the document\n // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n // value is not an array or string (here, a NodeList).\n for (var i = 0; i < document.childNodes.length; i += 1) {\n var comment = getTraceCommentFromNode(document.childNodes[i]);\n if (comment) {\n return comment;\n }\n }\n // 2. If the comment is placed after the tag, but have some space or new lines before or\n // after, the DOM parser will lift it (and the surrounding text) at the end of the tag.\n // Try to look for the comment at the end of the by by iterating over its child nodes in\n // reverse order, stopping if we come across a non-text node.\n if (document.body) {\n for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n var node = document.body.childNodes[i];\n var comment = getTraceCommentFromNode(node);\n if (comment) {\n return comment;\n }\n if (!isTextNode(node)) {\n break;\n }\n }\n }\n}\nfunction getTraceCommentFromNode(node) {\n if (node && isCommentNode(node)) {\n var match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n if (match) {\n return match[1];\n }\n }\n}\n","import { dateNow, assign, addEventListeners, getRelativeTime, isNumber, monitor, setTimeout, relativeNow, runOnReadyState, addEventListener, objectHasValue, } from '@datadog/browser-core';\nimport { FAKE_INITIAL_DOCUMENT, isAllowedRequestUrl } from '../domain/resource/resourceUtils';\nimport { getDocumentTraceId } from '../domain/tracing/getDocumentTraceId';\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport var RumPerformanceEntryType;\n(function (RumPerformanceEntryType) {\n RumPerformanceEntryType[\"EVENT\"] = \"event\";\n RumPerformanceEntryType[\"FIRST_INPUT\"] = \"first-input\";\n RumPerformanceEntryType[\"LARGEST_CONTENTFUL_PAINT\"] = \"largest-contentful-paint\";\n RumPerformanceEntryType[\"LAYOUT_SHIFT\"] = \"layout-shift\";\n RumPerformanceEntryType[\"LONG_TASK\"] = \"longtask\";\n RumPerformanceEntryType[\"NAVIGATION\"] = \"navigation\";\n RumPerformanceEntryType[\"PAINT\"] = \"paint\";\n RumPerformanceEntryType[\"RESOURCE\"] = \"resource\";\n})(RumPerformanceEntryType || (RumPerformanceEntryType = {}));\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n return (window.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes !== undefined &&\n PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nexport function startPerformanceCollection(lifeCycle, configuration) {\n retrieveInitialDocumentResourceTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n if (supportPerformanceObject()) {\n var performanceEntries_1 = performance.getEntries();\n // Because the performance entry list can be quite large\n // delay the computation to prevent the SDK from blocking the main thread on init\n setTimeout(function () { return handleRumPerformanceEntries(lifeCycle, configuration, performanceEntries_1); });\n }\n if (window.PerformanceObserver) {\n var handlePerformanceEntryList_1 = monitor(function (entries) {\n return handleRumPerformanceEntries(lifeCycle, configuration, entries.getEntries());\n });\n var mainEntries = [\n RumPerformanceEntryType.RESOURCE,\n RumPerformanceEntryType.NAVIGATION,\n RumPerformanceEntryType.LONG_TASK,\n RumPerformanceEntryType.PAINT,\n ];\n var experimentalEntries = [\n RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n RumPerformanceEntryType.FIRST_INPUT,\n RumPerformanceEntryType.LAYOUT_SHIFT,\n RumPerformanceEntryType.EVENT,\n ];\n try {\n // Experimental entries are not retrieved by performance.getEntries()\n // use a single PerformanceObserver with buffered flag by type\n // to get values that could happen before SDK init\n experimentalEntries.forEach(function (type) {\n var observer = new window.PerformanceObserver(handlePerformanceEntryList_1);\n observer.observe({\n type: type,\n buffered: true,\n // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L209\n durationThreshold: 40,\n });\n });\n }\n catch (e) {\n // Some old browser versions (ex: chrome 67) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to PerformanceObserver with entryTypes\n mainEntries.push.apply(mainEntries, experimentalEntries);\n }\n var mainObserver = new PerformanceObserver(handlePerformanceEntryList_1);\n mainObserver.observe({ entryTypes: mainEntries });\n if (supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n addEventListener(configuration, performance, 'resourcetimingbufferfull', function () {\n performance.clearResourceTimings();\n });\n }\n }\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n retrieveNavigationTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n }\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT)) {\n retrieveFirstInputTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n }\n}\nexport function retrieveInitialDocumentResourceTiming(configuration, callback) {\n runOnReadyState(configuration, 'interactive', function () {\n var timing;\n var forcedAttributes = {\n entryType: RumPerformanceEntryType.RESOURCE,\n initiatorType: FAKE_INITIAL_DOCUMENT,\n traceId: getDocumentTraceId(document),\n toJSON: function () { return assign({}, timing, { toJSON: undefined }); },\n };\n if (supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION) &&\n performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION).length > 0) {\n var navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0];\n timing = assign(navigationEntry.toJSON(), forcedAttributes);\n }\n else {\n var relativePerformanceTiming = computeRelativePerformanceTiming();\n timing = assign(relativePerformanceTiming, {\n decodedBodySize: 0,\n duration: relativePerformanceTiming.responseEnd,\n name: window.location.href,\n startTime: 0,\n }, forcedAttributes);\n }\n callback(timing);\n });\n}\nfunction retrieveNavigationTiming(configuration, callback) {\n function sendFakeTiming() {\n callback(assign(computeRelativePerformanceTiming(), {\n entryType: RumPerformanceEntryType.NAVIGATION,\n }));\n }\n runOnReadyState(configuration, 'complete', function () {\n // Send it a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n setTimeout(sendFakeTiming);\n });\n}\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nfunction retrieveFirstInputTiming(configuration, callback) {\n var startTimeStamp = dateNow();\n var timingSent = false;\n var removeEventListeners = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"mousedown\" /* DOM_EVENT.MOUSE_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */], function (evt) {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return;\n }\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n var timing = {\n entryType: RumPerformanceEntryType.FIRST_INPUT,\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp,\n duration: 0,\n name: '',\n };\n if (evt.type === \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */) {\n sendTimingIfPointerIsNotCancelled(configuration, timing);\n }\n else {\n sendTiming(timing);\n }\n }, { passive: true, capture: true }).stop;\n /**\n * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n * We differentiate these cases based on whether or not we see a pointercancel event, which are\n * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n * scrolling and pinch/zooming.\n */\n function sendTimingIfPointerIsNotCancelled(configuration, timing) {\n addEventListeners(configuration, window, [\"pointerup\" /* DOM_EVENT.POINTER_UP */, \"pointercancel\" /* DOM_EVENT.POINTER_CANCEL */], function (event) {\n if (event.type === \"pointerup\" /* DOM_EVENT.POINTER_UP */) {\n sendTiming(timing);\n }\n }, { once: true });\n }\n function sendTiming(timing) {\n if (!timingSent) {\n timingSent = true;\n removeEventListeners();\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n var delay = timing.processingStart - timing.startTime;\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing);\n }\n }\n }\n}\nfunction computeRelativePerformanceTiming() {\n var result = {};\n var timing = performance.timing;\n for (var key in timing) {\n if (isNumber(timing[key])) {\n var numberKey = key;\n var timingElement = timing[numberKey];\n result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n }\n }\n return result;\n}\nfunction handleRumPerformanceEntries(lifeCycle, configuration, entries) {\n var rumPerformanceEntries = entries.filter(function (entry) {\n return objectHasValue(RumPerformanceEntryType, entry.entryType);\n });\n var rumAllowedPerformanceEntries = rumPerformanceEntries.filter(function (entry) { return !isIncompleteNavigation(entry) && !isForbiddenResource(configuration, entry); });\n if (rumAllowedPerformanceEntries.length) {\n lifeCycle.notify(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, rumAllowedPerformanceEntries);\n }\n}\nfunction isIncompleteNavigation(entry) {\n return entry.entryType === RumPerformanceEntryType.NAVIGATION && entry.loadEventEnd <= 0;\n}\nfunction isForbiddenResource(configuration, entry) {\n return entry.entryType === RumPerformanceEntryType.RESOURCE && !isAllowedRequestUrl(configuration, entry.name);\n}\n","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n var eventCount = 0;\n var allowNextEvent = false;\n return {\n isLimitReached: function () {\n if (eventCount === 0) {\n setTimeout(function () {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n }\n finally {\n allowNextEvent = false;\n }\n }\n return true;\n },\n };\n}\n","export var ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n};\n","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n var clone = deepClone(object);\n var result = modifier(clone);\n objectEntries(modifiableFieldPaths).forEach(function (_a) {\n var fieldPath = _a[0], fieldType = _a[1];\n var newValue = get(clone, fieldPath);\n var newType = getType(newValue);\n if (newType === fieldType) {\n set(object, fieldPath, sanitize(newValue));\n }\n else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, fieldPath, {});\n }\n });\n return result;\n}\nfunction get(object, path) {\n var current = object;\n for (var _i = 0, _a = path.split('.'); _i < _a.length; _i++) {\n var field = _a[_i];\n if (!isValidObjectContaining(current, field)) {\n return;\n }\n current = current[field];\n }\n return current;\n}\nfunction set(object, path, value) {\n var current = object;\n var fields = path.split('.');\n for (var i = 0; i < fields.length; i += 1) {\n var field = fields[i];\n if (!isValidObject(current)) {\n return;\n }\n if (i !== fields.length - 1) {\n current = current[field];\n }\n else {\n current[field] = value;\n }\n }\n}\nfunction isValidObject(object) {\n return getType(object) === 'object';\n}\nfunction isValidObjectContaining(object, field) {\n return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field);\n}\n","import { combine, isEmptyObject, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, assign, round, } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './contexts/syntheticsContext';\nimport { getCiTestContext } from './contexts/ciTestContext';\nimport { limitModification } from './limitModification';\nvar VIEW_MODIFIABLE_FIELD_PATHS = {\n 'view.name': 'string',\n 'view.url': 'string',\n 'view.referrer': 'string',\n};\nvar USER_CUSTOMIZABLE_FIELD_PATHS = {\n context: 'object',\n};\nvar modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewContexts, urlContexts, actionContexts, displayContext, buildCommonContext, reportError) {\n var _a, _b;\n modifiableFieldPathsByEvent = (_a = {},\n _a[\"view\" /* RumEventType.VIEW */] = VIEW_MODIFIABLE_FIELD_PATHS,\n _a[\"error\" /* RumEventType.ERROR */] = assign({\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string',\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n _a[\"resource\" /* RumEventType.RESOURCE */] = assign({\n 'resource.url': 'string',\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n _a[\"action\" /* RumEventType.ACTION */] = assign({\n 'action.target.name': 'string',\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n _a[\"long_task\" /* RumEventType.LONG_TASK */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n _a);\n var eventRateLimiters = (_b = {},\n _b[\"error\" /* RumEventType.ERROR */] = createEventRateLimiter(\"error\" /* RumEventType.ERROR */, configuration.eventRateLimiterThreshold, reportError),\n _b[\"action\" /* RumEventType.ACTION */] = createEventRateLimiter(\"action\" /* RumEventType.ACTION */, configuration.eventRateLimiterThreshold, reportError),\n _b);\n var syntheticsContext = getSyntheticsContext();\n var ciTestContext = getCiTestContext();\n lifeCycle.subscribe(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (_a) {\n var startTime = _a.startTime, rawRumEvent = _a.rawRumEvent, domainContext = _a.domainContext, savedCommonContext = _a.savedCommonContext, customerContext = _a.customerContext;\n var viewContext = viewContexts.findView(startTime);\n var urlContext = urlContexts.findUrl(startTime);\n var session = sessionManager.findTrackedSession(startTime);\n if (session && viewContext && urlContext) {\n var commonContext = savedCommonContext || buildCommonContext();\n var actionId = actionContexts.findActionId(startTime);\n var rumContext = {\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n session: {\n plan: session.plan,\n },\n configuration: {\n session_sample_rate: round(configuration.sessionSampleRate, 3),\n session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n },\n browser_sdk_version: canUseEventBridge() ? \"4.50.1\" : undefined,\n },\n application: {\n id: configuration.applicationId,\n },\n date: timeStampNow(),\n service: viewContext.service || configuration.service,\n version: viewContext.version || configuration.version,\n source: 'browser',\n session: {\n id: session.id,\n type: syntheticsContext ? \"synthetics\" /* SessionType.SYNTHETICS */ : ciTestContext ? \"ci_test\" /* SessionType.CI_TEST */ : \"user\" /* SessionType.USER */,\n },\n view: {\n id: viewContext.id,\n name: viewContext.name,\n url: urlContext.url,\n referrer: urlContext.referrer,\n },\n action: needToAssembleWithAction(rawRumEvent) && actionId ? { id: actionId } : undefined,\n synthetics: syntheticsContext,\n ci_test: ciTestContext,\n display: displayContext.get(),\n };\n var serverRumEvent = combine(rumContext, rawRumEvent);\n serverRumEvent.context = combine(commonContext.context, customerContext);\n if (!('has_replay' in serverRumEvent.session)) {\n ;\n serverRumEvent.session.has_replay = commonContext.hasReplay;\n }\n if (!isEmptyObject(commonContext.user)) {\n ;\n serverRumEvent.usr = commonContext.user;\n }\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context;\n }\n lifeCycle.notify(11 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n }\n }\n });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n var _a;\n if (beforeSend) {\n var result = limitModification(event, modifiableFieldPathsByEvent[event.type], function (event) {\n return beforeSend(event, domainContext);\n });\n if (result === false && event.type !== \"view\" /* RumEventType.VIEW */) {\n return false;\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\");\n }\n }\n var rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n return [\"error\" /* RumEventType.ERROR */, \"resource\" /* RumEventType.RESOURCE */, \"long_task\" /* RumEventType.LONG_TASK */].indexOf(event.type) !== -1;\n}\n","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function getSyntheticsContext() {\n var testId = getSyntheticsTestId();\n var resultId = getSyntheticsResultId();\n if (testId && resultId) {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum(),\n };\n }\n}\n","export function getCiTestContext() {\n var _a;\n var testExecutionId = (_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId');\n if (typeof testExecutionId === 'string') {\n return {\n test_execution_id: testExecutionId,\n };\n }\n}\n","var AbstractLifeCycle = /** @class */ (function () {\n function AbstractLifeCycle() {\n this.callbacks = {};\n }\n AbstractLifeCycle.prototype.notify = function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach(function (callback) { return callback(data); });\n }\n };\n AbstractLifeCycle.prototype.subscribe = function (eventType, callback) {\n var _this = this;\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: function () {\n _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) { return callback !== other; });\n },\n };\n };\n return AbstractLifeCycle;\n}());\nexport { AbstractLifeCycle };\n","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport var LifeCycle = (AbstractLifeCycle);\n","import { setInterval, clearInterval } from './timer';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\n/**\n * Store and keep track of values spans. This whole class assumes that values are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nvar ValueHistory = /** @class */ (function () {\n function ValueHistory(expireDelay, maxEntries) {\n var _this = this;\n this.expireDelay = expireDelay;\n this.maxEntries = maxEntries;\n this.entries = [];\n this.clearOldValuesInterval = setInterval(function () { return _this.clearOldValues(); }, CLEAR_OLD_VALUES_INTERVAL);\n }\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n ValueHistory.prototype.add = function (value, startTime) {\n var _this = this;\n var entry = {\n value: value,\n startTime: startTime,\n endTime: END_OF_TIMES,\n remove: function () {\n var index = _this.entries.indexOf(entry);\n if (index >= 0) {\n _this.entries.splice(index, 1);\n }\n },\n close: function (endTime) {\n entry.endTime = endTime;\n },\n };\n if (this.maxEntries && this.entries.length >= this.maxEntries) {\n this.entries.pop();\n }\n this.entries.unshift(entry);\n return entry;\n };\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n */\n ValueHistory.prototype.find = function (startTime) {\n if (startTime === void 0) { startTime = END_OF_TIMES; }\n for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (entry.startTime <= startTime) {\n if (startTime <= entry.endTime) {\n return entry.value;\n }\n break;\n }\n }\n };\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n ValueHistory.prototype.closeActive = function (endTime) {\n var latestEntry = this.entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n };\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n ValueHistory.prototype.findAll = function (startTime, duration) {\n if (startTime === void 0) { startTime = END_OF_TIMES; }\n if (duration === void 0) { duration = 0; }\n var endTime = addDuration(startTime, duration);\n return this.entries\n .filter(function (entry) { return entry.startTime <= endTime && startTime <= entry.endTime; })\n .map(function (entry) { return entry.value; });\n };\n /**\n * Remove all entries from this collection.\n */\n ValueHistory.prototype.reset = function () {\n this.entries = [];\n };\n /**\n * Stop internal garbage collection of past entries.\n */\n ValueHistory.prototype.stop = function () {\n clearInterval(this.clearOldValuesInterval);\n };\n ValueHistory.prototype.clearOldValues = function () {\n var oldTimeThreshold = relativeNow() - this.expireDelay;\n while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {\n this.entries.pop();\n }\n };\n return ValueHistory;\n}());\nexport { ValueHistory };\n","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nexport function instrumentMethod(object, method, instrumentationFactory) {\n var original = object[method];\n var instrumentation = instrumentationFactory(original);\n var instrumentationWrapper = function () {\n if (typeof instrumentation !== 'function') {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return instrumentation.apply(this, arguments);\n };\n object[method] = instrumentationWrapper;\n return {\n stop: function () {\n if (object[method] === instrumentationWrapper) {\n object[method] = original;\n }\n else {\n instrumentation = original;\n }\n },\n };\n}\nexport function instrumentMethodAndCallOriginal(object, method, _a) {\n var before = _a.before, after = _a.after;\n return instrumentMethod(object, method, function (original) {\n return function () {\n var args = arguments;\n var result;\n if (before) {\n callMonitored(before, this, args);\n }\n if (typeof original === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n result = original.apply(this, args);\n }\n if (after) {\n callMonitored(after, this, args);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n });\n}\nexport function instrumentSetter(object, property, after) {\n var originalDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop };\n }\n var instrumentation = function (thisObject, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n after(thisObject, value);\n }, 0);\n };\n var instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(object, property, {\n set: instrumentationWrapper,\n });\n return {\n stop: function () {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(object, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(object, property, originalDescriptor);\n }\n else {\n instrumentation = noop;\n }\n },\n };\n}\n","import { instrumentMethodAndCallOriginal } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, relativeNow, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n var observable = new Observable(function () {\n var stopInstrumentingStart = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'open', {\n before: openXhr,\n }).stop;\n var stopInstrumentingSend = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'send', {\n before: function () {\n sendXhr.call(this, configuration, observable);\n },\n }).stop;\n var stopInstrumentingAbort = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'abort', {\n before: abortXhr,\n }).stop;\n return function () {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n return observable;\n}\nfunction openXhr(method, url) {\n xhrContexts.set(this, {\n state: 'open',\n method: method,\n url: normalizeUrl(String(url)),\n });\n}\nfunction sendXhr(configuration, observable) {\n var _this = this;\n var context = xhrContexts.get(this);\n if (!context) {\n return;\n }\n var startContext = context;\n startContext.state = 'start';\n startContext.startTime = relativeNow();\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = this;\n var hasBeenReported = false;\n var stopInstrumentingOnReadyStateChange = instrumentMethodAndCallOriginal(this, 'onreadystatechange', {\n before: function () {\n if (this.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during a onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n },\n }).stop;\n var onEnd = function () {\n unsubscribeLoadEndListener();\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n var completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = _this.status;\n observable.notify(shallowClone(completeContext));\n };\n var unsubscribeLoadEndListener = addEventListener(configuration, this, 'loadend', onEnd).stop;\n observable.notify(startContext);\n}\nfunction abortXhr() {\n var context = xhrContexts.get(this);\n if (context) {\n context.isAborted = true;\n }\n}\n","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { callMonitored, monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nfunction createFetchObservable() {\n var observable = new Observable(function () {\n if (!window.fetch) {\n return;\n }\n var stop = instrumentMethod(window, 'fetch', function (originalFetch) {\n return function (input, init) {\n var responsePromise;\n var context = callMonitored(beforeSend, null, [observable, input, init]);\n if (context) {\n responsePromise = originalFetch.call(this, context.input, context.init);\n callMonitored(afterSend, null, [observable, responsePromise, context]);\n }\n else {\n responsePromise = originalFetch.call(this, input, init);\n }\n return responsePromise;\n };\n }).stop;\n return stop;\n });\n return observable;\n}\nfunction beforeSend(observable, input, init) {\n var method = (init && init.method) || (input instanceof Request && input.method) || 'GET';\n var url = input instanceof Request ? input.url : normalizeUrl(String(input));\n var startClocks = clocksNow();\n var context = {\n state: 'start',\n init: init,\n input: input,\n method: method,\n startClocks: startClocks,\n url: url,\n };\n observable.notify(context);\n return context;\n}\nfunction afterSend(observable, responsePromise, startContext) {\n var reportFetch = function (response) {\n var context = startContext;\n context.state = 'resolve';\n if ('stack' in response || response instanceof Error) {\n context.status = 0;\n context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR;\n context.error = response;\n }\n else if ('status' in response) {\n context.response = response;\n context.responseType = response.type;\n context.status = response.status;\n context.isAborted = false;\n }\n observable.notify(context);\n };\n responsePromise.then(monitor(reportFetch), monitor(reportFetch));\n}\n","import { initFetchObservable, initXhrObservable, readBytesFromStream, elapsed, timeStampNow, tryToClone, } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nvar nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n var tracer = startTracer(configuration, sessionManager);\n trackXhr(lifeCycle, configuration, tracer);\n trackFetch(lifeCycle, configuration, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n var subscription = initXhrObservable(configuration).subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(5 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url,\n });\n break;\n case 'complete':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(6 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: context.duration,\n method: context.method,\n requestIndex: context.requestIndex,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"xhr\" /* RequestType.XHR */,\n url: context.url,\n xhr: context.xhr,\n });\n break;\n }\n });\n return { stop: function () { return subscription.unsubscribe(); } };\n}\nexport function trackFetch(lifeCycle, configuration, tracer) {\n var subscription = initFetchObservable().subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(5 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url,\n });\n break;\n case 'resolve':\n waitForResponseToComplete(context, function (duration) {\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(6 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: duration,\n method: context.method,\n requestIndex: context.requestIndex,\n responseType: context.responseType,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"fetch\" /* RequestType.FETCH */,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input,\n });\n });\n break;\n }\n });\n return { stop: function () { return subscription.unsubscribe(); } };\n}\nfunction getNextRequestIndex() {\n var result = nextRequestIndex;\n nextRequestIndex += 1;\n return result;\n}\nfunction waitForResponseToComplete(context, callback) {\n var clonedResponse = context.response && tryToClone(context.response);\n if (!clonedResponse || !clonedResponse.body) {\n // do not try to wait for the response if the clone failed, fetch error or null body\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n }\n else {\n readBytesFromStream(clonedResponse.body, function () {\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n }, {\n bytesLimit: Number.POSITIVE_INFINITY,\n collectStreamBody: false,\n });\n }\n}\n","export function isServerError(status) {\n return status >= 500;\n}\nexport function tryToClone(response) {\n try {\n return response.clone();\n }\n catch (e) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return;\n }\n}\n","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n var reader = stream.getReader();\n var chunks = [];\n var readBytesCount = 0;\n readMore();\n function readMore() {\n reader.read().then(monitor(function (result) {\n if (result.done) {\n onDone();\n return;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n readBytesCount += result.value.length;\n if (readBytesCount > options.bytesLimit) {\n onDone();\n }\n else {\n readMore();\n }\n }), monitor(function (error) { return callback(error); }));\n }\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop);\n var bytes;\n var limitExceeded;\n if (options.collectStreamBody) {\n var completeBuffer_1;\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer_1 = chunks[0];\n }\n else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer_1 = new Uint8Array(readBytesCount);\n var offset_1 = 0;\n chunks.forEach(function (chunk) {\n completeBuffer_1.set(chunk, offset_1);\n offset_1 += chunk.length;\n });\n }\n bytes = completeBuffer_1.slice(0, options.bytesLimit);\n limitExceeded = completeBuffer_1.length > options.bytesLimit;\n }\n callback(undefined, bytes, limitExceeded);\n }\n}\n","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts(_a) {\n var lifeCycle = _a.lifeCycle, isChildEvent = _a.isChildEvent, _b = _a.onChange, callback = _b === void 0 ? noop : _b;\n var eventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0,\n };\n var subscription = lifeCycle.subscribe(11 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n var _a;\n if (event.type === 'view' || !isChildEvent(event)) {\n return;\n }\n switch (event.type) {\n case \"error\" /* RumEventType.ERROR */:\n eventCounts.errorCount += 1;\n callback();\n break;\n case \"action\" /* RumEventType.ACTION */:\n eventCounts.actionCount += 1;\n if (event.action.frustration) {\n eventCounts.frustrationCount += event.action.frustration.type.length;\n }\n callback();\n break;\n case \"long_task\" /* RumEventType.LONG_TASK */:\n eventCounts.longTaskCount += 1;\n callback();\n break;\n case \"resource\" /* RumEventType.RESOURCE */:\n if (!((_a = event._dd) === null || _a === void 0 ? void 0 : _a.discarded)) {\n eventCounts.resourceCount += 1;\n callback();\n }\n break;\n }\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n eventCounts: eventCounts,\n };\n}\n","import { instrumentMethodAndCallOriginal, matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../browser/performanceCollection';\n// Delay to wait for a page activity to validate the tracking process\nexport var PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport var PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n * Wait page activity end\n * .-------------------'--------------------.\n * v v\n * [Wait for a page activity ] [Wait for a maximum duration]\n * [timeout: VALIDATION_DELAY] [ timeout: maxDuration ]\n * / \\ |\n * v v |\n * [No page activity] [Page activity] |\n * | |,----------------------. |\n * v v | |\n * (Discard) [Wait for a page activity] | |\n * [ timeout: END_DELAY ] | |\n * / \\ | |\n * v v | |\n * [No page activity] [Page activity] | |\n * | | | |\n * | '------------' |\n * '-----------. ,--------------------'\n * v\n * (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, pageActivityEndCallback, maxDuration) {\n var pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, configuration);\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n var pageActivityEndTimeoutId;\n var hasCompleted = false;\n var validationTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: false }); }), PAGE_ACTIVITY_VALIDATION_DELAY);\n var maxDurationTimeoutId = maxDuration !== undefined\n ? setTimeout(monitor(function () { return complete({ hadActivity: true, end: timeStampNow() }); }), maxDuration)\n : undefined;\n var pageActivitySubscription = pageActivityObservable.subscribe(function (_a) {\n var isBusy = _a.isBusy;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n var lastChangeTime = timeStampNow();\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: true, end: lastChangeTime }); }), PAGE_ACTIVITY_END_DELAY);\n }\n });\n var stop = function () {\n hasCompleted = true;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n clearTimeout(maxDurationTimeoutId);\n pageActivitySubscription.unsubscribe();\n };\n function complete(event) {\n if (hasCompleted) {\n return;\n }\n stop();\n pageActivityEndCallback(event);\n }\n return { stop: stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, configuration) {\n var observable = new Observable(function () {\n var subscriptions = [];\n var firstRequestIndex;\n var pendingRequestsCount = 0;\n subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n if (entries.some(function (entry) { return entry.entryType === RumPerformanceEntryType.RESOURCE && !isExcludedUrl(configuration, entry.name); })) {\n notifyPageActivity();\n }\n }), lifeCycle.subscribe(5 /* LifeCycleEventType.REQUEST_STARTED */, function (startEvent) {\n if (isExcludedUrl(configuration, startEvent.url)) {\n return;\n }\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex;\n }\n pendingRequestsCount += 1;\n notifyPageActivity();\n }), lifeCycle.subscribe(6 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n if (isExcludedUrl(configuration, request.url) ||\n firstRequestIndex === undefined ||\n // If the request started before the tracking start, ignore it\n request.requestIndex < firstRequestIndex) {\n return;\n }\n pendingRequestsCount -= 1;\n notifyPageActivity();\n }));\n var stopTrackingWindowOpen = trackWindowOpen(notifyPageActivity).stop;\n return function () {\n stopTrackingWindowOpen();\n subscriptions.forEach(function (s) { return s.unsubscribe(); });\n };\n function notifyPageActivity() {\n observable.notify({ isBusy: pendingRequestsCount > 0 });\n }\n });\n return observable;\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n return matchList(configuration.excludedActivityUrls, requestUrl);\n}\nfunction trackWindowOpen(callback) {\n return instrumentMethodAndCallOriginal(window, 'open', { before: callback });\n}\n","import { safeTruncate, isIE, find } from '@datadog/browser-core';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport var DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport function getActionNameFromElement(element, userProgrammaticAttribute) {\n // Proceed to get the action name in two steps:\n // * first, get the name programmatically, explicitly defined by the user.\n // * then, use strategies that are known to return good results. Those strategies will be used on\n // the element and a few parents, but it's likely that they won't succeed at all.\n // * if no name is found this way, use strategies returning less accurate names as a fallback.\n // Those are much likely to succeed.\n return (getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute)) ||\n getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies) ||\n getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies) ||\n '');\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n var elementWithAttribute;\n // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n // without limit. It is up to the user to declare a relevant naming strategy.\n // If available, use element.closest() to match get the attribute from the element or any of its\n // parent. Else fallback to a more traditional implementation.\n if (supportsElementClosest()) {\n elementWithAttribute = targetElement.closest(\"[\".concat(programmaticAttribute, \"]\"));\n }\n else {\n var element = targetElement;\n while (element) {\n if (element.hasAttribute(programmaticAttribute)) {\n elementWithAttribute = element;\n break;\n }\n element = element.parentElement;\n }\n }\n if (!elementWithAttribute) {\n return;\n }\n var name = elementWithAttribute.getAttribute(programmaticAttribute);\n return truncate(normalizeWhitespace(name.trim()));\n}\nvar priorityStrategies = [\n // associated LABEL text\n function (element, userProgrammaticAttribute) {\n // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n // instead\n if (supportsLabelProperty()) {\n if ('labels' in element && element.labels && element.labels.length > 0) {\n return getTextualContent(element.labels[0], userProgrammaticAttribute);\n }\n }\n else if (element.id) {\n var label = element.ownerDocument &&\n find(element.ownerDocument.querySelectorAll('label'), function (label) { return label.htmlFor === element.id; });\n return label && getTextualContent(label, userProgrammaticAttribute);\n }\n },\n // INPUT button (and associated) value\n function (element) {\n if (element.nodeName === 'INPUT') {\n var input = element;\n var type = input.getAttribute('type');\n if (type === 'button' || type === 'submit' || type === 'reset') {\n return input.value;\n }\n }\n },\n // BUTTON, LABEL or button-like element text\n function (element, userProgrammaticAttribute) {\n if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n return getTextualContent(element, userProgrammaticAttribute);\n }\n },\n function (element) { return element.getAttribute('aria-label'); },\n // associated element text designated by the aria-labelledby attribute\n function (element, userProgrammaticAttribute) {\n var labelledByAttribute = element.getAttribute('aria-labelledby');\n if (labelledByAttribute) {\n return labelledByAttribute\n .split(/\\s+/)\n .map(function (id) { return getElementById(element, id); })\n .filter(function (label) { return Boolean(label); })\n .map(function (element) { return getTextualContent(element, userProgrammaticAttribute); })\n .join(' ');\n }\n },\n function (element) { return element.getAttribute('alt'); },\n function (element) { return element.getAttribute('name'); },\n function (element) { return element.getAttribute('title'); },\n function (element) { return element.getAttribute('placeholder'); },\n // SELECT first OPTION text\n function (element, userProgrammaticAttribute) {\n if ('options' in element && element.options.length > 0) {\n return getTextualContent(element.options[0], userProgrammaticAttribute);\n }\n },\n];\nvar fallbackStrategies = [\n function (element, userProgrammaticAttribute) { return getTextualContent(element, userProgrammaticAttribute); },\n];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nvar MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies) {\n var element = targetElement;\n var recursionCounter = 0;\n while (recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n element &&\n element.nodeName !== 'BODY' &&\n element.nodeName !== 'HTML' &&\n element.nodeName !== 'HEAD') {\n for (var _i = 0, strategies_1 = strategies; _i < strategies_1.length; _i++) {\n var strategy = strategies_1[_i];\n var name_1 = strategy(element, userProgrammaticAttribute);\n if (typeof name_1 === 'string') {\n var trimmedName = name_1.trim();\n if (trimmedName) {\n return truncate(normalizeWhitespace(trimmedName));\n }\n }\n }\n // Consider a FORM as a contextual limit to get the action name. This is experimental and may\n // be reconsidered in the future.\n if (element.nodeName === 'FORM') {\n break;\n }\n element = element.parentElement;\n recursionCounter += 1;\n }\n}\nfunction normalizeWhitespace(s) {\n return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n return s.length > 100 ? \"\".concat(safeTruncate(s, 100), \" [...]\") : s;\n}\nfunction getElementById(refElement, id) {\n // Use the element ownerDocument here, because tests are executed in an iframe, so\n // document.getElementById won't work.\n return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getTextualContent(element, userProgrammaticAttribute) {\n if (element.isContentEditable) {\n return;\n }\n if ('innerText' in element) {\n var text_1 = element.innerText;\n var removeTextFromElements = function (query) {\n var list = element.querySelectorAll(query);\n for (var index = 0; index < list.length; index += 1) {\n var element_1 = list[index];\n if ('innerText' in element_1) {\n var textToReplace = element_1.innerText;\n if (textToReplace && textToReplace.trim().length > 0) {\n text_1 = text_1.replace(textToReplace, '');\n }\n }\n }\n };\n if (!supportsInnerTextScriptAndStyleRemoval()) {\n // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n // be relatively fast and work in most cases.\n removeTextFromElements('script, style');\n }\n // remove the text of elements with programmatic attribute value\n removeTextFromElements(\"[\".concat(DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE, \"]\"));\n if (userProgrammaticAttribute) {\n removeTextFromElements(\"[\".concat(userProgrammaticAttribute, \"]\"));\n }\n return text_1;\n }\n return element.textContent;\n}\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n return !isIE();\n}\n/**\n * Returns true if the browser supports the element.labels property. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsLabelPropertyResult;\nfunction supportsLabelProperty() {\n if (supportsLabelPropertyResult === undefined) {\n supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype;\n }\n return supportsLabelPropertyResult;\n}\n/**\n * Returns true if the browser supports the element.closest method. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsElementClosestResult;\nfunction supportsElementClosest() {\n if (supportsElementClosestResult === undefined) {\n supportsElementClosestResult = 'closest' in HTMLElement.prototype;\n }\n return supportsElementClosestResult;\n}\n","import { cssEscape } from '@datadog/browser-core';\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/getActionNameFromElement';\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport var STABLE_ATTRIBUTES = [\n DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n // Common test attributes (list provided by google recorder)\n 'data-testid',\n 'data-test',\n 'data-qa',\n 'data-cy',\n 'data-test-id',\n 'data-qa-id',\n 'data-testing',\n // FullStory decorator attributes:\n 'data-component',\n 'data-element',\n 'data-source-file',\n];\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nvar GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nvar UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [\n getStableAttributeSelector,\n getClassSelector,\n getTagNameSelector,\n];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n var targetElementSelector = '';\n var element = targetElement;\n while (element && element.nodeName !== 'HTML') {\n var globallyUniqueSelector = findSelector(element, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n if (globallyUniqueSelector) {\n return globallyUniqueSelector;\n }\n var uniqueSelectorAmongChildren = findSelector(element, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n targetElementSelector =\n uniqueSelectorAmongChildren || combineSelector(getPositionSelector(element), targetElementSelector);\n element = element.parentElement;\n }\n return targetElementSelector;\n}\nfunction isGeneratedValue(value) {\n // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n // present.\n //\n // Here, we use the same strategy: if a the value contains a digit, we consider it generated. This\n // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n // CSS selectors so it should be fine most of the time. We might want to allow customers to\n // provide their own `isGeneratedValue` at some point.\n return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n if (element.id && !isGeneratedValue(element.id)) {\n return \"#\".concat(cssEscape(element.id));\n }\n}\nfunction getClassSelector(element) {\n if (element.tagName === 'BODY') {\n return;\n }\n if (element.classList.length > 0) {\n for (var i = 0; i < element.classList.length; i += 1) {\n var className = element.classList[i];\n if (isGeneratedValue(className)) {\n continue;\n }\n return \"\".concat(cssEscape(element.tagName), \".\").concat(cssEscape(className));\n }\n }\n}\nfunction getTagNameSelector(element) {\n return cssEscape(element.tagName);\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n if (actionNameAttribute) {\n var selector = getAttributeSelector(actionNameAttribute);\n if (selector) {\n return selector;\n }\n }\n for (var _i = 0, STABLE_ATTRIBUTES_1 = STABLE_ATTRIBUTES; _i < STABLE_ATTRIBUTES_1.length; _i++) {\n var attributeName = STABLE_ATTRIBUTES_1[_i];\n var selector = getAttributeSelector(attributeName);\n if (selector) {\n return selector;\n }\n }\n function getAttributeSelector(attributeName) {\n if (element.hasAttribute(attributeName)) {\n return \"\".concat(cssEscape(element.tagName), \"[\").concat(attributeName, \"=\\\"\").concat(cssEscape(element.getAttribute(attributeName)), \"\\\"]\");\n }\n }\n}\nfunction getPositionSelector(element) {\n var sibling = element.parentElement.firstElementChild;\n var elementIndex = 1;\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n elementIndex += 1;\n }\n sibling = sibling.nextElementSibling;\n }\n return \"\".concat(cssEscape(element.tagName), \":nth-of-type(\").concat(elementIndex, \")\");\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n for (var _i = 0, selectorGetters_1 = selectorGetters; _i < selectorGetters_1.length; _i++) {\n var selectorGetter = selectorGetters_1[_i];\n var elementSelector = selectorGetter(element, actionNameAttribute);\n if (!elementSelector) {\n continue;\n }\n var fullSelector = combineSelector(elementSelector, childSelector);\n if (predicate(element, fullSelector)) {\n return fullSelector;\n }\n }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, selector) {\n return element.ownerDocument.querySelectorAll(selector).length === 1;\n}\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > SELECTOR\" returns a single element.\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT SELECTOR\" returns a single element), regardless of whether the selector is a\n * direct descendent of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n */\nfunction isSelectorUniqueAmongSiblings(element, selector) {\n return (element.parentElement.querySelectorAll(supportScopeSelector() ? combineSelector(':scope', selector) : selector)\n .length === 1);\n}\nfunction combineSelector(parent, child) {\n return child ? \"\".concat(parent, \">\").concat(child) : parent;\n}\nvar supportScopeSelectorCache;\nexport function supportScopeSelector() {\n if (supportScopeSelectorCache === undefined) {\n try {\n document.querySelector(':scope');\n supportScopeSelectorCache = true;\n }\n catch (_a) {\n supportScopeSelectorCache = false;\n }\n }\n return supportScopeSelectorCache;\n}\n","import { addEventListener } from '@datadog/browser-core';\nexport function listenActionEvents(configuration, _a) {\n var onPointerDown = _a.onPointerDown, onPointerUp = _a.onPointerUp;\n var selectionEmptyAtPointerDown;\n var userActivity = {\n selection: false,\n input: false,\n };\n var clickContext;\n var listeners = [\n addEventListener(configuration, window, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, function (event) {\n if (isValidPointerEvent(event)) {\n selectionEmptyAtPointerDown = isSelectionEmpty();\n userActivity = {\n selection: false,\n input: false,\n };\n clickContext = onPointerDown(event);\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"selectionchange\" /* DOM_EVENT.SELECTION_CHANGE */, function () {\n if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n userActivity.selection = true;\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"pointerup\" /* DOM_EVENT.POINTER_UP */, function (event) {\n if (isValidPointerEvent(event) && clickContext) {\n // Use a scoped variable to make sure the value is not changed by other clicks\n var localUserActivity_1 = userActivity;\n onPointerUp(clickContext, event, function () { return localUserActivity_1; });\n clickContext = undefined;\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"input\" /* DOM_EVENT.INPUT */, function () {\n userActivity.input = true;\n }, { capture: true }),\n ];\n return {\n stop: function () {\n listeners.forEach(function (listener) { return listener.stop(); });\n },\n };\n}\nfunction isSelectionEmpty() {\n var selection = window.getSelection();\n return !selection || selection.isCollapsed;\n}\nfunction isValidPointerEvent(event) {\n return (event.target instanceof Element &&\n // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n // the future.\n event.isPrimary !== false);\n}\n","import { elementMatches, ONE_SECOND } from '@datadog/browser-core';\nvar MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n if (isRage(clicks)) {\n rageClick.addFrustration(\"rage_click\" /* FrustrationType.RAGE_CLICK */);\n if (clicks.some(isDead)) {\n rageClick.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n }\n if (rageClick.hasError) {\n rageClick.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n }\n return { isRage: true };\n }\n var hasSelectionChanged = clicks.some(function (click) { return click.getUserActivity().selection; });\n clicks.forEach(function (click) {\n if (click.hasError) {\n click.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n }\n if (isDead(click) &&\n // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n !hasSelectionChanged) {\n click.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n }\n });\n return { isRage: false };\n}\nexport function isRage(clicks) {\n if (clicks.some(function (click) { return click.getUserActivity().selection; })) {\n return false;\n }\n for (var i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n if (clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <=\n ONE_SECOND) {\n return true;\n }\n }\n return false;\n}\nvar DEAD_CLICK_EXCLUDE_SELECTOR = \n// inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n// inputs (using a negative selector is shorter here)\n'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' +\n 'textarea,' +\n 'select,' +\n // contenteditable and their descendants don't always trigger meaningful changes when manipulated\n '[contenteditable],' +\n '[contenteditable] *,' +\n // canvas, as there is no good way to detect activity occurring on them\n 'canvas,' +\n // links that are interactive (have an href attribute) or any of their descendants, as they can\n // open a new tab or navigate to a hash without triggering a meaningful event\n 'a[href],' +\n 'a[href] *';\nexport function isDead(click) {\n if (click.hasPageActivity || click.getUserActivity().input) {\n return false;\n }\n return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR);\n}\n","import { includes, timeStampNow, Observable, assign, getRelativeTime, ONE_MINUTE, ValueHistory, generateUUID, clocksNow, ONE_SECOND, elapsed, } from '@datadog/browser-core';\nimport { trackEventCounts } from '../trackEventCounts';\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd';\nimport { getSelectorFromElement } from '../getSelectorFromElement';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\n// Maximum duration for click actions\nexport var CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport var ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, configuration) {\n var history = new ValueHistory(ACTION_CONTEXT_TIME_OUT_DELAY);\n var stopObservable = new Observable();\n var currentClickChain;\n lifeCycle.subscribe(8 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n history.reset();\n });\n lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, stopClickChain);\n var stopActionEventsListener = listenActionEvents(configuration, {\n onPointerDown: function (pointerDownEvent) {\n return processPointerDown(configuration, lifeCycle, domMutationObservable, history, pointerDownEvent);\n },\n onPointerUp: function (_a, startEvent, getUserActivity) {\n var clickActionBase = _a.clickActionBase, hadActivityOnPointerDown = _a.hadActivityOnPointerDown;\n return startClickAction(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown);\n },\n }).stop;\n var actionContexts = {\n findActionId: function (startTime) {\n return configuration.trackFrustrations ? history.findAll(startTime) : history.find(startTime);\n },\n };\n return {\n stop: function () {\n stopClickChain();\n stopObservable.notify();\n stopActionEventsListener();\n },\n actionContexts: actionContexts,\n };\n function appendClickToClickChain(click) {\n if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n var rageClick_1 = click.clone();\n currentClickChain = createClickChain(click, function (clicks) {\n finalizeClicks(clicks, rageClick_1);\n });\n }\n }\n function stopClickChain() {\n if (currentClickChain) {\n currentClickChain.stop();\n }\n }\n}\nfunction processPointerDown(configuration, lifeCycle, domMutationObservable, history, pointerDownEvent) {\n if (!configuration.trackFrustrations && history.find()) {\n // TODO: remove this in a future major version. To keep retrocompatibility, ignore any new\n // action if another one is already occurring.\n return;\n }\n var clickActionBase = computeClickActionBase(pointerDownEvent, configuration.actionNameAttribute);\n if (!configuration.trackFrustrations && !clickActionBase.name) {\n // TODO: remove this in a future major version. To keep retrocompatibility, ignore any action\n // with a blank name\n return;\n }\n var hadActivityOnPointerDown = false;\n waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n hadActivityOnPointerDown = pageActivityEndEvent.hadActivity;\n }, \n // We don't care about the activity duration, we just want to know whether an activity did happen\n // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n PAGE_ACTIVITY_VALIDATION_DELAY);\n return { clickActionBase: clickActionBase, hadActivityOnPointerDown: function () { return hadActivityOnPointerDown; } };\n}\nfunction startClickAction(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown) {\n var click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n if (configuration.trackFrustrations) {\n appendClickToClickChain(click);\n }\n var stopWaitPageActivityEnd = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n // If the clock is looking weird, just discard the click\n click.discard();\n }\n else {\n if (pageActivityEndEvent.hadActivity) {\n click.stop(pageActivityEndEvent.end);\n }\n else if (hadActivityOnPointerDown()) {\n click.stop(\n // using the click start as activity end, so the click will have some activity but its\n // duration will be 0 (as the activity started before the click start)\n click.startClocks.timeStamp);\n }\n else {\n click.stop();\n }\n // Validate or discard the click only if we don't track frustrations. It'll be done when\n // the click chain is finalized.\n if (!configuration.trackFrustrations) {\n if (!pageActivityEndEvent.hadActivity) {\n // If we are not tracking frustrations, we should discard the click to keep backward\n // compatibility.\n click.discard();\n }\n else {\n click.validate();\n }\n }\n }\n }, CLICK_ACTION_MAX_DURATION).stop;\n var viewEndedSubscription = lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n click.stop(endClocks.timeStamp);\n });\n var stopSubscription = stopObservable.subscribe(function () {\n click.stop();\n });\n click.stopObservable.subscribe(function () {\n viewEndedSubscription.unsubscribe();\n stopWaitPageActivityEnd();\n stopSubscription.unsubscribe();\n });\n}\nfunction computeClickActionBase(event, actionNameAttribute) {\n var rect = event.target.getBoundingClientRect();\n return {\n type: \"click\" /* ActionType.CLICK */,\n target: {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n selector: getSelectorFromElement(event.target, actionNameAttribute),\n },\n position: {\n // Use clientX and Y because for SVG element offsetX and Y are relatives to the element\n x: Math.round(event.clientX - rect.left),\n y: Math.round(event.clientY - rect.top),\n },\n name: getActionNameFromElement(event.target, actionNameAttribute),\n };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent) {\n var id = generateUUID();\n var startClocks = clocksNow();\n var historyEntry = history.add(id, startClocks.relative);\n var eventCountsSubscription = trackEventCounts({\n lifeCycle: lifeCycle,\n isChildEvent: function (event) {\n return event.action !== undefined &&\n (Array.isArray(event.action.id) ? includes(event.action.id, id) : event.action.id === id);\n },\n });\n var status = 0 /* ClickStatus.ONGOING */;\n var activityEndTime;\n var frustrationTypes = [];\n var stopObservable = new Observable();\n function stop(newActivityEndTime) {\n if (status !== 0 /* ClickStatus.ONGOING */) {\n return;\n }\n activityEndTime = newActivityEndTime;\n status = 1 /* ClickStatus.STOPPED */;\n if (activityEndTime) {\n historyEntry.close(getRelativeTime(activityEndTime));\n }\n else {\n historyEntry.remove();\n }\n eventCountsSubscription.stop();\n stopObservable.notify();\n }\n return {\n event: startEvent,\n stop: stop,\n stopObservable: stopObservable,\n get hasError() {\n return eventCountsSubscription.eventCounts.errorCount > 0;\n },\n get hasPageActivity() {\n return activityEndTime !== undefined;\n },\n getUserActivity: getUserActivity,\n addFrustration: function (frustrationType) {\n frustrationTypes.push(frustrationType);\n },\n startClocks: startClocks,\n isStopped: function () { return status === 1 /* ClickStatus.STOPPED */ || status === 2 /* ClickStatus.FINALIZED */; },\n clone: function () { return newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent); },\n validate: function (domEvents) {\n stop();\n if (status !== 1 /* ClickStatus.STOPPED */) {\n return;\n }\n var _a = eventCountsSubscription.eventCounts, resourceCount = _a.resourceCount, errorCount = _a.errorCount, longTaskCount = _a.longTaskCount;\n var clickAction = assign({\n type: \"click\" /* ActionType.CLICK */,\n duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n startClocks: startClocks,\n id: id,\n frustrationTypes: frustrationTypes,\n counts: {\n resourceCount: resourceCount,\n errorCount: errorCount,\n longTaskCount: longTaskCount,\n },\n events: domEvents !== null && domEvents !== void 0 ? domEvents : [startEvent],\n event: startEvent,\n }, clickActionBase);\n lifeCycle.notify(1 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, clickAction);\n status = 2 /* ClickStatus.FINALIZED */;\n },\n discard: function () {\n stop();\n status = 2 /* ClickStatus.FINALIZED */;\n },\n };\n}\nexport function finalizeClicks(clicks, rageClick) {\n var isRage = computeFrustration(clicks, rageClick).isRage;\n if (isRage) {\n clicks.forEach(function (click) { return click.discard(); });\n rageClick.stop(timeStampNow());\n rageClick.validate(clicks.map(function (click) { return click.event; }));\n }\n else {\n rageClick.discard();\n clicks.forEach(function (click) { return click.validate(); });\n }\n}\n","import { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nexport var MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport var MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n var bufferedClicks = [];\n var status = 0 /* ClickChainStatus.WaitingForMoreClicks */;\n var maxDurationBetweenClicksTimeoutId;\n appendClick(firstClick);\n function appendClick(click) {\n click.stopObservable.subscribe(tryFinalize);\n bufferedClicks.push(click);\n clearTimeout(maxDurationBetweenClicksTimeoutId);\n maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS);\n }\n function tryFinalize() {\n if (status === 1 /* ClickChainStatus.WaitingForClicksToStop */ && bufferedClicks.every(function (click) { return click.isStopped(); })) {\n status = 2 /* ClickChainStatus.Finalized */;\n onFinalize(bufferedClicks);\n }\n }\n function dontAcceptMoreClick() {\n clearTimeout(maxDurationBetweenClicksTimeoutId);\n if (status === 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n status = 1 /* ClickChainStatus.WaitingForClicksToStop */;\n tryFinalize();\n }\n }\n return {\n tryAppend: function (click) {\n if (status !== 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n return false;\n }\n if (bufferedClicks.length > 0 &&\n !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n dontAcceptMoreClick();\n return false;\n }\n appendClick(click);\n return true;\n },\n stop: function () {\n dontAcceptMoreClick();\n },\n };\n}\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first, second) {\n return (first.target === second.target &&\n mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS);\n}\nfunction mouseEventDistance(origin, other) {\n return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2));\n}\n","import { noop, assign, combine, toServerDuration, generateUUID } from '@datadog/browser-core';\nimport { trackClickActions } from './trackClickActions';\nexport function startActionCollection(lifeCycle, domMutationObservable, configuration, pageStateHistory) {\n lifeCycle.subscribe(1 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, function (action) {\n return lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action, pageStateHistory));\n });\n var actionContexts = { findActionId: noop };\n if (configuration.trackUserInteractions) {\n actionContexts = trackClickActions(lifeCycle, domMutationObservable, configuration).actionContexts;\n }\n return {\n addAction: function (action, savedCommonContext) {\n lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n savedCommonContext: savedCommonContext,\n }, processAction(action, pageStateHistory)));\n },\n actionContexts: actionContexts,\n };\n}\nfunction processAction(action, pageStateHistory) {\n var autoActionProperties = isAutoAction(action)\n ? {\n action: {\n id: action.id,\n loading_time: toServerDuration(action.duration),\n frustration: {\n type: action.frustrationTypes,\n },\n error: {\n count: action.counts.errorCount,\n },\n long_task: {\n count: action.counts.longTaskCount,\n },\n resource: {\n count: action.counts.resourceCount,\n },\n },\n _dd: {\n action: {\n target: action.target,\n position: action.position,\n },\n },\n }\n : undefined;\n var customerContext = !isAutoAction(action) ? action.context : undefined;\n var actionEvent = combine({\n action: {\n id: generateUUID(),\n target: {\n name: action.name,\n },\n type: action.type,\n },\n date: action.startClocks.timeStamp,\n type: \"action\" /* RumEventType.ACTION */,\n view: { in_foreground: pageStateHistory.isInActivePageStateAt(action.startClocks.relative) },\n }, autoActionProperties);\n return {\n customerContext: customerContext,\n rawRumEvent: actionEvent,\n startTime: action.startClocks.relative,\n domainContext: isAutoAction(action) ? { event: action.event, events: action.events } : {},\n };\n}\nfunction isAutoAction(action) {\n return action.type !== \"custom\" /* ActionType.CUSTOM */;\n}\n","import { instrumentMethodAndCallOriginal } from '../../tools/instrumentMethod';\nimport { computeStackTrace } from './computeStackTrace';\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\n/**\n * Cross-browser collection of unhandled errors\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Tries to catch all unhandled errors and report them to the\n * callback.\n *\n * Callbacks receive a StackTrace object as described in the\n * computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\nexport function startUnhandledErrorCollection(callback) {\n var stopInstrumentingOnError = instrumentOnError(callback).stop;\n var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(callback).stop;\n return {\n stop: function () {\n stopInstrumentingOnError();\n stopInstrumentingOnUnhandledRejection();\n },\n };\n}\n/**\n * Install a global onerror handler\n */\nfunction instrumentOnError(callback) {\n return instrumentMethodAndCallOriginal(window, 'onerror', {\n before: function (messageObj, url, line, column, errorObj) {\n var stackTrace;\n if (errorObj instanceof Error) {\n stackTrace = computeStackTrace(errorObj);\n }\n else {\n var stack = [{ url: url, column: column, line: line }];\n var _a = tryToParseMessage(messageObj), name_1 = _a.name, message = _a.message;\n stackTrace = {\n name: name_1,\n message: message,\n stack: stack,\n };\n }\n callback(stackTrace, errorObj !== null && errorObj !== void 0 ? errorObj : messageObj);\n },\n });\n}\nfunction tryToParseMessage(messageObj) {\n var _a;\n var name;\n var message;\n if ({}.toString.call(messageObj) === '[object String]') {\n ;\n _a = ERROR_TYPES_RE.exec(messageObj), name = _a[1], message = _a[2];\n }\n return { name: name, message: message };\n}\n/**\n * Install a global onunhandledrejection handler\n */\nfunction instrumentUnhandledRejection(callback) {\n return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {\n before: function (e) {\n var reason = e.reason || 'Empty reason';\n var stack = computeStackTrace(reason);\n callback(stack, reason);\n },\n });\n}\n","import { computeStackTrace } from '../tracekit';\nimport { createHandlingStack, formatErrorMessage, toStackTraceString, tryToGetFingerprint } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { find } from '../../tools/utils/polyfills';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n var consoleObservables = apis.map(function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api);\n }\n return consoleObservablesByApi[api];\n });\n return mergeObservables.apply(void 0, consoleObservables);\n}\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n var observable = new Observable(function () {\n var originalConsoleApi = globalConsole[api];\n globalConsole[api] = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n originalConsoleApi.apply(console, params);\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack));\n });\n };\n return function () {\n globalConsole[api] = originalConsoleApi;\n };\n });\n return observable;\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n // Todo: remove console error prefix in the next major version\n var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n var stack;\n var fingerprint;\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) { return param instanceof Error; });\n stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined;\n fingerprint = tryToGetFingerprint(firstErrorParam);\n message = \"console error: \".concat(message);\n }\n return {\n api: api,\n message: message,\n stack: stack,\n handlingStack: handlingStack,\n fingerprint: fingerprint,\n };\n}\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return sanitize(param);\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param));\n }\n return jsonStringify(sanitize(param), undefined, 2);\n}\n","import { toStackTraceString } from '../error/error';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { includes } from '../../tools/utils/polyfills';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n var observables = [];\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration));\n }\n var reportTypes = apis.filter(function (api) { return api !== RawReportType.cspViolation; });\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes));\n }\n return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n var observable = new Observable(function () {\n if (!window.ReportingObserver) {\n return;\n }\n var handleReports = monitor(function (reports, _) {\n return reports.forEach(function (report) {\n observable.notify(buildRawReportFromReport(report));\n });\n });\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n });\n observer.observe();\n return function () {\n observer.disconnect();\n };\n });\n return observable;\n}\nfunction createCspViolationReportObservable(configuration) {\n var observable = new Observable(function () {\n var stop = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, function (event) {\n observable.notify(buildRawReportFromCspViolation(event));\n }).stop;\n return stop;\n });\n return observable;\n}\nfunction buildRawReportFromReport(_a) {\n var type = _a.type, body = _a.body;\n return {\n type: type,\n subtype: body.id,\n message: \"\".concat(type, \": \").concat(body.message),\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n };\n}\nfunction buildRawReportFromCspViolation(event) {\n var type = RawReportType.cspViolation;\n var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n return {\n type: RawReportType.cspViolation,\n subtype: event.effectiveDirective,\n message: \"\".concat(type, \": \").concat(message),\n stack: buildStack(event.effectiveDirective, event.originalPolicy\n ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\")\n : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return sourceFile\n ? toStackTraceString({\n name: name,\n message: message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber !== null && lineNumber !== void 0 ? lineNumber : undefined,\n column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined,\n },\n ],\n })\n : undefined;\n}\n","import { isEmptyObject, assign, ErrorSource, generateUUID, computeRawError, computeStackTrace, Observable, trackRuntimeError, } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts) {\n var errorObservable = new Observable();\n trackConsoleError(errorObservable);\n trackRuntimeError(errorObservable);\n trackReportError(configuration, errorObservable);\n errorObservable.subscribe(function (error) { return lifeCycle.notify(12 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error }); });\n return doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts);\n}\nexport function doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts) {\n lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, function (_a) {\n var error = _a.error, customerContext = _a.customerContext, savedCommonContext = _a.savedCommonContext;\n lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n customerContext: customerContext,\n savedCommonContext: savedCommonContext,\n }, processError(error, pageStateHistory, featureFlagContexts)));\n });\n return {\n addError: function (_a, savedCommonContext) {\n var error = _a.error, handlingStack = _a.handlingStack, startClocks = _a.startClocks, customerContext = _a.context;\n var stackTrace = error instanceof Error ? computeStackTrace(error) : undefined;\n var rawError = computeRawError({\n stackTrace: stackTrace,\n originalError: error,\n handlingStack: handlingStack,\n startClocks: startClocks,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n source: ErrorSource.CUSTOM,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n });\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n customerContext: customerContext,\n savedCommonContext: savedCommonContext,\n error: rawError,\n });\n },\n };\n}\nfunction processError(error, pageStateHistory, featureFlagContexts) {\n var rawRumEvent = {\n date: error.startClocks.timeStamp,\n error: {\n id: generateUUID(),\n message: error.message,\n source: error.source,\n stack: error.stack,\n handling_stack: error.handlingStack,\n type: error.type,\n handling: error.handling,\n causes: error.causes,\n source_type: 'browser',\n fingerprint: error.fingerprint,\n },\n type: \"error\" /* RumEventType.ERROR */,\n view: { in_foreground: pageStateHistory.isInActivePageStateAt(error.startClocks.relative) },\n };\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(error.startClocks.relative);\n if (featureFlagContext && !isEmptyObject(featureFlagContext)) {\n rawRumEvent.feature_flags = featureFlagContext;\n }\n return {\n rawRumEvent: rawRumEvent,\n startTime: error.startClocks.relative,\n domainContext: {\n error: error.originalError,\n },\n };\n}\n","import { clocksNow, initConsoleObservable, ErrorSource, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n var subscription = initConsoleObservable([ConsoleApiName.error]).subscribe(function (consoleError) {\n return errorObservable.notify({\n startClocks: clocksNow(),\n message: consoleError.message,\n stack: consoleError.stack,\n fingerprint: consoleError.fingerprint,\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n handlingStack: consoleError.handlingStack,\n });\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n };\n}\n","import { clocksNow } from '../../tools/utils/timeUtils';\nimport { startUnhandledErrorCollection } from '../tracekit';\nimport { computeRawError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError(errorObservable) {\n return startUnhandledErrorCollection(function (stackTrace, originalError) {\n errorObservable.notify(computeRawError({\n stackTrace: stackTrace,\n originalError: originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n source: ErrorSource.SOURCE,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n }));\n });\n}\n","import { clocksNow, ErrorSource, initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(configuration, errorObservable) {\n var subscription = initReportObservable(configuration, [\n RawReportType.cspViolation,\n RawReportType.intervention,\n ]).subscribe(function (reportError) {\n return errorObservable.notify({\n startClocks: clocksNow(),\n message: reportError.message,\n stack: reportError.stack,\n type: reportError.subtype,\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n });\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n };\n}\n","import { addDuration } from '@datadog/browser-core';\nimport { toValidEntry } from './resourceUtils';\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestTiming(request) {\n if (!performance || !('getEntriesByName' in performance)) {\n return;\n }\n var sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n return;\n }\n var candidates = sameNameEntries\n .map(function (entry) { return entry.toJSON(); })\n .filter(toValidEntry)\n .filter(function (entry) {\n return isBetween(entry, request.startClocks.relative, endTime({ startTime: request.startClocks.relative, duration: request.duration }));\n });\n if (candidates.length === 1) {\n return candidates[0];\n }\n return;\n}\nfunction endTime(timing) {\n return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n var errorMargin = 1;\n return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}\n","import { combine, generateUUID, toServerDuration, relativeToClocks, assign, isNumber, isExperimentalFeatureEnabled, ExperimentalFeature, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../browser/performanceCollection';\nimport { matchRequestTiming } from './matchRequestTiming';\nimport { computePerformanceResourceDetails, computePerformanceResourceDuration, computeResourceKind, computeSize, isRequestKind, } from './resourceUtils';\nexport function startResourceCollection(lifeCycle, configuration, sessionManager, pageStateHistory) {\n lifeCycle.subscribe(6 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processRequest(request, configuration, sessionManager, pageStateHistory));\n });\n lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === RumPerformanceEntryType.RESOURCE && !isRequestKind(entry)) {\n lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processResourceEntry(entry, configuration, sessionManager, pageStateHistory));\n }\n }\n });\n}\nfunction processRequest(request, configuration, sessionManager, pageStateHistory) {\n var _a;\n var type = request.type === \"xhr\" /* RequestType.XHR */ ? \"xhr\" /* ResourceType.XHR */ : \"fetch\" /* ResourceType.FETCH */;\n var matchingTiming = matchRequestTiming(request);\n var startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n var correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined;\n var tracingInfo = computeRequestTracingInfo(request, configuration);\n var indexingInfo = computeIndexingInfo(sessionManager, startClocks);\n var duration = computeRequestDuration(pageStateHistory, startClocks, request.duration);\n var pageStateInfo = computePageStateInfo(pageStateHistory, startClocks, (_a = matchingTiming === null || matchingTiming === void 0 ? void 0 : matchingTiming.duration) !== null && _a !== void 0 ? _a : request.duration);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n duration: duration,\n method: request.method,\n status_code: request.status,\n url: request.url,\n },\n type: \"resource\" /* RumEventType.RESOURCE */,\n }, tracingInfo, correspondingTimingOverrides, indexingInfo, pageStateInfo);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: matchingTiming && toPerformanceEntryRepresentation(matchingTiming),\n xhr: request.xhr,\n response: request.response,\n requestInput: request.input,\n requestInit: request.init,\n error: request.error,\n },\n };\n}\nfunction processResourceEntry(entry, configuration, sessionManager, pageStateHistory) {\n var type = computeResourceKind(entry);\n var entryMetrics = computePerformanceEntryMetrics(entry);\n var startClocks = relativeToClocks(entry.startTime);\n var tracingInfo = computeEntryTracingInfo(entry, configuration);\n var indexingInfo = computeIndexingInfo(sessionManager, startClocks);\n var pageStateInfo = computePageStateInfo(pageStateHistory, startClocks, entry.duration);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n url: entry.name,\n },\n type: \"resource\" /* RumEventType.RESOURCE */,\n }, tracingInfo, entryMetrics, indexingInfo, pageStateInfo);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: toPerformanceEntryRepresentation(entry),\n },\n };\n}\nfunction computePerformanceEntryMetrics(timing) {\n return {\n resource: assign({\n duration: computePerformanceResourceDuration(timing),\n size: computeSize(timing),\n }, computePerformanceResourceDetails(timing)),\n };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n span_id: request.spanId.toDecimalString(),\n trace_id: request.traceId.toDecimalString(),\n rule_psr: getRulePsr(configuration),\n },\n };\n}\nfunction computeEntryTracingInfo(entry, configuration) {\n var hasBeenTraced = entry.traceId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n trace_id: entry.traceId,\n rule_psr: getRulePsr(configuration),\n },\n };\n}\n// TODO next major: use directly PerformanceEntry type in domain context\nfunction toPerformanceEntryRepresentation(entry) {\n return entry;\n}\n/**\n * @returns number between 0 and 1 which represents trace sample rate\n */\nfunction getRulePsr(configuration) {\n return isNumber(configuration.traceSampleRate) ? configuration.traceSampleRate / 100 : undefined;\n}\nfunction computeIndexingInfo(sessionManager, resourceStart) {\n var session = sessionManager.findTrackedSession(resourceStart.relative);\n return {\n _dd: {\n discarded: !session || !session.resourceAllowed,\n },\n };\n}\nfunction computePageStateInfo(pageStateHistory, startClocks, duration) {\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.RESOURCE_PAGE_STATES)) {\n return;\n }\n return {\n _dd: {\n page_states: pageStateHistory.findAll(startClocks.relative, duration),\n page_was_discarded: String(document.wasDiscarded),\n },\n };\n}\nfunction computeRequestDuration(pageStateHistory, startClocks, duration) {\n var _a;\n // TODO remove FF in next major\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.NO_RESOURCE_DURATION_FROZEN_STATE)) {\n return toServerDuration(duration);\n }\n var requestCrossedFrozenState = (_a = pageStateHistory\n .findAll(startClocks.relative, duration)) === null || _a === void 0 ? void 0 : _a.some(function (pageState) { return pageState.state === \"frozen\" /* PageState.FROZEN */; });\n return !requestCrossedFrozenState ? toServerDuration(duration) : undefined;\n}\n","import { toServerDuration } from '@datadog/browser-core';\n// Todo: Remove in the next major release\nexport function mapToForegroundPeriods(pageStateServerEntries, duration) {\n var foregroundPeriods = [];\n for (var i = 0; i < pageStateServerEntries.length; i++) {\n var current = pageStateServerEntries[i];\n var next = pageStateServerEntries[i + 1];\n if (current.state === \"active\" /* PageState.ACTIVE */) {\n var start = current.start >= 0 ? current.start : 0;\n var end = next ? next.start : toServerDuration(duration);\n foregroundPeriods.push({\n start: start,\n duration: (end - start),\n });\n }\n }\n return foregroundPeriods;\n}\n","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\nimport { monitor } from '@datadog/browser-core';\nvar observer;\nvar interactionCountEstimate = 0;\nvar minKnownInteractionId = Infinity;\nvar maxKnownInteractionId = 0;\nexport function initInteractionCountPolyfill() {\n if ('interactionCount' in performance || observer) {\n return;\n }\n observer = new window.PerformanceObserver(monitor(function (entries) {\n entries.getEntries().forEach(function (e) {\n var entry = e;\n if (entry.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId);\n interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1;\n }\n });\n }));\n observer.observe({ type: 'event', buffered: true, durationThreshold: 0 });\n}\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport var getInteractionCount = function () {\n return observer ? interactionCountEstimate : window.performance.interactionCount || 0;\n};\n","import { Observable, throttle, addEventListener } from '@datadog/browser-core';\nvar viewportObservable;\nexport function initViewportObservable(configuration) {\n if (!viewportObservable) {\n viewportObservable = createViewportObservable(configuration);\n }\n return viewportObservable;\n}\nexport function createViewportObservable(configuration) {\n var observable = new Observable(function () {\n var updateDimension = throttle(function () {\n observable.notify(getViewportDimension());\n }, 200).throttled;\n return addEventListener(configuration, window, \"resize\" /* DOM_EVENT.RESIZE */, updateDimension, { capture: true, passive: true })\n .stop;\n });\n return observable;\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n var visual = window.visualViewport;\n if (visual) {\n return {\n width: Number(visual.width * visual.scale),\n height: Number(visual.height * visual.scale),\n };\n }\n return {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0),\n };\n}\n","export function getScrollX() {\n var scrollX;\n var visual = window.visualViewport;\n if (visual) {\n scrollX = visual.pageLeft - visual.offsetLeft;\n }\n else if (window.scrollX !== undefined) {\n scrollX = window.scrollX;\n }\n else {\n scrollX = window.pageXOffset || 0;\n }\n return Math.round(scrollX);\n}\nexport function getScrollY() {\n var scrollY;\n var visual = window.visualViewport;\n if (visual) {\n scrollY = visual.pageTop - visual.offsetTop;\n }\n else if (window.scrollY !== undefined) {\n scrollY = window.scrollY;\n }\n else {\n scrollY = window.pageYOffset || 0;\n }\n return Math.round(scrollY);\n}\n","import { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift';\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint';\nimport { trackLoadingTime } from './trackLoadingTime';\nimport { trackScrollMetrics } from './trackScrollMetrics';\nexport function trackCommonViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {\n var commonViewMetrics = {};\n var _a = trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadingType, viewStart, function (newLoadingTime) {\n commonViewMetrics.loadingTime = newLoadingTime;\n scheduleViewUpdate();\n }), stopLoadingTimeTracking = _a.stop, setLoadEvent = _a.setLoadEvent;\n var stopScrollMetricsTracking = trackScrollMetrics(configuration, viewStart, function (newScrollMetrics) {\n commonViewMetrics.scroll = newScrollMetrics;\n }).stop;\n var stopCLSTracking = trackCumulativeLayoutShift(configuration, lifeCycle, function (cumulativeLayoutShift) {\n commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n scheduleViewUpdate();\n }).stop;\n var _b = trackInteractionToNextPaint(configuration, viewStart, loadingType, lifeCycle), stopINPTracking = _b.stop, getInteractionToNextPaint = _b.getInteractionToNextPaint;\n return {\n stop: function () {\n stopLoadingTimeTracking();\n stopCLSTracking();\n stopScrollMetricsTracking();\n stopINPTracking();\n },\n setLoadEvent: setLoadEvent,\n getCommonViewMetrics: function () {\n commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint();\n return commonViewMetrics;\n },\n };\n}\n","import { elapsed } from '@datadog/browser-core';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nexport function trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadType, viewStart, callback) {\n var isWaitingForLoadEvent = loadType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */;\n var isWaitingForActivityLoadingTime = true;\n var loadingTimeCandidates = [];\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n callback(Math.max.apply(Math, loadingTimeCandidates));\n }\n }\n var stop = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (event) {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false;\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n }\n invokeCallbackIfAllCandidatesAreReceived();\n }\n }).stop;\n return {\n stop: stop,\n setLoadEvent: function (loadEvent) {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false;\n loadingTimeCandidates.push(loadEvent);\n invokeCallbackIfAllCandidatesAreReceived();\n }\n },\n };\n}\n","import { Observable, ONE_SECOND, elapsed, relativeNow, throttle, addEventListener, monitor, } from '@datadog/browser-core';\nimport { getScrollY } from '../../../browser/scroll';\nimport { getViewportDimension } from '../../../browser/viewportObservable';\n/** Arbitrary scroll throttle duration */\nexport var THROTTLE_SCROLL_DURATION = ONE_SECOND;\nexport function trackScrollMetrics(configuration, viewStart, callback, scrollValues) {\n if (scrollValues === void 0) { scrollValues = createScrollValuesObservable(configuration); }\n var maxScrollDepth = 0;\n var maxScrollHeight = 0;\n var maxScrollHeightTime = 0;\n var subscription = scrollValues.subscribe(function (_a) {\n var scrollDepth = _a.scrollDepth, scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight;\n var shouldUpdate = false;\n if (scrollDepth > maxScrollDepth) {\n maxScrollDepth = scrollDepth;\n shouldUpdate = true;\n }\n if (scrollHeight > maxScrollHeight) {\n maxScrollHeight = scrollHeight;\n var now = relativeNow();\n maxScrollHeightTime = elapsed(viewStart.relative, now);\n shouldUpdate = true;\n }\n if (shouldUpdate) {\n callback({\n maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n maxDepthScrollTop: scrollTop,\n maxScrollHeight: maxScrollHeight,\n maxScrollHeightTime: maxScrollHeightTime,\n });\n }\n });\n return {\n stop: function () { return subscription.unsubscribe(); },\n };\n}\nexport function computeScrollValues() {\n var scrollTop = getScrollY();\n var height = getViewportDimension().height;\n var scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight);\n var scrollDepth = Math.round(height + scrollTop);\n return {\n scrollHeight: scrollHeight,\n scrollDepth: scrollDepth,\n scrollTop: scrollTop,\n };\n}\nexport function createScrollValuesObservable(configuration, throttleDuration) {\n if (throttleDuration === void 0) { throttleDuration = THROTTLE_SCROLL_DURATION; }\n var observable = new Observable(function () {\n function notify() {\n observable.notify(computeScrollValues());\n }\n if (window.ResizeObserver) {\n var throttledNotify_1 = throttle(notify, throttleDuration, {\n leading: false,\n trailing: true,\n });\n var observerTarget_1 = document.scrollingElement || document.documentElement;\n var resizeObserver_1 = new ResizeObserver(monitor(throttledNotify_1.throttled));\n resizeObserver_1.observe(observerTarget_1);\n var eventListener_1 = addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, throttledNotify_1.throttled, {\n passive: true,\n });\n return function () {\n throttledNotify_1.cancel();\n resizeObserver_1.unobserve(observerTarget_1);\n eventListener_1.stop();\n };\n }\n });\n return observable;\n}\n","import { round, find, ONE_SECOND, isExperimentalFeatureEnabled, ExperimentalFeature, noop, } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../../browser/performanceCollection';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(configuration, lifeCycle, callback) {\n if (!isLayoutShiftSupported()) {\n return {\n stop: noop,\n };\n }\n var maxClsValue = 0;\n // if no layout shift happen the value should be reported as 0\n callback({\n value: 0,\n });\n var window = slidingSessionWindow();\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === RumPerformanceEntryType.LAYOUT_SHIFT && !entry.hadRecentInput) {\n window.update(entry);\n if (window.value() > maxClsValue) {\n maxClsValue = window.value();\n var cls = round(maxClsValue, 4);\n var clsTarget = window.largestLayoutShiftTarget();\n var cslTargetSelector = void 0;\n if (isExperimentalFeatureEnabled(ExperimentalFeature.WEB_VITALS_ATTRIBUTION) && clsTarget) {\n cslTargetSelector = getSelectorFromElement(clsTarget, configuration.actionNameAttribute);\n }\n callback({\n value: cls,\n targetSelector: cslTargetSelector,\n });\n }\n }\n }\n }).unsubscribe;\n return {\n stop: stop,\n };\n}\nfunction slidingSessionWindow() {\n var value = 0;\n var startTime;\n var endTime;\n var largestLayoutShift = 0;\n var largestLayoutShiftTarget;\n var largestLayoutShiftTime;\n return {\n update: function (entry) {\n var _a, _b;\n var shouldCreateNewWindow = startTime === undefined ||\n entry.startTime - endTime >= ONE_SECOND ||\n entry.startTime - startTime >= 5 * ONE_SECOND;\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime;\n value = entry.value;\n largestLayoutShift = 0;\n largestLayoutShiftTarget = undefined;\n }\n else {\n value += entry.value;\n endTime = entry.startTime;\n }\n if (entry.value > largestLayoutShift) {\n largestLayoutShift = entry.value;\n largestLayoutShiftTime = entry.startTime;\n if ((_a = entry.sources) === null || _a === void 0 ? void 0 : _a.length) {\n largestLayoutShiftTarget = (_b = find(entry.sources, function (s) { return !!s.node && isElementNode(s.node); })) === null || _b === void 0 ? void 0 : _b.node;\n }\n else {\n largestLayoutShiftTarget = undefined;\n }\n }\n },\n value: function () { return value; },\n largestLayoutShiftTarget: function () { return largestLayoutShiftTarget; },\n largestLayoutShiftTime: function () { return largestLayoutShiftTime; },\n };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT);\n}\n","import { noop, isExperimentalFeatureEnabled, ExperimentalFeature, ONE_MINUTE, addTelemetryDebug, elapsed, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent } from '../../../browser/performanceCollection';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill';\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nvar MAX_INTERACTION_ENTRIES = 10;\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(configuration, viewStart, viewLoadingType, lifeCycle) {\n if (!isInteractionToNextPaintSupported() ||\n !isExperimentalFeatureEnabled(ExperimentalFeature.INTERACTION_TO_NEXT_PAINT)) {\n return {\n getInteractionToNextPaint: function () { return undefined; },\n stop: noop,\n };\n }\n var getViewInteractionCount = trackViewInteractionCount(viewLoadingType).getViewInteractionCount;\n var longestInteractions = trackLongestInteractions(getViewInteractionCount);\n var interactionToNextPaint = -1;\n var interactionToNextPaintTargetSelector;\n var telemetryCollected = false;\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var _a;\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if ((entry.entryType === RumPerformanceEntryType.EVENT ||\n entry.entryType === RumPerformanceEntryType.FIRST_INPUT) &&\n entry.interactionId) {\n longestInteractions.process(entry);\n }\n }\n var newInteraction = longestInteractions.estimateP98Interaction();\n if (newInteraction) {\n interactionToNextPaint = newInteraction.duration;\n if (interactionToNextPaint > 10 * ONE_MINUTE && !telemetryCollected) {\n telemetryCollected = true;\n addTelemetryDebug('INP outlier', {\n inp: interactionToNextPaint,\n interaction: {\n timeFromViewStart: elapsed(viewStart.relative, newInteraction.startTime),\n duration: newInteraction.duration,\n startTime: newInteraction.startTime,\n processingStart: newInteraction.processingStart,\n processingEnd: newInteraction.processingEnd,\n interactionId: newInteraction.interactionId,\n name: newInteraction.name,\n targetNodeName: (_a = newInteraction.target) === null || _a === void 0 ? void 0 : _a.nodeName,\n },\n });\n }\n if (isExperimentalFeatureEnabled(ExperimentalFeature.WEB_VITALS_ATTRIBUTION) &&\n newInteraction.target &&\n isElementNode(newInteraction.target)) {\n interactionToNextPaintTargetSelector = getSelectorFromElement(newInteraction.target, configuration.actionNameAttribute);\n }\n else {\n interactionToNextPaintTargetSelector = undefined;\n }\n }\n }).unsubscribe;\n return {\n getInteractionToNextPaint: function () {\n // If no INP duration where captured because of the performanceObserver 40ms threshold\n // but the view interaction count > 0 then report 0\n if (interactionToNextPaint >= 0) {\n return {\n value: interactionToNextPaint,\n targetSelector: interactionToNextPaintTargetSelector,\n };\n }\n else if (getViewInteractionCount()) {\n return {\n value: 0,\n };\n }\n },\n stop: stop,\n };\n}\nfunction trackLongestInteractions(getViewInteractionCount) {\n var longestInteractions = [];\n function sortAndTrimLongestInteractions() {\n longestInteractions.sort(function (a, b) { return b.duration - a.duration; }).splice(MAX_INTERACTION_ENTRIES);\n }\n return {\n /**\n * Process the performance entry:\n * - if its duration is long enough, add the performance entry to the list of worst interactions\n * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n */\n process: function (entry) {\n var interactionIndex = longestInteractions.findIndex(function (interaction) { return entry.interactionId === interaction.interactionId; });\n var minLongestInteraction = longestInteractions[longestInteractions.length - 1];\n if (interactionIndex !== -1) {\n if (entry.duration > longestInteractions[interactionIndex].duration) {\n longestInteractions[interactionIndex] = entry;\n sortAndTrimLongestInteractions();\n }\n }\n else if (longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n entry.duration > minLongestInteraction.duration) {\n longestInteractions.push(entry);\n sortAndTrimLongestInteractions();\n }\n },\n /**\n * Compute the p98 longest interaction.\n * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n */\n estimateP98Interaction: function () {\n var interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50));\n return longestInteractions[interactionIndex];\n },\n };\n}\nexport function trackViewInteractionCount(viewLoadingType) {\n initInteractionCountPolyfill();\n var previousInteractionCount = viewLoadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */ ? 0 : getInteractionCount();\n return {\n getViewInteractionCount: function () { return getInteractionCount() - previousInteractionCount; },\n };\n}\nexport function isInteractionToNextPaintSupported() {\n return (supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n window.PerformanceEventTiming &&\n 'interactionId' in PerformanceEventTiming.prototype);\n}\n","import { noop, PageExitReason, shallowClone, elapsed, generateUUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, setInterval, clearInterval, setTimeout, Observable, } from '@datadog/browser-core';\nimport { trackViewEventCounts } from './trackViewEventCounts';\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics';\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics';\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport var KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n var activeViews = new Set();\n var currentView = startNewView(\"initial_load\" /* ViewLoadingType.INITIAL_LOAD */, clocksOrigin(), initialViewOptions);\n startViewLifeCycle();\n var locationChangeSubscription;\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n }\n function startNewView(loadingType, startClocks, viewOptions) {\n var newlyCreatedView = newView(lifeCycle, domMutationObservable, configuration, location, loadingType, startClocks, viewOptions);\n activeViews.add(newlyCreatedView);\n newlyCreatedView.stopObservable.subscribe(function () {\n activeViews.delete(newlyCreatedView);\n });\n return newlyCreatedView;\n }\n function startViewLifeCycle() {\n lifeCycle.subscribe(8 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n // Renew view on session renewal\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version,\n });\n });\n lifeCycle.subscribe(7 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n currentView.end({ sessionIsActive: false });\n });\n // End the current view on page unload\n lifeCycle.subscribe(9 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n if (pageExitEvent.reason === PageExitReason.UNLOADING || pageExitEvent.reason === PageExitReason.PAGEHIDE) {\n currentView.end();\n }\n });\n }\n function renewViewOnLocationChange(locationChangeObservable) {\n return locationChangeObservable.subscribe(function (_a) {\n var oldLocation = _a.oldLocation, newLocation = _a.newLocation;\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end();\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */);\n }\n });\n }\n return {\n addTiming: function (name, time) {\n if (time === void 0) { time = timeStampNow(); }\n currentView.addTiming(name, time);\n },\n startView: function (options, startClocks) {\n currentView.end({ endClocks: startClocks });\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, startClocks, options);\n },\n stop: function () {\n locationChangeSubscription === null || locationChangeSubscription === void 0 ? void 0 : locationChangeSubscription.unsubscribe();\n currentView.end();\n activeViews.forEach(function (view) { return view.stop(); });\n },\n };\n}\nfunction newView(lifeCycle, domMutationObservable, configuration, initialLocation, loadingType, startClocks, viewOptions) {\n if (startClocks === void 0) { startClocks = clocksNow(); }\n // Setup initial values\n var id = generateUUID();\n var stopObservable = new Observable();\n var customTimings = {};\n var documentVersion = 0;\n var endClocks;\n var location = shallowClone(initialLocation);\n var sessionIsActive = true;\n var name;\n var service;\n var version;\n if (viewOptions) {\n name = viewOptions.name;\n service = viewOptions.service;\n version = viewOptions.version;\n }\n lifeCycle.notify(2 /* LifeCycleEventType.VIEW_CREATED */, {\n id: id,\n name: name,\n startClocks: startClocks,\n service: service,\n version: version,\n });\n // Update the view every time the measures are changing\n var _a = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {\n leading: false,\n }), scheduleViewUpdate = _a.throttled, cancelScheduleViewUpdate = _a.cancel;\n var _b = trackCommonViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, startClocks), setLoadEvent = _b.setLoadEvent, stopCommonViewMetricsTracking = _b.stop, getCommonViewMetrics = _b.getCommonViewMetrics;\n var _c = loadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */\n ? trackInitialViewMetrics(lifeCycle, configuration, setLoadEvent, scheduleViewUpdate)\n : { stop: noop, initialViewMetrics: {} }, stopInitialViewMetricsTracking = _c.stop, initialViewMetrics = _c.initialViewMetrics;\n var _d = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate), stopEventCountsTracking = _d.stop, eventCounts = _d.eventCounts;\n // Session keep alive\n var keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);\n // Initial view update\n triggerViewUpdate();\n function triggerViewUpdate() {\n cancelScheduleViewUpdate();\n documentVersion += 1;\n var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n lifeCycle.notify(3 /* LifeCycleEventType.VIEW_UPDATED */, {\n customTimings: customTimings,\n documentVersion: documentVersion,\n id: id,\n name: name,\n service: service,\n version: version,\n loadingType: loadingType,\n location: location,\n startClocks: startClocks,\n commonViewMetrics: getCommonViewMetrics(),\n initialViewMetrics: initialViewMetrics,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n sessionIsActive: sessionIsActive,\n eventCounts: eventCounts,\n });\n }\n return {\n name: name,\n service: service,\n version: version,\n stopObservable: stopObservable,\n end: function (options) {\n var _this = this;\n var _a, _b;\n if (options === void 0) { options = {}; }\n if (endClocks) {\n // view already ended\n return;\n }\n endClocks = (_a = options.endClocks) !== null && _a !== void 0 ? _a : clocksNow();\n sessionIsActive = (_b = options.sessionIsActive) !== null && _b !== void 0 ? _b : true;\n lifeCycle.notify(4 /* LifeCycleEventType.VIEW_ENDED */, { endClocks: endClocks });\n clearInterval(keepAliveIntervalId);\n stopCommonViewMetricsTracking();\n triggerViewUpdate();\n setTimeout(function () {\n _this.stop();\n }, KEEP_TRACKING_AFTER_VIEW_DELAY);\n },\n stop: function () {\n stopInitialViewMetricsTracking();\n stopEventCountsTracking();\n stopObservable.notify();\n },\n addTiming: function (name, time) {\n if (endClocks) {\n return;\n }\n var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n customTimings[sanitizeTiming(name)] = relativeTime;\n scheduleViewUpdate();\n },\n };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n if (sanitized !== name) {\n display.warn(\"Invalid timing name: \".concat(name, \", sanitized to: \").concat(sanitized));\n }\n return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n return (currentLocation.pathname !== otherLocation.pathname ||\n (!isHashAnAnchor(otherLocation.hash) &&\n getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash)));\n}\nfunction isHashAnAnchor(hash) {\n var correspondingId = hash.substr(1);\n return !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n var index = hash.indexOf('?');\n return index < 0 ? hash : hash.slice(0, index);\n}\n","import { trackFirstContentfulPaint } from './trackFirstContentfulPaint';\nimport { trackFirstInput } from './trackFirstInput';\nimport { trackNavigationTimings } from './trackNavigationTimings';\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackInitialViewMetrics(lifeCycle, configuration, setLoadEvent, scheduleViewUpdate) {\n var initialViewMetrics = {};\n var stopNavigationTracking = trackNavigationTimings(lifeCycle, function (navigationTimings) {\n setLoadEvent(navigationTimings.loadEvent);\n initialViewMetrics.navigationTimings = navigationTimings;\n scheduleViewUpdate();\n }).stop;\n var firstHidden = trackFirstHidden(configuration);\n var stopFCPTracking = trackFirstContentfulPaint(lifeCycle, firstHidden, function (firstContentfulPaint) {\n initialViewMetrics.firstContentfulPaint = firstContentfulPaint;\n scheduleViewUpdate();\n }).stop;\n var stopLCPTracking = trackLargestContentfulPaint(lifeCycle, configuration, firstHidden, window, function (largestContentfulPaint) {\n initialViewMetrics.largestContentfulPaint = largestContentfulPaint;\n scheduleViewUpdate();\n }).stop;\n var stopFIDTracking = trackFirstInput(lifeCycle, configuration, firstHidden, function (firstInput) {\n initialViewMetrics.firstInput = firstInput;\n scheduleViewUpdate();\n }).stop;\n function stop() {\n stopNavigationTracking();\n stopFCPTracking();\n stopLCPTracking();\n stopFIDTracking();\n firstHidden.stop();\n }\n return {\n stop: stop,\n initialViewMetrics: initialViewMetrics,\n };\n}\n","import { relativeNow } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection';\nexport function trackNavigationTimings(lifeCycle, callback) {\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === RumPerformanceEntryType.NAVIGATION) {\n callback({\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined,\n });\n }\n }\n }).unsubscribe;\n return { stop: stop };\n}\n","import { addEventListeners } from '@datadog/browser-core';\nexport function trackFirstHidden(configuration, eventTarget) {\n if (eventTarget === void 0) { eventTarget = window; }\n var timeStamp;\n var stopListeners;\n if (document.visibilityState === 'hidden') {\n timeStamp = 0;\n }\n else {\n timeStamp = Infinity;\n (stopListeners = addEventListeners(configuration, eventTarget, [\"pagehide\" /* DOM_EVENT.PAGE_HIDE */, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */], function (event) {\n if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */ || document.visibilityState === 'hidden') {\n timeStamp = event.timeStamp;\n stopListeners();\n }\n }, { capture: true }).stop);\n }\n return {\n get timeStamp() {\n return timeStamp;\n },\n stop: function () {\n stopListeners === null || stopListeners === void 0 ? void 0 : stopListeners();\n },\n };\n}\n","import { ONE_MINUTE, find } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection';\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackFirstContentfulPaint(lifeCycle, firstHidden, callback) {\n var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var fcpEntry = find(entries, function (entry) {\n return entry.entryType === RumPerformanceEntryType.PAINT &&\n entry.name === 'first-contentful-paint' &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < FCP_MAXIMUM_DELAY;\n });\n if (fcpEntry) {\n callback(fcpEntry.startTime);\n }\n }).unsubscribe;\n return {\n stop: unsubscribeLifeCycle,\n };\n}\n","import { ExperimentalFeature, ONE_MINUTE, addEventListeners, findLast, isExperimentalFeatureEnabled, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(lifeCycle, configuration, firstHidden, eventTarget, callback) {\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n var firstInteractionTimestamp = Infinity;\n var stopEventListener = addEventListeners(configuration, eventTarget, [\"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */], function (event) {\n firstInteractionTimestamp = event.timeStamp;\n }, { capture: true, once: true }).stop;\n var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var lcpEntry = findLast(entries, function (entry) {\n return entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n entry.startTime < firstInteractionTimestamp &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < LCP_MAXIMUM_DELAY;\n });\n if (lcpEntry) {\n var lcpTargetSelector = void 0;\n if (isExperimentalFeatureEnabled(ExperimentalFeature.WEB_VITALS_ATTRIBUTION) && lcpEntry.element) {\n lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute);\n }\n callback({\n value: lcpEntry.startTime,\n targetSelector: lcpTargetSelector,\n });\n }\n }).unsubscribe;\n return {\n stop: function () {\n stopEventListener();\n unsubscribeLifeCycle();\n },\n };\n}\n","import { elapsed, find, ExperimentalFeature, isExperimentalFeatureEnabled } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(lifeCycle, configuration, firstHidden, callback) {\n var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var firstInputEntry = find(entries, function (entry) {\n return entry.entryType === RumPerformanceEntryType.FIRST_INPUT && entry.startTime < firstHidden.timeStamp;\n });\n if (firstInputEntry) {\n var firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n var firstInputTargetSelector = void 0;\n if (isExperimentalFeatureEnabled(ExperimentalFeature.WEB_VITALS_ATTRIBUTION) &&\n firstInputEntry.target &&\n isElementNode(firstInputEntry.target)) {\n firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute);\n }\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n delay: firstInputDelay >= 0 ? firstInputDelay : 0,\n time: firstInputEntry.startTime,\n targetSelector: firstInputTargetSelector,\n });\n }\n }).unsubscribe;\n return {\n stop: unsubscribeLifeCycle,\n };\n}\n","import { trackEventCounts } from '../trackEventCounts';\nexport function trackViewEventCounts(lifeCycle, viewId, onChange) {\n var _a = trackEventCounts({\n lifeCycle: lifeCycle,\n isChildEvent: function (event) { return event.view.id === viewId; },\n onChange: onChange,\n }), stop = _a.stop, eventCounts = _a.eventCounts;\n return {\n stop: stop,\n eventCounts: eventCounts,\n };\n}\n","import { isExperimentalFeatureEnabled, ExperimentalFeature, isEmptyObject, mapValues, toServerDuration, isNumber, } from '@datadog/browser-core';\nimport { mapToForegroundPeriods } from '../contexts/foregroundContexts';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions) {\n lifeCycle.subscribe(3 /* LifeCycleEventType.VIEW_UPDATED */, function (view) {\n return lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory));\n });\n return trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n var replayStats = recorderApi.getReplayStats(view.id);\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(view.startClocks.relative);\n var pageStatesEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGE_STATES);\n var pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration);\n var viewEvent = {\n _dd: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n page_states: pageStatesEnabled ? pageStates : undefined,\n },\n date: view.startClocks.timeStamp,\n type: \"view\" /* RumEventType.VIEW */,\n view: {\n action: {\n count: view.eventCounts.actionCount,\n },\n frustration: {\n count: view.eventCounts.frustrationCount,\n },\n cumulative_layout_shift: (_a = view.commonViewMetrics.cumulativeLayoutShift) === null || _a === void 0 ? void 0 : _a.value,\n cumulative_layout_shift_target_selector: (_b = view.commonViewMetrics.cumulativeLayoutShift) === null || _b === void 0 ? void 0 : _b.targetSelector,\n first_byte: toServerDuration((_c = view.initialViewMetrics.navigationTimings) === null || _c === void 0 ? void 0 : _c.firstByte),\n dom_complete: toServerDuration((_d = view.initialViewMetrics.navigationTimings) === null || _d === void 0 ? void 0 : _d.domComplete),\n dom_content_loaded: toServerDuration((_e = view.initialViewMetrics.navigationTimings) === null || _e === void 0 ? void 0 : _e.domContentLoaded),\n dom_interactive: toServerDuration((_f = view.initialViewMetrics.navigationTimings) === null || _f === void 0 ? void 0 : _f.domInteractive),\n error: {\n count: view.eventCounts.errorCount,\n },\n first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n first_input_delay: toServerDuration((_g = view.initialViewMetrics.firstInput) === null || _g === void 0 ? void 0 : _g.delay),\n first_input_time: toServerDuration((_h = view.initialViewMetrics.firstInput) === null || _h === void 0 ? void 0 : _h.time),\n first_input_target_selector: (_j = view.initialViewMetrics.firstInput) === null || _j === void 0 ? void 0 : _j.targetSelector,\n interaction_to_next_paint: toServerDuration((_k = view.commonViewMetrics.interactionToNextPaint) === null || _k === void 0 ? void 0 : _k.value),\n interaction_to_next_paint_target_selector: (_l = view.commonViewMetrics.interactionToNextPaint) === null || _l === void 0 ? void 0 : _l.targetSelector,\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration((_m = view.initialViewMetrics.largestContentfulPaint) === null || _m === void 0 ? void 0 : _m.value),\n largest_contentful_paint_target_selector: (_o = view.initialViewMetrics.largestContentfulPaint) === null || _o === void 0 ? void 0 : _o.targetSelector,\n load_event: toServerDuration((_p = view.initialViewMetrics.navigationTimings) === null || _p === void 0 ? void 0 : _p.loadEvent),\n loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount,\n },\n resource: {\n count: view.eventCounts.resourceCount,\n },\n time_spent: toServerDuration(view.duration),\n in_foreground_periods: !pageStatesEnabled && pageStates ? mapToForegroundPeriods(pageStates, view.duration) : undefined, // Todo: Remove in the next major release\n },\n feature_flags: featureFlagContext && !isEmptyObject(featureFlagContext) ? featureFlagContext : undefined,\n display: view.commonViewMetrics.scroll\n ? {\n scroll: {\n max_depth: view.commonViewMetrics.scroll.maxDepth,\n max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime),\n },\n }\n : undefined,\n session: {\n has_replay: replayStats ? true : undefined,\n is_active: view.sessionIsActive ? undefined : false,\n },\n privacy: {\n replay_level: configuration.defaultPrivacyLevel,\n },\n };\n if (!isEmptyObject(view.customTimings)) {\n viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n }\n return {\n rawRumEvent: viewEvent,\n startTime: view.startClocks.relative,\n domainContext: {\n location: view.location,\n },\n };\n}\nfunction discardNegativeDuration(duration) {\n return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n","import { ValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState) {\n // TODO - Improve configuration type and remove assertion\n var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);\n stopCallbacks.push(function () { return sessionStore.stop(); });\n var sessionContextHistory = new ValueHistory(SESSION_CONTEXT_TIMEOUT_DELAY);\n stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n });\n sessionStore.expireObservable.subscribe(function () {\n sessionContextHistory.closeActive(relativeNow());\n });\n sessionStore.expandOrRenewSession();\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n trackActivity(configuration, function () { return sessionStore.expandOrRenewSession(); });\n trackVisibility(configuration, function () { return sessionStore.expandSession(); });\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey],\n };\n }\n return {\n findActiveSession: function (startTime) { return sessionContextHistory.find(startTime); },\n renewObservable: sessionStore.renewObservable,\n expireObservable: sessionStore.expireObservable,\n expire: sessionStore.expire,\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) { return e(); });\n stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n var stop = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n };\n var stop = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n stopCallbacks.push(stop);\n var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval);\n });\n}\n","import { Observable, noop, performDraw, startSessionManager } from '@datadog/browser-core';\nexport var RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle) {\n var sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, function (rawTrackingType) {\n return computeSessionState(configuration, rawTrackingType);\n });\n sessionManager.expireObservable.subscribe(function () {\n lifeCycle.notify(7 /* LifeCycleEventType.SESSION_EXPIRED */);\n });\n sessionManager.renewObservable.subscribe(function () {\n lifeCycle.notify(8 /* LifeCycleEventType.SESSION_RENEWED */);\n });\n return {\n findTrackedSession: function (startTime) {\n var session = sessionManager.findActiveSession(startTime);\n if (!session || !isTypeTracked(session.trackingType)) {\n return;\n }\n var plan = session.trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */\n ? 2 /* RumSessionPlan.WITH_SESSION_REPLAY */\n : 1 /* RumSessionPlan.WITHOUT_SESSION_REPLAY */;\n return {\n id: session.id,\n plan: plan,\n sessionReplayAllowed: plan === 2 /* RumSessionPlan.WITH_SESSION_REPLAY */,\n longTaskAllowed: configuration.trackLongTasks !== undefined\n ? configuration.trackLongTasks\n : configuration.oldPlansBehavior && plan === 2 /* RumSessionPlan.WITH_SESSION_REPLAY */,\n resourceAllowed: configuration.trackResources !== undefined\n ? configuration.trackResources\n : configuration.oldPlansBehavior && plan === 2 /* RumSessionPlan.WITH_SESSION_REPLAY */,\n };\n },\n expire: sessionManager.expire,\n expireObservable: sessionManager.expireObservable,\n };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n var session = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n plan: 1 /* RumSessionPlan.WITHOUT_SESSION_REPLAY */,\n sessionReplayAllowed: false,\n longTaskAllowed: true,\n resourceAllowed: true,\n };\n return {\n findTrackedSession: function () { return session; },\n expire: noop,\n expireObservable: new Observable(),\n };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n var trackingType;\n if (hasValidRumSession(rawTrackingType)) {\n trackingType = rawTrackingType;\n }\n else if (!performDraw(configuration.sessionSampleRate)) {\n trackingType = \"0\" /* RumTrackingType.NOT_TRACKED */;\n }\n else if (!performDraw(configuration.sessionReplaySampleRate)) {\n trackingType = \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n }\n else {\n trackingType = \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n }\n return {\n trackingType: trackingType,\n isTracked: isTypeTracked(trackingType),\n };\n}\nfunction hasValidRumSession(trackingType) {\n return (trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */ ||\n trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ ||\n trackingType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */);\n}\nfunction isTypeTracked(rumSessionType) {\n return (rumSessionType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */ ||\n rumSessionType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */);\n}\n","import { display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageExitObservable';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nvar Batch = /** @class */ (function () {\n function Batch(request, flushController, messageBytesLimit) {\n var _this = this;\n this.request = request;\n this.flushController = flushController;\n this.messageBytesLimit = messageBytesLimit;\n this.pushOnlyBuffer = [];\n this.upsertBuffer = {};\n this.flushSubscription = this.flushController.flushObservable.subscribe(function (event) { return _this.flush(event); });\n }\n Batch.prototype.add = function (message) {\n this.addOrUpdate(message);\n };\n Batch.prototype.upsert = function (message, key) {\n this.addOrUpdate(message, key);\n };\n Batch.prototype.stop = function () {\n this.flushSubscription.unsubscribe();\n };\n Batch.prototype.flush = function (event) {\n var messages = this.pushOnlyBuffer.concat(objectValues(this.upsertBuffer));\n this.pushOnlyBuffer = [];\n this.upsertBuffer = {};\n var payload = { data: messages.join('\\n'), bytesCount: event.bytesCount, flushReason: event.reason };\n if (isPageExitReason(event.reason)) {\n this.request.sendOnExit(payload);\n }\n else {\n this.request.send(payload);\n }\n };\n Batch.prototype.addOrUpdate = function (message, key) {\n var _a = this.process(message), processedMessage = _a.processedMessage, messageBytesCount = _a.messageBytesCount;\n if (messageBytesCount >= this.messageBytesLimit) {\n display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(this.messageBytesLimit, \"KB.\"));\n return;\n }\n if (this.hasMessageFor(key)) {\n this.remove(key);\n }\n this.push(processedMessage, messageBytesCount, key);\n };\n Batch.prototype.process = function (message) {\n var processedMessage = jsonStringify(message);\n var messageBytesCount = computeBytesCount(processedMessage);\n return { processedMessage: processedMessage, messageBytesCount: messageBytesCount };\n };\n Batch.prototype.push = function (processedMessage, messageBytesCount, key) {\n // If there are other messages, a '\\n' will be added at serialization\n var separatorBytesCount = this.flushController.messagesCount > 0 ? 1 : 0;\n this.flushController.notifyBeforeAddMessage(messageBytesCount + separatorBytesCount);\n if (key !== undefined) {\n this.upsertBuffer[key] = processedMessage;\n }\n else {\n this.pushOnlyBuffer.push(processedMessage);\n }\n this.flushController.notifyAfterAddMessage();\n };\n Batch.prototype.remove = function (key) {\n var removedMessage = this.upsertBuffer[key];\n delete this.upsertBuffer[key];\n var messageBytesCount = computeBytesCount(removedMessage);\n // If there are other messages, a '\\n' will be added at serialization\n var separatorBytesCount = this.flushController.messagesCount > 1 ? 1 : 0;\n this.flushController.notifyAfterRemoveMessage(messageBytesCount + separatorBytesCount);\n };\n Batch.prototype.hasMessageFor = function (key) {\n return key !== undefined && this.upsertBuffer[key] !== undefined;\n };\n return Batch;\n}());\nexport { Batch };\n","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, endpointType, reportError) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, {\n onSuccess: function () { return retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, endpointType, reportError); },\n onFailure: function () {\n state.queuedPayloads.enqueue(payload);\n scheduleRetry(state, sendStrategy, endpointType, reportError);\n },\n });\n }\n else {\n state.queuedPayloads.enqueue(payload);\n }\n}\nfunction scheduleRetry(state, sendStrategy, endpointType, reportError) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(function () {\n var payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, endpointType, reportError);\n },\n onFailure: function () {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, endpointType, reportError);\n },\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, function (response) {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n onSuccess();\n }\n else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n };\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, endpointType, reportError) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: \"Reached max \".concat(endpointType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n state.queueFullReported = true;\n }\n var previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, endpointType, reportError);\n }\n}\nfunction shouldRetryRequest(response) {\n return (response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status)));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n };\n}\nfunction newPayloadQueue() {\n var queue = [];\n return {\n bytesCount: 0,\n enqueue: function (payload) {\n if (this.isFull()) {\n return;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n },\n first: function () {\n return queue[0];\n },\n dequeue: function () {\n var payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size: function () {\n return queue.length;\n },\n isFull: function () {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n },\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle: function (payload) {\n return (this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n },\n add: function (payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove: function (payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n },\n };\n}\n","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(configuration, endpointBuilder, bytesLimit, reportError) {\n var retryState = newRetryState();\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse);\n };\n return {\n send: function (payload) {\n sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.endpointType, reportError);\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload);\n },\n };\n}\nfunction sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload) {\n var canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n var beaconUrl = endpointBuilder.build('beacon', payload);\n var isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n if (isQueued) {\n return;\n }\n }\n catch (e) {\n reportBeaconError(e);\n }\n }\n var xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(configuration, xhrUrl, payload.data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n addTelemetryError(e);\n }\n}\nexport function fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse) {\n var canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n var fetchUrl = endpointBuilder.build('fetch', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type }); }), monitor(function () {\n var xhrUrl = endpointBuilder.build('xhr', payload);\n // failed to queue the request\n sendXHR(configuration, xhrUrl, payload.data, onResponse);\n }));\n }\n else {\n var xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(configuration, xhrUrl, payload.data, onResponse);\n }\n}\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a');\n }\n catch (_a) {\n return false;\n }\n}\nexport function sendXHR(configuration, url, data, onResponse) {\n var request = new XMLHttpRequest();\n request.open('POST', url, true);\n addEventListener(configuration, request, 'loadend', function () {\n onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n }, {\n // prevent multiple onResponse callbacks\n // if the xhr instance is reused by a third party\n once: true,\n });\n request.send(data);\n}\n","import { isEmptyObject, includes, performDraw, ONE_SECOND, addTelemetryDebug, setInterval } from '@datadog/browser-core';\nexport var MEASURES_PERIOD_DURATION = 10 * ONE_SECOND;\nvar currentPeriodMeasures;\nvar currentBatchMeasures;\nvar batchHasRumEvent;\nexport function startCustomerDataTelemetry(configuration, telemetry, lifeCycle, globalContextManager, userContextManager, featureFlagContexts, batchFlushObservable) {\n var customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate);\n if (!customerDataTelemetryEnabled) {\n return;\n }\n initCurrentPeriodMeasures();\n initCurrentBatchMeasures();\n // We measure the data of every view updates even if there could only be one per batch due to the upsert\n // It means that contexts bytes count sums can be higher than it really is\n lifeCycle.subscribe(11 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n batchHasRumEvent = true;\n updateMeasure(currentBatchMeasures.globalContextBytes, !isEmptyObject(globalContextManager.get()) ? globalContextManager.getBytesCount() : 0);\n updateMeasure(currentBatchMeasures.userContextBytes, !isEmptyObject(userContextManager.get()) ? userContextManager.getBytesCount() : 0);\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations();\n var hasFeatureFlagContext = includes([\"view\" /* RumEventType.VIEW */, \"error\" /* RumEventType.ERROR */], event.type) &&\n featureFlagContext &&\n !isEmptyObject(featureFlagContext);\n updateMeasure(currentBatchMeasures.featureFlagBytes, hasFeatureFlagContext ? featureFlagContexts.getFeatureFlagBytesCount() : 0);\n });\n batchFlushObservable.subscribe(function (_a) {\n var bytesCount = _a.bytesCount, messagesCount = _a.messagesCount;\n // Don't measure batch that only contains telemetry events to avoid batch sending loop\n // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n if (!batchHasRumEvent) {\n return;\n }\n currentPeriodMeasures.batchCount += 1;\n updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount);\n updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount);\n mergeMeasure(currentPeriodMeasures.globalContextBytes, currentBatchMeasures.globalContextBytes);\n mergeMeasure(currentPeriodMeasures.userContextBytes, currentBatchMeasures.userContextBytes);\n mergeMeasure(currentPeriodMeasures.featureFlagBytes, currentBatchMeasures.featureFlagBytes);\n initCurrentBatchMeasures();\n });\n setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION);\n}\nfunction sendCurrentPeriodMeasures() {\n if (currentPeriodMeasures.batchCount === 0) {\n return;\n }\n addTelemetryDebug('Customer data measures', currentPeriodMeasures);\n initCurrentPeriodMeasures();\n}\nfunction createMeasure() {\n return { min: Infinity, max: 0, sum: 0 };\n}\nfunction updateMeasure(measure, value) {\n measure.sum += value;\n measure.min = Math.min(measure.min, value);\n measure.max = Math.max(measure.max, value);\n}\nfunction mergeMeasure(target, source) {\n target.sum += source.sum;\n target.min = Math.min(target.min, source.min);\n target.max = Math.max(target.max, source.max);\n}\nfunction initCurrentPeriodMeasures() {\n currentPeriodMeasures = {\n batchCount: 0,\n batchBytesCount: createMeasure(),\n batchMessagesCount: createMeasure(),\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure(),\n };\n}\nfunction initCurrentBatchMeasures() {\n batchHasRumEvent = false;\n currentBatchMeasures = {\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure(),\n };\n}\n","import { combine, isTelemetryReplicationAllowed, startBatchWithReplica } from '@datadog/browser-core';\nexport function startRumBatch(configuration, lifeCycle, telemetryEventObservable, reportError, pageExitObservable, sessionExpireObservable) {\n var replica = configuration.replica;\n var batch = startBatchWithReplica(configuration, {\n endpoint: configuration.rumEndpointBuilder,\n }, replica && {\n endpoint: replica.rumEndpointBuilder,\n transformMessage: function (message) { return combine(message, { application: { id: replica.applicationId } }); },\n }, reportError, pageExitObservable, sessionExpireObservable);\n lifeCycle.subscribe(11 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n if (serverRumEvent.type === \"view\" /* RumEventType.VIEW */) {\n batch.upsert(serverRumEvent, serverRumEvent.view.id);\n }\n else {\n batch.add(serverRumEvent);\n }\n });\n telemetryEventObservable.subscribe(function (event) { return batch.add(event, isTelemetryReplicationAllowed(configuration)); });\n return batch;\n}\n","import { Batch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nimport { createFlushController } from './flushController';\nexport function startBatchWithReplica(configuration, primary, replica, reportError, pageExitObservable, sessionExpireObservable) {\n var primaryBatch = createBatch(configuration, primary.endpoint);\n var replicaBatch = replica && createBatch(configuration, replica.endpoint);\n function createBatch(configuration, endpointBuilder) {\n return new Batch(createHttpRequest(configuration, endpointBuilder, configuration.batchBytesLimit, reportError), createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable: pageExitObservable,\n sessionExpireObservable: sessionExpireObservable,\n }), configuration.messageBytesLimit);\n }\n return {\n flushObservable: primaryBatch.flushController.flushObservable,\n add: function (message, replicated) {\n if (replicated === void 0) { replicated = true; }\n primaryBatch.add(message);\n if (replicaBatch && replicated) {\n replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message);\n }\n },\n upsert: function (message, key) {\n primaryBatch.upsert(message, key);\n if (replicaBatch) {\n replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key);\n }\n },\n stop: function () {\n primaryBatch.stop();\n replicaBatch === null || replicaBatch === void 0 ? void 0 : replicaBatch.stop();\n },\n };\n}\n","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController(_a) {\n var messagesLimit = _a.messagesLimit, bytesLimit = _a.bytesLimit, durationLimit = _a.durationLimit, pageExitObservable = _a.pageExitObservable, sessionExpireObservable = _a.sessionExpireObservable;\n var pageExitSubscription = pageExitObservable.subscribe(function (event) { return flush(event.reason); });\n var sessionExpireSubscription = sessionExpireObservable.subscribe(function () { return flush('session_expire'); });\n var flushObservable = new Observable(function () { return function () {\n pageExitSubscription.unsubscribe();\n sessionExpireSubscription.unsubscribe();\n }; });\n var currentBytesCount = 0;\n var currentMessagesCount = 0;\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return;\n }\n var messagesCount = currentMessagesCount;\n var bytesCount = currentBytesCount;\n currentMessagesCount = 0;\n currentBytesCount = 0;\n cancelDurationLimitTimeout();\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount,\n });\n }\n var durationLimitTimeoutId;\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit');\n }, durationLimit);\n }\n }\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId);\n durationLimitTimeoutId = undefined;\n }\n return {\n flushObservable: flushObservable,\n get messagesCount() {\n return currentMessagesCount;\n },\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n */\n notifyBeforeAddMessage: function (messageBytesCount) {\n if (currentBytesCount + messageBytesCount >= bytesLimit) {\n flush('bytes_limit');\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1;\n currentBytesCount += messageBytesCount;\n scheduleDurationLimitTimeout();\n },\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n */\n notifyAfterAddMessage: function () {\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit');\n }\n else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit');\n }\n },\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n */\n notifyAfterRemoveMessage: function (messageBytesCount) {\n currentBytesCount -= messageBytesCount;\n currentMessagesCount -= 1;\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout();\n }\n },\n };\n}\n","import { elapsed, ValueHistory, SESSION_TIME_OUT_DELAY, toServerDuration, addEventListeners, relativeNow, } from '@datadog/browser-core';\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport var MAX_PAGE_STATE_ENTRIES = 4000;\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport var MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;\nexport var PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startPageStateHistory(configuration, maxPageStateEntriesSelectable) {\n if (maxPageStateEntriesSelectable === void 0) { maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE; }\n var pageStateHistory = new ValueHistory(PAGE_STATE_CONTEXT_TIME_OUT_DELAY, MAX_PAGE_STATE_ENTRIES);\n var currentPageState;\n addPageState(getPageState(), relativeNow());\n var stopEventListeners = addEventListeners(configuration, window, [\n \"pageshow\" /* DOM_EVENT.PAGE_SHOW */,\n \"focus\" /* DOM_EVENT.FOCUS */,\n \"blur\" /* DOM_EVENT.BLUR */,\n \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */,\n \"resume\" /* DOM_EVENT.RESUME */,\n \"freeze\" /* DOM_EVENT.FREEZE */,\n \"pagehide\" /* DOM_EVENT.PAGE_HIDE */,\n ], function (event) {\n // Only get events fired by the browser to avoid false currentPageState changes done with custom events\n // cf: developer extension auto flush: https://github.com/DataDog/browser-sdk/blob/2f72bf05a672794c9e33965351964382a94c72ba/developer-extension/src/panel/flushEvents.ts#L11-L12\n if (event.isTrusted) {\n addPageState(computePageState(event), event.timeStamp);\n }\n }, { capture: true }).stop;\n function addPageState(nextPageState, startTime) {\n if (startTime === void 0) { startTime = relativeNow(); }\n if (nextPageState === currentPageState) {\n return;\n }\n currentPageState = nextPageState;\n pageStateHistory.closeActive(startTime);\n pageStateHistory.add({ state: currentPageState, startTime: startTime }, startTime);\n }\n return {\n findAll: function (eventStartTime, duration) {\n var pageStateEntries = pageStateHistory.findAll(eventStartTime, duration);\n if (pageStateEntries.length === 0) {\n return;\n }\n var pageStateServerEntries = [];\n // limit the number of entries to return\n var limit = Math.max(0, pageStateEntries.length - maxPageStateEntriesSelectable);\n // loop page state entries backward to return the selected ones in desc order\n for (var index = pageStateEntries.length - 1; index >= limit; index--) {\n var pageState = pageStateEntries[index];\n // compute the start time relative to the event start time (ex: to be relative to the view start time)\n var relativeStartTime = elapsed(eventStartTime, pageState.startTime);\n pageStateServerEntries.push({\n state: pageState.state,\n start: toServerDuration(relativeStartTime),\n });\n }\n return pageStateServerEntries;\n },\n isInActivePageStateAt: function (startTime) {\n var pageStateEntry = pageStateHistory.find(startTime);\n return pageStateEntry !== undefined && pageStateEntry.state === \"active\" /* PageState.ACTIVE */;\n },\n addPageState: addPageState,\n stop: function () {\n stopEventListeners();\n pageStateHistory.stop();\n },\n };\n}\nfunction computePageState(event) {\n if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n return \"frozen\" /* PageState.FROZEN */;\n }\n else if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */) {\n return event.persisted ? \"frozen\" /* PageState.FROZEN */ : \"terminated\" /* PageState.TERMINATED */;\n }\n return getPageState();\n}\nfunction getPageState() {\n if (document.visibilityState === 'hidden') {\n return \"hidden\" /* PageState.HIDDEN */;\n }\n if (document.hasFocus()) {\n return \"active\" /* PageState.ACTIVE */;\n }\n return \"passive\" /* PageState.PASSIVE */;\n}\n","import { assign, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nexport function assembleIncrementalSnapshot(source, data) {\n return {\n data: assign({\n source: source,\n }, data),\n type: RecordType.IncrementalSnapshot,\n timestamp: timeStampNow(),\n };\n}\n","export var RecordType = {\n FullSnapshot: 2,\n IncrementalSnapshot: 3,\n Meta: 4,\n Focus: 6,\n ViewEnd: 7,\n VisualViewport: 8,\n FrustrationRecord: 9,\n};\nexport var NodeType = {\n Document: 0,\n DocumentType: 1,\n Element: 2,\n Text: 3,\n CDATA: 4,\n DocumentFragment: 11,\n};\nexport var IncrementalSource = {\n Mutation: 0,\n MouseMove: 1,\n MouseInteraction: 2,\n Scroll: 3,\n ViewportResize: 4,\n Input: 5,\n TouchMove: 6,\n MediaInteraction: 7,\n StyleSheetRule: 8,\n // CanvasMutation : 9,\n // Font : 10,\n};\nexport var MouseInteractionType = {\n MouseUp: 0,\n MouseDown: 1,\n Click: 2,\n ContextMenu: 3,\n DblClick: 4,\n Focus: 5,\n Blur: 6,\n TouchStart: 7,\n TouchEnd: 9,\n};\nexport var MediaInteractionType = {\n Play: 0,\n Pause: 1,\n};\n","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nexport var NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n};\nexport var PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport var PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport var PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport var PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport var PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport var PRIVACY_CLASS_ALLOW = 'dd-privacy-allow';\nexport var PRIVACY_CLASS_MASK = 'dd-privacy-mask';\nexport var PRIVACY_CLASS_MASK_USER_INPUT = 'dd-privacy-mask-user-input';\nexport var PRIVACY_CLASS_HIDDEN = 'dd-privacy-hidden';\n// Private Replacement Templates\nexport var CENSORED_STRING_MARK = '***';\nexport var CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport var FORM_PRIVATE_TAG_NAMES = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true,\n};\n","import { isElementNode, getParentNode, isTextNode } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_ALLOW, PRIVACY_ATTR_VALUE_MASK, PRIVACY_ATTR_VALUE_MASK_USER_INPUT, PRIVACY_ATTR_VALUE_HIDDEN, PRIVACY_CLASS_ALLOW, PRIVACY_CLASS_MASK, PRIVACY_CLASS_MASK_USER_INPUT, PRIVACY_CLASS_HIDDEN, FORM_PRIVATE_TAG_NAMES, CENSORED_STRING_MARK, } from '../../constants';\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 100000;\nvar TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel) {\n var parentNode = getParentNode(node);\n var parentNodePrivacyLevel = parentNode ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel) : defaultPrivacyLevel;\n var selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n return reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel;\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel;\n default:\n return parentNodePrivacyLevel;\n }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return;\n }\n var privAttr = node.getAttribute(PRIVACY_ATTR_NAME);\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW;\n }\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n var inputElement = node;\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK;\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK;\n }\n var autocomplete = inputElement.getAttribute('autocomplete');\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year]\n if (autocomplete && autocomplete.indexOf('cc-') === 0) {\n return NodePrivacyLevel.MASK;\n }\n }\n // Check HTML privacy attributes and classes\n if (privAttr === PRIVACY_ATTR_VALUE_HIDDEN || node.classList.contains(PRIVACY_CLASS_HIDDEN)) {\n return NodePrivacyLevel.HIDDEN;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_MASK || node.classList.contains(PRIVACY_CLASS_MASK)) {\n return NodePrivacyLevel.MASK;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_MASK_USER_INPUT || node.classList.contains(PRIVACY_CLASS_MASK_USER_INPUT)) {\n return NodePrivacyLevel.MASK_USER_INPUT;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_ALLOW || node.classList.contains(PRIVACY_CLASS_ALLOW)) {\n return NodePrivacyLevel.ALLOW;\n }\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE;\n }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true;\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n default:\n return false;\n }\n}\nfunction isFormElement(node) {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false;\n }\n var element = node;\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false;\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport var censorText = function (text) { return text.replace(/\\S/g, TEXT_MASKING_CHAR); };\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n var _a;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n var textContent = textNode.textContent || '';\n if (ignoreWhiteSpace && !textContent.trim()) {\n return;\n }\n var nodePrivacyLevel = parentNodePrivacyLevel;\n var isScript = parentTagName === 'SCRIPT';\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK;\n }\n else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK;\n }\n else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' ||\n parentTagName === 'SELECT' ||\n parentTagName === 'OPTGROUP') {\n if (!textContent.trim()) {\n return;\n }\n }\n else if (parentTagName === 'OPTION') {\n //
    \n
    You can't place orders on this consultant's replicated site!
    \n\n","\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { Component } from '@angular/core';\nimport { EcAppSettings } from '@core/models/app-settings.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AuthService } from '@core/services/auth.service';\nimport { environment } from '@env';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { ProductUtilService } from '@shared/utils/product-util.service';\nimport { UserUtilService } from '@shared/utils/user-util.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent {\n title = 'ph-ecommerce-ui';\n feature = environment.feature;\n appSettings: EcAppSettings;\n isMexEnv = isMexEnv;\n isIframe = window.self !== window.top;\n\n constructor(\n appInitService: AppInitService,\n authService: AuthService,\n public productUtilService: ProductUtilService,\n public userUtilService: UserUtilService,\n ) {\n this.appSettings = appInitService.Settings.ec;\n authService.setActiveAccount();\n }\n\n onActivate(): void {\n window.scrollTo(0, 0);\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MsalService } from '@azure/msal-angular';\nimport { AuthService } from '@core/services/auth.service';\nimport { environment } from '@env';\n\nimport { Observable, from, throwError } from 'rxjs';\nimport { catchError, first, switchMap } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class HttpBearerTokenInterceptor implements HttpInterceptor {\n constructor(\n private msalService: MsalService,\n private authService: AuthService,\n ) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (this.msalService.instance.getAllAccounts().length > 0 && this.isBackendRequest(req)) {\n const accessTokenRequest = {\n scopes: [environment.b2c.customerScope],\n account: this.msalService.instance.getAllAccounts()[0],\n };\n return from(this.msalService.instance.acquireTokenSilent(accessTokenRequest)).pipe(\n first(),\n catchError(() => {\n this.authService.logOut();\n return throwError('Failed to get access token');\n }),\n switchMap((result) => {\n const authReq = req.clone({\n setHeaders: {\n Authorization: `Bearer ${result.accessToken}`,\n },\n });\n return next.handle(authReq);\n }),\n );\n }\n\n return next.handle(req);\n }\n\n private isBackendRequest(request: HttpRequest): boolean {\n return (\n request.url.includes('api') &&\n (request.url.includes(environment.ecommerceBackendUri) ||\n request.url.includes(environment.startNowAppBackendUri))\n );\n }\n}\n","\n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppState } from '@core/store';\nimport {\n selectConditionalContent,\n selectConditionalContentState,\n} from '@core/store/conditional-content';\nimport { ConditionalContent } from '@core/store/conditional-content/conditional-content-state-models';\nimport {\n fetchConditionalContentByUrlName,\n resetConditionalContentState,\n} from '@core/store/conditional-content/conditional-content.actions';\nimport { Store } from '@ngrx/store';\n\nimport { Observable, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-conditional-content-page',\n templateUrl: './conditional-content-page.component.html',\n})\nexport class ConditionalContentPageComponent implements OnInit, OnDestroy {\n conditionalContent$: Observable;\n private subscriptions = new Subscription();\n\n constructor(\n private store$: Store,\n private activatedRoute: ActivatedRoute,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n const viewAs = this.activatedRoute.snapshot.queryParamMap.get(RouterQueryParams.viewAs);\n\n this.conditionalContent$ = this.store$.select(selectConditionalContent(viewAs));\n\n this.subscriptions.add(\n this.activatedRoute.paramMap.subscribe((pMap) => {\n const urlName = pMap.get('conditionalContent');\n this.store$.dispatch(resetConditionalContentState());\n this.store$.dispatch(fetchConditionalContentByUrlName({ urlName }));\n }),\n );\n\n this.subscriptions.add(\n this.store$\n .select(selectConditionalContentState)\n .pipe(\n filter(\n (conditionalContentState) =>\n conditionalContentState.fetched > 0 &&\n conditionalContentState.conditionalContent.length === 0,\n ),\n )\n .subscribe(() => this.router.navigateByUrl('/')),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.store$.dispatch(resetConditionalContentState());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DefaultLayoutComponent } from '@base/components/layout/default-layout/default-layout.component';\nimport { ConditionalContentPageComponent } from './components/conditional-content-page/conditional-content-page.component';\n\n@NgModule({\n imports: [\n RouterModule.forChild([\n {\n path: '',\n component: DefaultLayoutComponent,\n children: [\n {\n path: ':conditionalContent',\n component: ConditionalContentPageComponent,\n },\n ],\n },\n ]),\n ],\n exports: [RouterModule],\n})\nexport class ConditionalContentWildcardRoutingModule {}\n","\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PageCategory } from '@core/enums/page-category.enum';\nimport { select } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n templateUrl: './category-conditional-content-page.component.html',\n styleUrls: ['./category-conditional-content-page.component.scss'],\n})\nexport class CategoryConditionalContentPageComponent implements OnInit {\n pageCategory$: Observable;\n\n constructor(private activatedroute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.pageCategory$ = this.activatedroute.data.pipe(select((d) => d?.pageCategory));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { DefaultLayoutComponent } from '@base/components/layout/default-layout/default-layout.component';\nimport { DEFAULT_PAGE_DESCRIPTION } from '@core/constants/page-title';\nimport { ConditionalContentRoutes } from '@core/constants/routes.const';\nimport { PageCategory } from '@core/enums/page-category.enum';\nimport { CategoryConditionalContentPageComponent } from './components/category-conditional-content-page/category-conditional-content-page.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: DefaultLayoutComponent,\n children: [\n {\n path: '',\n component: CategoryConditionalContentPageComponent,\n data: {\n pageCategory: PageCategory.home,\n title: $localize`Home`,\n description: DEFAULT_PAGE_DESCRIPTION,\n },\n },\n {\n path: ConditionalContentRoutes.HostessSpecialOffers,\n component: CategoryConditionalContentPageComponent,\n data: {\n pageCategory: PageCategory.hostSpecials,\n title: $localize`Current special offers for hosts`,\n describe: $localize`Current special offers for hosts - Description`,\n },\n },\n {\n path: ConditionalContentRoutes.About,\n component: CategoryConditionalContentPageComponent,\n data: {\n pageCategory: PageCategory.about,\n title: $localize`About Princess House`,\n description: $localize`About Princess House - Description`,\n },\n },\n {\n path: ConditionalContentRoutes.StartYourBusiness,\n component: CategoryConditionalContentPageComponent,\n data: {\n pageCategory: PageCategory.startYourBusiness,\n title: $localize`Learn about starting a Princess House Business`,\n description: $localize`Learn about starting a Princess House Business - Description`,\n },\n },\n {\n path: ConditionalContentRoutes.HostParty,\n component: CategoryConditionalContentPageComponent,\n data: {\n pageCategory: PageCategory.host,\n title: $localize`Learn about a Princess House party`,\n description: $localize`Learn about a Princess House party - Description`,\n },\n },\n {\n path: ConditionalContentRoutes.Event,\n component: CategoryConditionalContentPageComponent,\n data: {\n pageCategory: PageCategory.event,\n title: $localize`Event`,\n description: $localize`Event - Description`,\n },\n },\n {\n path: ConditionalContentRoutes.EventStaging1,\n component: CategoryConditionalContentPageComponent,\n data: {\n pageCategory: PageCategory.eventStaging1,\n title: $localize`Event staging 1`,\n description: $localize`Event staging 1 - Description`,\n },\n },\n {\n path: ConditionalContentRoutes.EventStaging2,\n component: CategoryConditionalContentPageComponent,\n data: {\n pageCategory: PageCategory.eventStaging2,\n title: $localize`Event staging 2`,\n description: $localize`Event staging 2 - Description`,\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ConditionalContentRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { CategoryConditionalContentPageComponent } from './components/category-conditional-content-page/category-conditional-content-page.component';\nimport { ConditionalContentPageComponent } from './components/conditional-content-page/conditional-content-page.component';\n\nimport { ConditionalContentRoutingModule } from './conditional-content-routing.module';\n\n@NgModule({\n declarations: [ConditionalContentPageComponent, CategoryConditionalContentPageComponent],\n imports: [CommonModule, SharedModule, ConditionalContentRoutingModule],\n})\nexport class ConditionalContentModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'app-header-sna',\n templateUrl: './header-sna.component.html',\n styleUrls: ['../header-top/header-top.component.scss', './header-sna.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderSnaComponent {\n constructor() {}\n}\n","
    \n
    \n \n
    \n
    \n
    \n
    \n \"logo\"\n
    \n
    \n
    \n","import { Component } from '@angular/core';\nimport { FooterBackgroundShade } from '@core/enums/footer-bg-shade.enum';\n\n@Component({\n selector: 'app-delivery-info-layout',\n templateUrl: './delivery-info-layout.component.html',\n styleUrls: ['./delivery-info-layout.component.scss'],\n})\nexport class DeliveryInfoLayoutComponent {\n readonly shade = FooterBackgroundShade;\n\n constructor() {}\n}\n","
    \n \n \n \n\n
    \n \n
    \n\n
    \n \n \n \n \n
    \n
    \n","\n \n \n \n \n \n \n \n \n \n
    {{ heading }}
    Item #QtyDescription
    {{ cartonItem.skuCode }}{{ cartonItem.quantity }}{{ cartonItem.skuDescription }}
    \n","import { Component, Input } from '@angular/core';\n\nexport interface CartonItem {\n skuCode: string;\n skuDescription: string;\n quantity: number;\n}\n\n@Component({\n selector: 'app-carton-table',\n templateUrl: './carton-table.component.html',\n styleUrls: ['./carton-table.component.scss'],\n})\nexport class CartonTableComponent {\n @Input() heading: string = '';\n @Input() cartonItems: CartonItem[];\n\n constructor() {}\n}\n","\n
    \n

    Carton Information Page

    \n
    \n
    Master Order ID
    \n

    {{ cartonDetails.masterOrderId }}

    \n
    \n
    0\">Unshipped Items
    \n 0\"\n [cartonItems]=\"cartonDetails.backorderItems\"\n >\n\n
    \n
    \n

    Carton {{ carton.cartonNumber }} of\n {{ cartonDetails.shippedCartons.length }}\n
    \n

    Receiver's Name: {{ carton.receiverName }}\n

    Shipping Date: {{ carton.shippingDate | date: 'longDate' }}\n

    Tracking Number: {{ carton.trackingNumber\n }} - Shipped via {{ carton.carrier }}\n \n

    \n
    \n\n \n \n \n \n \n \n \n \n \n
    Packing List Documents
    Packing List#Packing List Link
    {{ doc.pickSlipNumber }}Packing List Document
    \n
    \n
    \n\n\n
    \n \"loading\"\n
    \n
    \n\n\n

    Failed to find delivery information for order with Master Order ID: {{ orderId }}

    \n
    \n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { DeliveryInfoLayoutComponent } from '@base/components/layout/delivery-info-layout/delivery-info-layout.component';\nimport { DeliveryInfoRoutes } from '@core/constants/routes.const';\nimport { DeliveryInfoPageComponent } from './components/deliver-info-page/delivery-info-page.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: DeliveryInfoLayoutComponent,\n children: [\n {\n path: DeliveryInfoRoutes.DeliveryInfo,\n component: DeliveryInfoPageComponent,\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class DeliveryInfoRoutingModule {}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppState } from '@core/store';\nimport {\n selectOrderStateLoading,\n selectShippedCartonDetailsData,\n selectShippedCartonsError,\n} from '@core/store/order';\nimport { ShippedCartonDetailsData } from '@core/store/order/order-state-models';\nimport { fetchShippedCartonsData } from '@core/store/order/order.actions';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-deliver-info-page',\n templateUrl: './delivery-info-page.component.html',\n styleUrls: ['./delivery-info-page.component.scss'],\n})\nexport class DeliveryInfoPageComponent implements OnInit, OnDestroy {\n public orderUID: string;\n public orderId: string;\n public cartonDetails$: Observable;\n public cartonDetailsError: boolean;\n public isLoading$: Observable;\n\n private subscription: Subscription = new Subscription();\n\n constructor(\n private route: ActivatedRoute,\n private store$: Store,\n ) {\n const orderId = this.route.snapshot.queryParamMap.get(RouterQueryParams.id);\n const orderUID = this.route.snapshot.queryParamMap.get(RouterQueryParams.idg);\n if (orderUID) {\n this.orderId = orderId;\n this.orderUID = orderUID;\n } else {\n if(orderId){\n this.orderId = orderId;\n }\n else{\n this.cartonDetailsError = true;\n }\n }\n }\n\n ngOnInit(): void {\n this.isLoading$ = this.store$.select(selectOrderStateLoading);\n this.cartonDetails$ = this.store$.select(selectShippedCartonDetailsData);\n this.store$\n .select(selectShippedCartonsError)\n .subscribe((error) => (this.cartonDetailsError = !!error));\n\n this.store$.dispatch(\n fetchShippedCartonsData({ orderUID: this.orderUID, orderId: this.orderId }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CartonTableComponent } from './components/carton-table/carton-table.component';\nimport { DeliveryInfoPageComponent } from './components/deliver-info-page/delivery-info-page.component';\nimport { DeliveryInfoRoutingModule } from './delivery-info-routing.module';\n\n@NgModule({\n declarations: [DeliveryInfoPageComponent, CartonTableComponent],\n imports: [CommonModule, DeliveryInfoRoutingModule],\n})\nexport class DeliveryInfoModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { FooterBackgroundShade } from '@core/enums/footer-bg-shade.enum';\n\n@Component({\n selector: 'app-footer-bottom-sna',\n templateUrl: './footer-bottom-sna.component.html',\n styleUrls: [\n '../footer.common.scss',\n '../footer-bottom/footer-bottom.component.scss',\n './footer-bottom-sna.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterBottomSnaComponent implements OnInit {\n @Input() shade: FooterBackgroundShade;\n constructor() {}\n\n currentYear: number;\n\n ngOnInit() {\n this.currentYear = new Date().getFullYear();\n }\n}\n","
    \n ©{{ currentYear }} Princess House, Inc. All Rights Reserved\n
    \n","import { Component, OnInit } from '@angular/core';\nimport { URL } from '@core/constants/url.const';\nimport { FooterBackgroundShade } from '@core/enums/footer-bg-shade.enum';\nimport { AppState } from '@core/store';\nimport { selectSecondaryFooterLinks } from '@core/store/footer';\nimport { FooterLink } from '@core/store/footer/footer-state-models';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-start-now-app-layout',\n templateUrl: './start-now-app-layout.component.html',\n styleUrls: ['./start-now-app-layout.component.scss'],\n})\nexport class StartNowAppLayoutComponent implements OnInit {\n readonly shade = FooterBackgroundShade;\n\n links$: Observable;\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.links$ = this.store$\n .select(selectSecondaryFooterLinks)\n .pipe(\n map((links) =>\n links?.filter((link) => [URL.PrivacyPolicy, URL.TermsOfUse].includes(link.url)),\n ),\n );\n }\n}\n","
    \n \n \n \n\n
    \n \n
    \n\n \n \n \n \n
    \n","export enum StartNowAppStep {\n DoYouKnowConsultant = 1,\n FindConsultantByZipCode = 2,\n SelectConsultant = 2,\n ConfirmConsultant = 3,\n RegistrationCode = 4,\n AboutYou = 5,\n ConnectWithYou = 6,\n WaitBusinessTools = 7,\n SelectStarterKit = 8,\n PasswordBackofficePortal = 9,\n ConsultantAgreement = 10,\n DoubleCheck = 11,\n Payment = 12,\n Congratulation = 13,\n}\n\nexport enum NetworkStatus {\n Online = 'online',\n Offline = 'offline',\n}\n","import { Component, EventEmitter, Inject, Injector, Input, OnDestroy, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { AppcuesService } from '@core/services/appcues.service';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { isMexEnv, isUsaEnv } from '@shared/utils/environment-utils';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n template: '',\n})\nexport abstract class StartNowStepBaseComponent extends BaseComponent implements OnDestroy {\n @Input() isGoToPreviousDisabled: boolean;\n @Output() goToNextStep: EventEmitter = new EventEmitter();\n @Output() goToPreviousStep: EventEmitter = new EventEmitter();\n\n public readonly FormLabelStyle = { color: '#747487' };\n public readonly AppcuesEventName: string;\n\n public isMexEnv = isMexEnv;\n public isUsaEnv = isUsaEnv;\n\n protected appcuesService: AppcuesService;\n\n constructor(\n private injector: Injector,\n @Inject('appcuesEventName') appcuesEventName: string,\n ) {\n super();\n this.appcuesService = this.injector.get(AppcuesService);\n this.AppcuesEventName = appcuesEventName;\n\n this.scrollToTop();\n this.trackStepInAppcues();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n scrollToTop() {\n window.scroll(0, 0);\n }\n\n trackStepInAppcues() {\n this.subscriptions.add(\n this.appcuesService\n .isAppcuesLoaded()\n .pipe(\n filter((loaded) => loaded),\n take(1),\n )\n .subscribe(() => {\n this.appcuesService.track(this.AppcuesEventName);\n }),\n );\n }\n\n abstract submitStep(): void;\n\n protected abstract createFormGroup(): FormGroup;\n}\n","import { Component, EventEmitter, Injector, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { AppState } from '@core/store';\nimport {\n resetFindConsultant,\n resetSelectedConsultant,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-do-you-know-consultant-step',\n templateUrl: './do-you-know-consultant-step.component.html',\n styleUrls: ['./do-you-know-consultant-step.component.scss'],\n})\nexport class DoYouKnowConsultantComponent extends StartNowStepBaseComponent {\n @Output() knowConsultantChoice: EventEmitter = new EventEmitter();\n\n constructor(private store$: Store, injector: Injector) {\n super(injector, 'SNA Step - 0.1 Do You Know A Consultant');\n }\n\n submitStep(): void {\n this.store$.dispatch(resetFindConsultant());\n this.store$.dispatch(resetSelectedConsultant());\n }\n\n public onKnowConsultantClick(doIKnow: boolean): void {\n this.submitStep();\n this.knowConsultantChoice.emit(doIKnow);\n }\n\n protected createFormGroup(): FormGroup {\n throw new Error('Method not implemented.');\n }\n}\n","
    \n
    \n \"info\"\n
    \n\n
    Success starts here!
    \n\n

    Do you know a consultant?

    \n\n
    \n
    \n
    \n \n No\n \n
    \n
    \n
    \n \n Yes\n \n
    \n
    \n
    \n","\n \n {{ label }}\n \n
    \n \n \n {{ option.name || option }}\n \n \n
    \n \n \n \n
    \n
    \n
    \n
    {{ item }}
    \n
    \n
    \n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Host,\n Input,\n Optional,\n SkipSelf,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { getValidationErrorMessageList, validInput } from '@shared/utils/validation.utils';\nimport { SelectOption } from '../select/select.component';\n\n@Component({\n selector: 'app-ph-select',\n templateUrl: './ph-select.component.html',\n styleUrls: ['./ph-select.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: PhSelectComponent, multi: true }],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class PhSelectComponent implements ControlValueAccessor, AfterViewInit {\n @Input() identifier: string;\n @Input() label: string;\n @Input() formErrorMessages: { [key: string]: string } = FormErrorMessages;\n @Input() formControlName: string;\n @Input() options: SelectOption[] | string[];\n @Input() labelStyle: Record = {};\n @Input() defaultValue: any = $localize`Select`;\n @Input() value: string;\n @Input() readonly: boolean = false;\n @Input() clearable: boolean = false;\n\n disabled: boolean = false;\n control: AbstractControl;\n\n getErrorMessages = getValidationErrorMessageList;\n\n constructor(\n @Optional()\n @Host()\n @SkipSelf()\n private controlContainer: ControlContainer,\n ) {}\n\n ngAfterViewInit(): void {\n this.control = this.controlContainer?.control.get(this.formControlName);\n }\n\n onChange: (value: string) => void = () => {};\n\n onTouched = () => {};\n\n writeValue(value: string): void {\n this.value = value === '' ? null : value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectChange(value: string): void {\n this.onChange(value);\n }\n\n get isValidInput(): boolean {\n if (this.control) {\n return validInput(this.control);\n }\n return true;\n }\n\n get errorMessages(): string[] {\n return getValidationErrorMessageList(this.control, this.formErrorMessages);\n }\n}\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-no-consultant-found-modal',\n templateUrl: './no-consultant-found-modal.component.html',\n styleUrls: ['./no-consultant-found-modal.component.scss'],\n})\nexport class NoConsultantFoundModalComponent implements OnInit, OnDestroy {\n @Input() dismiss: () => void;\n @Input() openModal$: Observable;\n\n modalConfig: ModalConfig;\n\n private subscriptions: Subscription = new Subscription();\n\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n constructor() {}\n\n ngOnInit(): void {\n this.modalConfig = {\n onDismiss: this.dismiss.bind(this),\n hideCloseButton: true,\n hideDismissButton: true,\n hideHeader: true,\n };\n this.subscriptions.add(\n this.openModal$?.pipe(filter((openModal) => !!openModal)).subscribe(() => {\n this.modalComponent.open();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n closeModal(): void {\n this.modalComponent.dismiss();\n }\n}\n","\n
    \n \n \n \n

    We didn't find any consultant

    \n
    \n Please check your search criteria\n
    \n \n
    \n
    \n","import { AfterViewInit, Component, OnDestroy } from '@angular/core';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport { validateReCaptcha } from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\nimport { hideRecaptchaBadge, showRecaptchaBadge } from '@shared/utils/recaptcha-utils';\nimport { ReCaptchaV3Service } from 'ng-recaptcha';\nimport { Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-sna-recaptcha',\n template: '',\n})\nexport class SnaReCaptchaComponent implements OnDestroy, AfterViewInit {\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private store$: Store,\n private appInitService: AppInitService,\n private reCaptchaService: ReCaptchaV3Service,\n ) {}\n\n ngAfterViewInit(): void {\n showRecaptchaBadge();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n hideRecaptchaBadge();\n }\n\n validateReCaptcha() {\n this.subscriptions.add(\n this.reCaptchaService\n .execute('importantAction')\n .pipe(\n filter((token) => !!token || !this.appInitService.Settings.sna.isReCaptchaEnabled),\n take(1),\n )\n .subscribe((token: string) => this.store$.dispatch(validateReCaptcha({ token }))),\n );\n }\n}\n","
    \n
    \n
    \n

    {{ Title }}

    \n
    \n
    \n
    \n
    \n
    \n \n {{ SubTitles[InvitationCode] }}\n \n \n \n {{ SubTitles[ByArea] }}\n \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
      \n
    • \n By Area\n \n
      \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n
      \n
      \n Too many results, please refine your search!\n
      \n
      \n Please fill in at least one field!\n
      \n
      \n
    • \n
    • \n Invitation Code\n \n
      \n
      \n
      \n \n \n
      \n Sorry there is no Consultant with this code\n
      \n
      \n
      \n
      \n
    • \n
    \n
    \n
    \n\n
    \n \n ReCaptcha validation failed. Please try again later.\n \n
    \n \n \n
    \n
    \n
    \n \n \n
    \n \n Sorry there is no Consultant with this code\n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n Back\n \n
    \n
    \n
    \n \n Next\n
    \n Loading...\n
    \n \n
    \n
    \n\n\n\n\n\n","/* eslint-disable max-len */\nimport { Component, Injector, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FlagImageSrc } from '@core/constants/image-placeholders';\nimport { FindConsultantByCodeRequest } from '@core/dto/start-now-app.dto';\nimport { SnaConsultantFinderType } from '@core/enums/consultant-finder-type.enum';\nimport { Country } from '@core/enums/country.enum';\nimport { SuccessfulStatus } from '@core/enums/successful-status.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport {\n selectConsultantFinderStep,\n selectReCaptchaIsValid,\n selectSnaCountryStates,\n selectStepProcessing,\n} from '@core/store/start-now-app';\nimport { ConsultantFinder } from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n fetchCountryStates,\n findConsultantByArea,\n findConsultantByConsultantCode,\n resetFindConsultant,\n resetNoFindConsultantModal,\n resetReCaptchaValidation,\n updateConfirmRecruiter,\n updateRegistrationCodeStepSkipped,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { environment } from '@env';\nimport { select, Store } from '@ngrx/store';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { SnaReCaptchaComponent } from '../../sna-recaptcha/sna-recaptcha.component';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-select-consultant-step',\n templateUrl: './select-consultant-step.component.html',\n styleUrls: ['./select-consultant-step.component.scss'],\n})\nexport class SelectConsultantStepComponent\n extends StartNowStepBaseComponent\n implements OnInit, OnDestroy\n{\n @Input() doIKnowAConsultant: boolean;\n\n stepProcessing$: Observable;\n reCaptchaValidation$: Observable;\n public title: string;\n public selectedCountry: Country = environment.country;\n countryStates$: Observable;\n invitationCodeForm: FormGroup;\n findConsultantByLocationForm: FormGroup;\n consultantFinderType = SnaConsultantFinderType;\n submitFinderType: SnaConsultantFinderType;\n activeNavId: number = SnaConsultantFinderType.InvitationCode;\n consultantFinderResult$: Observable;\n noConsultantFindModalOpen$: Observable;\n findIsSuccess$: Observable;\n Country = Country;\n tooManyResult: boolean = false;\n isEmptyForm: boolean = false;\n\n readonly EnvironmentCountry: Country = environment.country;\n readonly SuccessfulStatus = SuccessfulStatus;\n readonly FlagImageSrc = FlagImageSrc;\n readonly InvitationCode: string = 'invitationCode';\n readonly ByArea: string = 'byArea';\n readonly FirstName: string = 'firstName';\n readonly LastName: string = 'lastName';\n readonly City: string = 'city';\n readonly State: string = 'state';\n readonly PhoneNumber: string = 'phoneNumber';\n readonly Title =\n environment.country === Country.Usa\n ? $localize`Find your consultant`\n : $localize`Your consultant’s country`;\n\n readonly SubTitles = {\n [this.ByArea]:\n environment.country === Country.Usa\n ? $localize`Please search for your Consultant by name and/or City`\n : $localize`Please select your Consultant’s country and search one by name and/or City`,\n [this.InvitationCode]:\n environment.country === Country.Usa\n ? $localize`Please enter the application invitation code provided by your Consultant to continue.`\n : $localize`Please select your Consultant’s country and enter the application invitation code\n provided by your Consultant to continue.`,\n };\n\n protected subscriptions: Subscription = new Subscription();\n @ViewChild('reCaptcha') private reCaptcha: SnaReCaptchaComponent;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n private appInitService: AppInitService,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 0.2 Select Consultant');\n }\n\n ngOnInit(): void {\n this.store$.dispatch(resetReCaptchaValidation());\n this.stepProcessing$ = this.store$.select(selectStepProcessing).pipe(distinctUntilChanged());\n this.store$.dispatch(fetchCountryStates());\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectSnaCountryStates));\n this.initializeForms();\n this.findIsSuccess$ = this.store$\n .select(selectConsultantFinderStep)\n .pipe(select((consultantFinder) => consultantFinder?.findIsSuccess));\n this.consultantFinderResult$ = this.store$\n .select(selectConsultantFinderStep)\n .pipe(select((consultantFinderStep) => consultantFinderStep?.consultantFinderResult));\n this.noConsultantFindModalOpen$ = this.store$\n .select(selectConsultantFinderStep)\n .pipe(select((consultantFinderStep) => consultantFinderStep?.noConsultantFinderModalOpen));\n this.title = this.SubTitles[this.selectedCountry];\n this.listenConsultantFinder();\n this.store$.dispatch(updateConfirmRecruiter({ confirmRecruiter: false }));\n this.listenReCaptchaValidation();\n this.listenFindValidator();\n }\n\n public submitStep(): void {\n this.goToNextStep.emit();\n }\n\n public previousStepClick(): void {\n this.goToPreviousStep.emit();\n }\n\n public nextStepClick(): void {\n if (\n this.selectedCountry !== this.EnvironmentCountry ||\n this.activeNavId === this.consultantFinderType.InvitationCode\n ) {\n this.invitationCodeForm.markAllAsTouched();\n if (this.invitationCodeForm.valid) {\n this.validateReCaptcha(SnaConsultantFinderType.InvitationCode);\n }\n } else {\n this.isEmptyForm = this.isAreaFormEmpty();\n\n if (!this.isEmptyForm) {\n this.validateReCaptcha(SnaConsultantFinderType.ByArea);\n }\n this.listenLocatorFormChanges();\n }\n }\n\n onDismissModal = (): void => {\n this.store$.dispatch(resetNoFindConsultantModal());\n };\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n onCountryChange(value: Country): void {\n this.selectedCountry = value;\n this.store$.dispatch(resetFindConsultant());\n }\n\n protected createFormGroup(): FormGroup {\n throw new Error('Method not implemented.');\n }\n\n private isAreaFormEmpty(): boolean {\n let isEmptyForm: boolean = true;\n Object.keys(this.findConsultantByLocationForm.controls).forEach((key) => {\n isEmptyForm = isEmptyForm && !this.findConsultantByLocationForm.get(key).value;\n });\n return isEmptyForm;\n }\n\n private dispatchConsultantFind(): void {\n if (this.submitFinderType === SnaConsultantFinderType.InvitationCode) {\n const invitationCodeRequest: FindConsultantByCodeRequest = {\n vanityName: this.invitationCodeForm.get(this.InvitationCode).value,\n country: this.selectedCountry,\n };\n\n this.store$.dispatch(findConsultantByConsultantCode({ request: invitationCodeRequest }));\n } else if (this.submitFinderType === SnaConsultantFinderType.ByArea) {\n const formValues = this.findConsultantByLocationForm.value;\n\n this.store$.dispatch(\n findConsultantByArea({\n consultantFinder: {\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n city: formValues.city,\n state: formValues.state,\n mobilePhoneNumber: formValues.phoneNumber,\n pageNumber: 1,\n pageSize: 3,\n country: this.selectedCountry,\n },\n }),\n );\n }\n }\n\n private listenConsultantFinder(): void {\n this.subscriptions.add(\n this.consultantFinderResult$.pipe(filter((res) => !!res?.items?.length)).subscribe((res) => {\n const formValue = this.findConsultantByLocationForm.value;\n if (\n this.activeNavId !== this.consultantFinderType.InvitationCode &&\n !formValue.city &&\n !formValue.phoneNumber &&\n !formValue.state &&\n res.hasMore\n ) {\n this.tooManyResult = true;\n this.store$.dispatch(resetFindConsultant());\n } else {\n if (this.activeNavId === this.consultantFinderType.InvitationCode) {\n const registrationCode: string = this.invitationCodeForm.get(this.InvitationCode).value;\n this.store$.dispatch(\n updateRegistrationCodeStepSkipped({\n skipRegistrationCodeStep: true,\n registrationCode,\n }),\n );\n }\n this.submitStep();\n }\n }),\n );\n }\n\n private listenLocatorFormChanges(): void {\n this.subscriptions.add(\n this.findConsultantByLocationForm.valueChanges.pipe(take(1)).subscribe(() => {\n this.tooManyResult = false;\n this.isEmptyForm = false;\n }),\n );\n }\n\n private initializeForms() {\n this.invitationCodeForm = this.fb.group({\n [this.InvitationCode]: ['', Validators.required],\n });\n\n this.findConsultantByLocationForm = this.fb.group({\n [this.FirstName]: [''],\n [this.LastName]: [''],\n [this.City]: [''],\n [this.State]: [''],\n [this.PhoneNumber]: [''],\n });\n }\n\n private listenFindValidator(): void {\n this.subscriptions.add(\n this.findIsSuccess$\n .pipe(filter((findIsSuccess) => !findIsSuccess))\n .subscribe(() =>\n this.invitationCodeForm.get(this.InvitationCode).setErrors({ notFound: true }),\n ),\n );\n }\n\n private listenReCaptchaValidation(): void {\n this.reCaptchaValidation$ = this.store$.select(selectReCaptchaIsValid);\n\n this.subscriptions.add(\n this.reCaptchaValidation$\n .pipe(filter((validateSuccess) => validateSuccess === SuccessfulStatus.Success))\n .subscribe(() => this.dispatchConsultantFind()),\n );\n }\n\n private validateReCaptcha(finderType: SnaConsultantFinderType): void {\n this.submitFinderType = finderType;\n if (this.appInitService.Settings.sna.isReCaptchaEnabled) {\n this.reCaptcha.validateReCaptcha();\n } else {\n this.dispatchConsultantFind();\n }\n }\n}\n","export enum LanguagePreferenceType {\n English = 'en-US',\n Spanish = 'es-US',\n Mexico = 'es-MX',\n}\n","
    \n

    Your Consultant Preference

    \n\n
    \n Please enter your ZIP Code and preferred language so we can find you a Consultant\n
    \n\n
    \n
    \n
    \n \n
    \n
    \n Language Preference\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n {{\n getFormValidationErrorMessage(\n findConsultantByZipCodeForm,\n FindConsultantFormKeys.languagePreference\n )\n }}\n
    \n
    \n
    \n
    \n
    \n \n ReCaptcha validation failed. Please try again later.\n \n No consultant found in this area. \n \n {{ ConsultantLocatorErrorMessage[errorType] }}\n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n Back\n \n
    \n
    \n
    \n \n Next\n
    \n Loading...\n
    \n \n
    \n
    \n
    \n\n\n","import {\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ConsultantLocatorErrorMessage } from '@core/constants/consultant-locator-error-message';\nimport { FindConsultantByZipCodeRequest } from '@core/dto/start-now-app.dto';\nimport { ConsultantLocatorErrorType } from '@core/enums/consultant-locator-error-type.enum';\nimport { LanguagePreferenceType } from '@core/enums/language-preference-type.enum';\nimport { SuccessfulStatus } from '@core/enums/successful-status.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport {\n selectConsultantFinderStep,\n selectReCaptchaIsValid,\n selectStepProcessing,\n} from '@core/store/start-now-app';\nimport { ConsultantFinder } from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n findConsultantByZipCode,\n resetFindConsultantByZipCodeErrorType,\n resetReCaptchaValidation,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { select, Store } from '@ngrx/store';\nimport { getFormValidationErrorMessage, validInput } from '@shared/utils/validation.utils';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { distinctUntilChanged, filter, tap } from 'rxjs/operators';\nimport { SnaReCaptchaComponent } from '../../sna-recaptcha/sna-recaptcha.component';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-find-consultant-by-zip-code',\n templateUrl: './find-consultant-by-zip-code.component.html',\n styleUrls: ['./find-consultant-by-zip-code.component.scss'],\n})\nexport class FindConsultantByZipCodeComponent\n extends StartNowStepBaseComponent\n implements OnInit, OnDestroy\n{\n @Output() knowConsultantChoice: EventEmitter = new EventEmitter();\n\n readonly LanguagePreferenceType = LanguagePreferenceType;\n readonly SuccessfulStatus = SuccessfulStatus;\n readonly FindConsultantFormKeys = {\n zipCode: 'zipCode',\n languagePreference: 'languagePreference',\n };\n readonly ConsultantLocatorErrorMessage = ConsultantLocatorErrorMessage;\n\n noConsultantFound: boolean = false;\n stepProcessing$: Observable;\n findConsultantByZipCodeError$: Observable;\n consultantFinderResult$: Observable;\n reCaptchaValidation$: Observable;\n findConsultantByZipCodeForm: FormGroup;\n\n getFormValidationErrorMessage = getFormValidationErrorMessage;\n\n @ViewChild('reCaptcha') private reCaptcha: SnaReCaptchaComponent;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n private appInitService: AppInitService,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 0.2 Find a Consultant by Zip Code');\n }\n\n ngOnInit(): void {\n this.store$.dispatch(resetReCaptchaValidation());\n this.stepProcessing$ = this.store$.select(selectStepProcessing).pipe(distinctUntilChanged());\n this.consultantFinderResult$ = this.store$\n .select(selectConsultantFinderStep)\n .pipe(select((consultantFinderStep) => consultantFinderStep?.consultantFinderResult));\n this.findConsultantByZipCodeError$ = this.store$\n .select(selectConsultantFinderStep)\n .pipe(select((finderStep) => finderStep.findConsultantByZipCodeError));\n\n this.findConsultantByZipCodeForm = this.createFormGroup();\n\n this.listenConsultantFinder();\n this.listenReCaptchaValidation();\n this.listenFormChanges();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.store$.dispatch(resetFindConsultantByZipCodeErrorType());\n }\n\n submitStep(): void {\n const zipCode = this.findConsultantByZipCodeForm.get(this.FindConsultantFormKeys.zipCode).value;\n\n const languagePreference = this.findConsultantByZipCodeForm.get(\n this.FindConsultantFormKeys.languagePreference,\n ).value;\n\n this.findConsultantByZipCode(zipCode, languagePreference);\n }\n\n listenFormChanges() {\n this.subscriptions.add(\n this.findConsultantByZipCodeForm.valueChanges.subscribe(() => {\n this.formChanged();\n }),\n );\n }\n\n formChanged() {\n this.noConsultantFound = false;\n }\n\n get radioButtonValidInput(): boolean {\n return validInput(\n this.findConsultantByZipCodeForm.get(this.FindConsultantFormKeys.languagePreference),\n );\n }\n\n public previousStepClick(): void {\n this.goToPreviousStep.emit();\n }\n\n public nextStepClick(): void {\n this.findConsultantByZipCodeForm.markAllAsTouched();\n\n if (this.findConsultantByZipCodeForm.valid) {\n if (this.appInitService.Settings.sna.isReCaptchaEnabled) {\n this.reCaptcha.validateReCaptcha();\n } else {\n this.submitStep();\n }\n }\n }\n\n protected createFormGroup(): FormGroup {\n return this.fb.group({\n [this.FindConsultantFormKeys.zipCode]: ['', [Validators.required]],\n [this.FindConsultantFormKeys.languagePreference]: ['', [Validators.required]],\n });\n }\n\n private findConsultantByZipCode(zipCode: string, languagePreference: string): void {\n const findConsultantByZipCodeRequest: FindConsultantByZipCodeRequest = {\n zipCode: zipCode,\n preferredLanguageCode: languagePreference,\n pageNumber: 1,\n pageSize: 3,\n };\n this.store$.dispatch(findConsultantByZipCode({ request: findConsultantByZipCodeRequest }));\n }\n\n private listenConsultantFinder(): void {\n this.subscriptions.add(\n this.consultantFinderResult$\n .pipe(\n tap(({ items, hasMore }) => {\n if (!hasMore && items.length === 0) {\n this.noConsultantFound = true;\n }\n }),\n filter((res) => !!res?.items?.length),\n )\n .subscribe(() => {\n this.goToNextStep.emit();\n }),\n );\n }\n\n private listenReCaptchaValidation(): void {\n this.reCaptchaValidation$ = this.store$.select(selectReCaptchaIsValid);\n\n this.subscriptions.add(\n this.reCaptchaValidation$\n .pipe(filter((validateSuccessful) => validateSuccessful === SuccessfulStatus.Success))\n .subscribe(() => this.submitStep()),\n );\n }\n}\n","
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n {{ this.consultant?.fullName }}\n
    \n
    {{ address }}
    \n
    \n\n \n {{ isSelected ? selectedLabel : selectLabel }}\n \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SnaConsultantProfileImagePlaceholderSrc } from '@core/constants/image-placeholders';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\n\n@Component({\n selector: 'app-consultant-box',\n templateUrl: './consultant-box.component.html',\n styleUrls: ['./consultant-box.component.scss'],\n})\nexport class ConsultantBoxComponent implements OnInit {\n @Input()\n boxHasButton: boolean = false;\n\n @Input()\n consultant: Consultant = null;\n\n @Input()\n isSelected: boolean = false;\n\n @Output()\n selectedConsultant: EventEmitter = new EventEmitter();\n\n readonly PlaceholderImageSrc = SnaConsultantProfileImagePlaceholderSrc;\n selectedLabel = $localize`selected`;\n selectLabel = $localize`select`;\n\n buttonLabel = '';\n address: string;\n\n ngOnInit(): void {\n if (!this.boxHasButton) {\n this.selectedConsultant.emit(this.consultant);\n }\n this.address = this.consultant?.city + ', ' + this.consultant?.state;\n\n // TODO: handle if there are no consultants EC-3456\n }\n\n public selectConsultantAsRecruiter(): void {\n this.selectedConsultant.emit(this.consultant);\n }\n}\n","
    \n
    \n Consultant sync failed please retry or connect admin\n
    \n \n

    {{ titles?.mainTitle }}

    \n
    \n {{ titles?.subTitle }}\n
    \n \n 1\"\n [isSelected]=\"\n actualConsultantList.length > 1 ? consultant.id === selectedConsultant?.id : true\n \"\n (selectedConsultant)=\"changeSelectedConsultant($event)\"\n >\n \n\n \n
    \n
    \n \n More consultants\n \n Loading...\n
    \n \n
    \n
    \n \n\n
    \n
    \n
    \n
    \n
    \n \n \n I confirm this recruiter is correct\n \n
    \n
    \n Note: If the recruiter listed above is not correct, please\n click here to\n return to the home page. You will need to complete the application under the correct\n recruiters website to continue.\n
    \n
    \n
    \n
    \n
    \n {{ getValidationError(Confirmation) }}\n
    \n
    \n\n 1 && onNextClicked && !isConsultantSelected()\"\n class=\"validation-error-message text-center\"\n >\n {{ titles.errorTitle.required }}\n \n \n\n
    \n
    \n
    \n \n Back\n \n
    \n
    \n
    \n \n Next\n \n
    \n
    \n\n","import { Component, EventEmitter, Injector, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppState } from '@core/store';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport { resetCurrentConsultant } from '@core/store/consultant/consultant.actions';\nimport {\n selectConsultantFinderCriteria,\n selectConsultantFinderStep,\n selectConsultantStepsSkipped,\n selectRegistrationCodeStepSkipped,\n selectStepProcessing,\n} from '@core/store/start-now-app';\nimport {\n findConsultantByAreaNextPage,\n findConsultantByZipCodeNextPage,\n resetFindConsultant,\n resetFirstConsultants,\n resetRegistrationCodeStepSkipped,\n resetSelectedConsultant,\n updateSelectedConsultant,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { Store, select } from '@ngrx/store';\nimport { getFormValidationErrorMessage, validInput } from '@shared/utils/validation.utils';\nimport { StartNowAppStep } from 'app/modules/start-now-app/enums/start-now-app-step.enum';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\ninterface Titles {\n mainTitle: string;\n subTitle: string;\n errorTitle: { required: string };\n}\n\n@Component({\n selector: 'app-confirm-consultant-step',\n templateUrl: './confirm-consultant-step.component.html',\n styleUrls: ['./confirm-consultant-step.component.scss'],\n})\nexport class ConfirmConsultantStepComponent extends StartNowStepBaseComponent implements OnInit {\n @Output() goToOtherStep: EventEmitter = new EventEmitter();\n readonly pageSize = 3;\n readonly Confirmation: string = 'confirmation';\n readonly listOfTitles: Titles[] = [\n {\n mainTitle: $localize`Success starts here`,\n subTitle: $localize`Congratulations on your decision to join us!`,\n errorTitle: {\n required: $localize`Please confirm your recruiter!`,\n },\n },\n {\n mainTitle: $localize`Your connections matters!`,\n subTitle: $localize`Please choose your recruiter`,\n errorTitle: {\n required: $localize`Please select a recruiter!`,\n },\n },\n ];\n\n public titles: Titles;\n pageNumber: number = 1;\n onNextClicked = false;\n recruiterConfirmationFormGroup: FormGroup;\n selectedConsultant: Consultant = null;\n hasMoreConsultant$: Observable;\n actualConsultantList$: Observable;\n stepProcessing$: Observable;\n consultantStepsSkipped$: Observable;\n\n private isFindByZipCode: boolean;\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 0.3 Confirm Consultant');\n }\n\n ngOnInit(): void {\n this.recruiterConfirmationFormGroup = this.createFormGroup();\n\n this.stepProcessing$ = this.store$.select(selectStepProcessing).pipe(distinctUntilChanged());\n this.actualConsultantList$ = this.store$\n .select(selectConsultantFinderStep)\n .pipe(select((consultantFinder) => consultantFinder.consultantFinderResult.items));\n this.hasMoreConsultant$ = this.store$\n .select(selectConsultantFinderStep)\n .pipe(select((consultantFinder) => consultantFinder.consultantFinderResult.hasMore));\n this.store$\n .select(selectConsultantFinderCriteria)\n .pipe(\n take(1),\n select((finderCriteria) => finderCriteria?.zipCode),\n )\n .subscribe((zipCode) => {\n this.isFindByZipCode = !!zipCode;\n });\n this.consultantStepsSkipped$ = this.store$.select(selectConsultantStepsSkipped);\n\n this.selectActualTitle();\n }\n\n public submitStep(): void {\n this.store$\n .select(selectRegistrationCodeStepSkipped)\n .pipe(take(1))\n .subscribe((registrationCodeStepSkipped) => {\n if (\n window.location.href.includes(RouterQueryParams.cid) ||\n window.location.href.includes(RouterQueryParams.lnid) ||\n !this.selectedConsultant.isPrivateRecruitment ||\n registrationCodeStepSkipped\n ) {\n this.goToOtherStep.emit(StartNowAppStep.AboutYou);\n } else {\n this.goToNextStep.emit();\n }\n });\n }\n\n public previousStepClick(): void {\n this.store$.dispatch(resetRegistrationCodeStepSkipped());\n this.store$.dispatch(resetFindConsultant());\n this.store$.dispatch(resetSelectedConsultant());\n this.goToPreviousStep.emit();\n }\n\n public nextStepClick(consultantListCount: number): void {\n this.onNextClicked = true;\n if (consultantListCount > 1 && !!this.selectedConsultant) {\n this.updateSelectedConsultant();\n } else {\n this.recruiterConfirmationFormGroup.markAllAsTouched();\n if (this.recruiterConfirmationFormGroup.valid) {\n this.updateSelectedConsultant();\n }\n }\n }\n\n public changeSelectedConsultant(selectedConsultant) {\n this.selectedConsultant = selectedConsultant;\n }\n\n public showMoreConsultants() {\n ++this.pageNumber;\n if (this.isFindByZipCode) {\n this.store$.dispatch(\n findConsultantByZipCodeNextPage({\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n }),\n );\n } else {\n this.store$.dispatch(\n findConsultantByAreaNextPage({ pageNumber: this.pageNumber, pageSize: this.pageSize }),\n );\n }\n }\n\n public isConsultantSelected() {\n return !!this.selectedConsultant;\n }\n\n navigateToStartNowApp() {\n this.store$.dispatch(resetCurrentConsultant());\n window.location.href = window.location.href.split('?')[0];\n }\n\n getValidationError(controlName: string): string {\n return getFormValidationErrorMessage(\n this.recruiterConfirmationFormGroup,\n controlName,\n this.titles.errorTitle,\n );\n }\n\n get confirmValidInput(): boolean {\n return validInput(this.recruiterConfirmationFormGroup.get(this.Confirmation));\n }\n\n protected createFormGroup(): FormGroup {\n return this.fb.group({\n [this.Confirmation]: [false, [Validators.requiredTrue]],\n });\n }\n\n private selectActualTitle(): void {\n this.actualConsultantList$\n .pipe(\n filter((actualList) => !!actualList.length),\n take(1),\n )\n .subscribe((actualList) => {\n this.titles = actualList.length > 1 ? this.listOfTitles[1] : this.listOfTitles[0];\n });\n }\n\n private updateSelectedConsultant() {\n this.store$.dispatch(updateSelectedConsultant({ selectedConsultant: this.selectedConsultant }));\n this.store$.dispatch(resetFirstConsultants());\n this.submitStep();\n }\n}\n","
    \n
    \n

    Application password

    \n \n Please enter the application password provided by your Consultant to continue.\n \n
    \n
    \n
    \n
    \n \n \n
    \n Invalid registration code!\n
    \n If you do not know the password, please contact your Consultant. \n
    \n
    \n
    \n
    \n
    \n \n Back\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { ValidateRegistrationCodeRequest } from '@core/dto/start-now-app.dto';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\nimport { AppState } from '@core/store';\nimport { selectRegistrationCodeValidity, selectStartNowAppData } from '@core/store/start-now-app';\nimport {\n resetRegistrationCode,\n resetRegistrationCodeValidity,\n updateRegistrationCode,\n validateRegistrationCode,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { Store, select } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-registration-code-step',\n templateUrl: './registration-code-step.component.html',\n styleUrls: ['./registration-code-step.component.scss'],\n})\nexport class RegistrationCodeStepComponent\n extends StartNowStepBaseComponent\n implements OnInit, OnDestroy\n{\n passwordForm: FormGroup;\n registrationCodeValidity$: Observable;\n readonly Password: string = 'password';\n readonly ErrorMessages = {\n [FormErrorTypes.required]: FormErrorMessages.snaRequired,\n };\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 0.4 Registration Code');\n }\n\n ngOnInit(): void {\n this.store$.dispatch(resetRegistrationCode());\n this.passwordForm = this.createFormGroup();\n this.registrationCodeValidity$ = this.store$.select(selectRegistrationCodeValidity);\n this.checkRegistrationCodeValidity();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.store$.dispatch(resetRegistrationCodeValidity());\n }\n\n submitStep(): void {\n this.goToNextStep.emit();\n }\n\n public previousStepClick(): void {\n this.goToPreviousStep.emit();\n }\n\n public nextStepClick(): void {\n this.passwordForm.markAllAsTouched();\n if (this.passwordForm.valid) {\n this.validateRegistrationCode();\n }\n }\n\n protected createFormGroup(): FormGroup {\n return this.fb.group({\n [this.Password]: ['', Validators.required],\n });\n }\n\n private checkRegistrationCodeValidity(): void {\n this.subscriptions.add(\n this.registrationCodeValidity$\n .pipe(\n filter((isValid) => isValid),\n take(1),\n )\n .subscribe(() => {\n const registrationCode: string = this.passwordForm.get(this.Password).value;\n this.store$.dispatch(updateRegistrationCode({ registrationCode }));\n this.submitStep();\n }),\n );\n }\n\n private validateRegistrationCode(): void {\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n select((data) => data?.selectedConsultant?.beeNumber),\n take(1),\n )\n .subscribe((prowessId) => {\n const request: ValidateRegistrationCodeRequest = {\n prowessId: prowessId,\n registrationCode: this.passwordForm.get(this.Password).value,\n };\n this.store$.dispatch(validateRegistrationCode({ validateRegistrationCode: request }));\n });\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FindConsultantByZipCodeRequest } from '@core/dto/start-now-app.dto';\nimport { AppState } from '@core/store';\nimport { selectConsultantStepsSkipped } from '@core/store/start-now-app';\nimport {\n findConsultantByZipCode,\n updateConsultantStepsSkipped,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\nimport { NavigationStep } from '@shared/components/stepper-base/navigation-step.model';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Subscription } from 'rxjs';\nimport { StartNowAppStep } from '../../enums/start-now-app-step.enum';\n\n// TODO: StartNowApp - take care of navigationStep item id and orderNumber handling - the id is used as order number\n@Component({\n selector: 'app-start-now-app-consultant-step-wrapper',\n templateUrl: './start-now-app-consultant-step-wrapper.component.html',\n styleUrls: ['./start-now-app-consultant-step-wrapper.component.scss'],\n})\nexport class StartNowAppConsultantStepWrapperComponent implements OnInit, OnChanges, OnDestroy {\n @Input() initialStep: number;\n @Input() steps: NavigationStep[];\n @Output() consultantPhasePassed: EventEmitter = new EventEmitter();\n @Output() stepChanged: EventEmitter = new EventEmitter();\n @Output() navigateToStep: EventEmitter = new EventEmitter();\n\n public StartNowAppStep = StartNowAppStep;\n\n public doIKnowAConsultant: boolean;\n public activeStepId: number = 1;\n private minStep: number;\n private maxStep: number;\n private subscriptions: Subscription = new Subscription();\n\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.store$.select(selectConsultantStepsSkipped).subscribe((consultantStepsSkipped) => {\n this.doIKnowAConsultant = !consultantStepsSkipped;\n }),\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.initialStep?.currentValue) {\n this.activeStepId = this.initialStep ? this.initialStep : this.activeStepId;\n }\n if (changes.steps?.currentValue) {\n this.minStep = this.steps[0].id;\n this.maxStep = this.steps[this.steps.length - 1].id;\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n onKnowConsultantChoice(doIKnow: boolean): void {\n this.doIKnowAConsultant = doIKnow;\n if (this.doIKnowAConsultant) {\n this.store$.dispatch(updateConsultantStepsSkipped({ consultantStepsSkipped: false }));\n this.increaseStep();\n } else {\n this.store$.dispatch(updateConsultantStepsSkipped({ consultantStepsSkipped: true }));\n if (isMexEnv) {\n this.findDefaultMexConsultant();\n this.consultantPhasePassed.emit();\n this.navigateToStep.emit(StartNowAppStep.AboutYou);\n } else {\n this.increaseStep();\n }\n }\n }\n\n goToNextStep(): void {\n if (this.steps) {\n if (this.activeStepId < this.maxStep) {\n this.increaseStep();\n } else {\n this.consultantPhasePassed.emit();\n this.stepChanged.emit(1);\n }\n }\n }\n\n goToPreviousStep(): void {\n if (this.steps) {\n if (this.activeStepId > 0) {\n this.decreaseStep();\n }\n }\n }\n\n isGoToPreviousDisabled(): boolean {\n return this.activeStepId == this.minStep;\n }\n\n goToOtherStep(step: number): void {\n this.consultantPhasePassed.emit();\n this.navigateToStep.emit(step);\n }\n\n private increaseStep(): void {\n if (this.activeStepId < this.maxStep) {\n this.activeStepId++;\n this.stepChanged.emit(1);\n }\n }\n\n private decreaseStep(): void {\n if (this.activeStepId > this.minStep) {\n this.activeStepId--;\n this.stepChanged.emit(-1);\n }\n }\n\n private findDefaultMexConsultant() {\n const dummyZipCodeForDefaultMexConsultant = '00000';\n const findConsultantByZipCodeRequest: FindConsultantByZipCodeRequest = {\n zipCode: dummyZipCodeForDefaultMexConsultant,\n pageNumber: 1,\n pageSize: 1,\n };\n this.store$.dispatch(findConsultantByZipCode({ request: findConsultantByZipCodeRequest }));\n }\n}\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { scrollToTop } from '@shared/utils/scroll-utils';\nimport { BaseComponent } from '../base-component/base-component';\nimport { NavigationStep } from './navigation-step.model';\n\n@Component({\n template: '',\n})\nexport abstract class StepperBaseComponent extends BaseComponent implements OnInit, OnDestroy {\n @Output() stepChanged: EventEmitter = new EventEmitter();\n\n public activeStepId: number;\n public stepProcessing: boolean = false;\n protected activeStepTitle: string;\n protected nextStepTitle: string;\n protected initialStepId: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private _steps: ReadonlyArray;\n\n // @Inject(Object) - https://angular.io/errors/NG2003\n protected constructor(@Inject(Object) steps?: NavigationStep[]) {\n super();\n this.initSteps(steps);\n }\n\n get navigationSteps(): Readonly {\n return this._steps;\n }\n\n get navigationStepLength(): number {\n return this._steps.length;\n }\n\n ngOnInit(): void {\n this.initialStepId = this.initialStepId\n ? this.navigationSteps.find((step) => step.id === this.initialStepId).orderNumber\n : this.navigationSteps[0].orderNumber;\n this.activeStepId = this.initialStepId;\n this.changeStepTitles(this.initialStepId);\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n navigateTo(stepId: number): void {\n scrollToTop();\n this.activeStepId = stepId;\n this.changeStepTitles(stepId);\n }\n\n protected changeStepTitles(stepId: number): void {\n if (this.navigationSteps) {\n this.activeStepTitle = this.navigationSteps.find(\n (navStep) => navStep.orderNumber === stepId,\n ).title;\n this.nextStepTitle = this.navigationSteps.find(\n (navStep) => navStep.orderNumber === stepId + 1,\n )?.title;\n }\n }\n\n /** Gets the next step id based on the given id if there is a next one, otherwise returns the\n * given one. If there aren't defined steps return an undefined. */\n protected getNextStepId(currentId: number): number {\n if (this.navigationSteps) {\n const currentIndex = this.getCurrentStepIndex(currentId);\n if (currentIndex !== -1 && currentIndex < this.navigationSteps.length - 1) {\n return this.navigationSteps[currentIndex + 1].orderNumber;\n } else return currentId;\n } else return undefined;\n }\n\n /** Gets the previous step id based on the given id if there is a previous one, otherwise returns the\n * given one. If there aren't defined steps return an undefined */\n protected getPreviousStepId(currentId: number): number {\n if (this.navigationSteps) {\n const currentIndex = this.getCurrentStepIndex(currentId);\n if (currentIndex !== -1 && currentIndex >= 1) {\n return this.navigationSteps[currentIndex - 1].orderNumber;\n } else return currentId;\n } else return undefined;\n }\n\n protected initSteps(steps: NavigationStep[]): void {\n if (steps) {\n this._steps = steps.sort((a, b) => a.id - b.id);\n this._steps.forEach((navigationStep, i) => (navigationStep.orderNumber = i + 1));\n }\n }\n\n private getCurrentStepIndex(currentId: number) {\n return this.navigationSteps.findIndex((item) => item.orderNumber === currentId);\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'app-start-now-app-progress-bar',\n templateUrl: './start-now-app-progress-bar.component.html',\n styleUrls: ['./start-now-app-progress-bar.component.scss'],\n})\nexport class StartNowAppProgressBarComponent implements OnChanges {\n @Input() step: number;\n\n readonly stepDistance = 12.5;\n dasharray: string = `${Math.PI * 40} ${Math.PI * 40}`;\n dashoffset: string;\n dotPosition: string;\n darkLineWidth: string;\n lightLineWidth: string;\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.step) {\n this.dashoffset = this.calcDashoffset();\n this.dotPosition = this.calcDotPosition();\n this.darkLineWidth = this.calcDarkLineWidth();\n this.lightLineWidth = this.calcLightLineWidth();\n }\n }\n\n calcDashoffset() {\n return (Math.PI * 40 - ((this.step * this.stepDistance) / 100) * (Math.PI * 40)).toString();\n }\n\n calcDotPosition(): string {\n const pixel = this.step === 8 ? '32px' : '16px';\n return 'calc( ' + this.step * this.stepDistance + '% - ' + pixel + ')';\n }\n\n calcDarkLineWidth(): string {\n return (this.step * this.stepDistance).toString() + '%';\n }\n\n calcLightLineWidth(): string {\n return (100 - this.step * this.stepDistance).toString() + '%';\n }\n}\n","
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    \n {{ step }}\n

    \n
    \n\n
    \n \n \n \n \n
    \n {{ step }}/8\n
    \n
    \n","export const Months: string[] = [\n $localize`January`,\n $localize`February`,\n $localize`March`,\n $localize`April`,\n $localize`May`,\n $localize`June`,\n $localize`July`,\n $localize`August`,\n $localize`September`,\n $localize`October`,\n $localize`November`,\n $localize`December`,\n];\n","\n \n {{ label }}\n \n
    \n \n
    \n \n \n \n
    \n
    \n
    \n
    {{ item }}
    \n
    \n
    \n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Host,\n Input,\n Optional,\n SkipSelf,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { getValidationErrorMessageList, validInput } from '@shared/utils/validation.utils';\n\n@Component({\n selector: 'app-number-field-input',\n templateUrl: './number-field-input.component.html',\n styleUrls: ['./number-field-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NumberFieldInputComponent,\n multi: true,\n },\n ],\n})\nexport class NumberFieldInputComponent implements ControlValueAccessor, AfterViewInit {\n @Input()\n identifier: string;\n\n @Input()\n label: string;\n\n @Input()\n placeholder: string;\n\n @Input()\n formErrorMessages: { [key: string]: string } = FormErrorMessages;\n\n @Input()\n formControlName: string;\n\n @Input()\n readonly: boolean = false;\n\n @Input()\n labelStyle: any = {};\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() onlyPositiveNumbers: boolean = false;\n\n @ViewChild('input') input: ElementRef;\n\n disabled = false;\n control: AbstractControl;\n\n getErrorMessages = getValidationErrorMessageList;\n\n value: string;\n\n constructor(\n @Optional()\n @Host()\n @SkipSelf()\n private controlContainer: ControlContainer,\n ) {}\n\n ngAfterViewInit(): void {\n this.control = this.controlContainer?.control.get(this.formControlName);\n }\n\n onChange: (value: string) => void = () => {};\n onTouched = () => {};\n\n writeValue(value: string): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n updateValue(event: any): void {\n this.value = event.target.value;\n this.onChange(this.value);\n this.onTouched();\n }\n\n onKeyDown(event: any) {\n if (this.onlyPositiveNumbers && event.key === '-') {\n event.preventDefault();\n }\n }\n\n get isValidInput(): boolean {\n if (this.control) {\n return validInput(this.control);\n }\n return true;\n }\n\n get errorMessages(): string[] {\n return getValidationErrorMessageList(this.control, this.formErrorMessages);\n }\n}\n","import { GenericErrorMessage } from '@core/constants/sna-error-messages';\n\nexport function getGenericErrorMessage(): string {\n return `${GenericErrorMessage.title} ${GenericErrorMessage.message}`;\n}\n","\n \n {{ MaintenanceErrorMessage }}\n \n \n {{ GenericErrorMessage }}\n \n\n","import { Component, Input } from '@angular/core';\nimport { MaintenanceErrorMessage } from '@core/constants/sna-error-messages';\nimport { getGenericErrorMessage } from '@shared/utils/get-generic-error-message-utils';\nimport { StatusCodes } from 'http-status-codes';\n\n@Component({\n selector: 'app-sna-http-status-errors',\n templateUrl: './sna-http-status-errors.component.html',\n styleUrls: ['./sna-http-status-errors.component.scss'],\n})\nexport class SnaHttpStatusErrorsComponent {\n @Input() statusCode: StatusCodes;\n\n readonly MaintenanceErrorMessage = MaintenanceErrorMessage;\n readonly GenericErrorMessage = getGenericErrorMessage();\n readonly StatusCodes = StatusCodes;\n\n constructor() {}\n}\n","

    It’s all about you.

    \n\n
    \n
    As it should be! Tell us about yourself.
    \n
    \n\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    Birthday – so our team can wish you a happy birthday!
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n
    \n
    \n \n \n I am 18 years of age or older and a legal resident of the u.s. or its territories\n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n {{ checkboxErrorMessage }}\n
    \n\n
    \n \n \n
    \n
    \n \n
    \n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Months } from '@core/constants/months-of-year';\nimport { InputMaxLength } from '@core/enums/input-max-length.enum';\nimport { AppState } from '@core/store';\nimport {\n selectAboutYouIsNextEnabled,\n selectAboutYouStep,\n selectUserInfo,\n} from '@core/store/start-now-app';\nimport { AboutYouStep, UserInfo } from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n resetAboutYouStep,\n updateStartNowAppUserInfo,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { StatusCodes } from 'http-status-codes';\nimport { Observable } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-about-you-step',\n templateUrl: './about-you-step.component.html',\n styleUrls: ['./about-you-step.component.scss'],\n})\nexport class AboutYouStepComponent extends StartNowStepBaseComponent implements OnInit, OnDestroy {\n readonly FirstName: string = 'firstName';\n readonly MiddleName: string = 'middleName';\n readonly LastName: string = 'lastName';\n readonly Month: string = 'month';\n readonly Day: string = 'day';\n readonly Year: string = 'year';\n readonly Conditions: string = 'conditions';\n readonly OlderThan18: string = 'olderThan18';\n readonly Policy: string = 'policy';\n readonly StatusCodes = StatusCodes;\n readonly BirthYearMin = 1900;\n readonly BirthYearMax = new Date().getFullYear() - 18;\n\n aboutYouFormGroup: FormGroup;\n isSubmitted: boolean = false;\n checkboxErrorMessage: string = isMexEnv\n ? $localize`Please fill in the checkboxes!`\n : $localize`Please fill in the checkbox!`;\n aboutYouStep$: Observable;\n\n months = Months;\n\n constructor(\n private fb: FormBuilder,\n private store$: Store,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 1 About You');\n }\n\n ngOnInit(): void {\n this.aboutYouFormGroup = this.createFormGroup();\n this.aboutYouStep$ = this.store$.select(selectAboutYouStep);\n this.prepopulateForm();\n this.isNextEnabledListener();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.store$.dispatch(resetAboutYouStep());\n }\n\n submitStep(): void {\n this.aboutYouFormGroup.markAllAsTouched();\n this.isSubmitted = true;\n\n if (this.aboutYouFormGroup.valid) {\n const userInfo: UserInfo = {\n firstName: this.aboutYouFormGroup.get(this.FirstName).value,\n middleName: this.aboutYouFormGroup.get(this.MiddleName).value,\n lastName: this.aboutYouFormGroup.get(this.LastName).value,\n birthday: this.createDate(),\n };\n this.store$.dispatch(\n updateStartNowAppUserInfo({\n userInfo,\n }),\n );\n }\n }\n\n isValid(): boolean {\n return this.isSubmitted ? this.aboutYouFormGroup.get(this.Conditions).valid : true;\n }\n\n getDaysOfMonth(): number[] {\n const month = this.aboutYouFormGroup.get(this.Month).value;\n const year =\n this.aboutYouFormGroup.get(this.Year).value === ''\n ? 0\n : this.aboutYouFormGroup.get(this.Year).value;\n if (month !== '') {\n const numberOfDays = new Date(year, this.months.indexOf(month) + 1, 0).getDate();\n return Array.from({ length: numberOfDays }, (_, i) => i + 1);\n }\n return [];\n }\n\n protected createFormGroup(): FormGroup {\n const formGroup = this.fb.group({\n [this.FirstName]: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n [this.MiddleName]: ['', [Validators.maxLength(InputMaxLength.Twenty)]],\n [this.LastName]: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n [this.Month]: ['', [Validators.required]],\n [this.Day]: ['', [Validators.required]],\n [this.Year]: [\n '',\n [Validators.required, Validators.max(this.BirthYearMax), Validators.min(this.BirthYearMin)],\n ],\n [this.Conditions]: this.fb.group({\n [this.OlderThan18]: [false, [Validators.requiredTrue]],\n }),\n });\n if (isMexEnv) {\n const conditionFormGroup = formGroup.get(this.Conditions) as FormGroup;\n conditionFormGroup.addControl(this.Policy, new FormControl(false, [Validators.requiredTrue]));\n }\n return formGroup;\n }\n\n private prepopulateForm(): void {\n this.store$\n .select(selectUserInfo)\n .pipe(take(1))\n .subscribe((userInfo) => {\n if (userInfo) {\n this.aboutYouFormGroup.patchValue({\n [this.FirstName]: userInfo.firstName,\n [this.LastName]: userInfo.lastName,\n [this.MiddleName]: userInfo.middleName,\n [this.Month]: this.months[userInfo.birthday.getUTCMonth()],\n [this.Day]: userInfo.birthday.getUTCDate(),\n [this.Year]: userInfo.birthday.getUTCFullYear(),\n [this.Conditions]: {\n [this.OlderThan18]: true,\n },\n });\n if (isMexEnv) {\n this.aboutYouFormGroup.patchValue({\n [this.Conditions]: {\n [this.Policy]: true,\n },\n });\n }\n }\n });\n }\n\n private isNextEnabledListener(): void {\n this.subscriptions.add(\n this.store$\n .select(selectAboutYouIsNextEnabled)\n .pipe(filter((isNextEnabled) => isNextEnabled))\n .subscribe(() => this.goToNextStep.emit()),\n );\n }\n\n private createDate(): Date {\n const day = this.aboutYouFormGroup.get(this.Day).value;\n const month = this.aboutYouFormGroup.get(this.Month).value;\n const year = this.aboutYouFormGroup.get(this.Year).value;\n return new Date(Date.UTC(year, this.months.indexOf(month), day));\n }\n}\n","

    We want to connect with you

    \n\n
    \n
    \n Tell us how best to share information with you. (We will not send you spam emails, we promise.)\n
    \n
    \n\n\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n\n \n \n {{ EmailValidationText }}\n \n
    \n \n\n
    \n
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n
    \n\n
    \n
    \n \n \n {{ CellPhoneNumberValidationText }}\n \n
    \n \n \n {{ HomeNumberValidationText }}\n \n
    \n
    \n \n
    \n \n \n \n
    \n \n \n \n\n

    You will receive text notifications about your orders

    \n\n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { ValidEmailRegExp, ValidPhoneRegExp } from '@core/constants/patterns';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\nimport { InputMaxLength } from '@core/enums/input-max-length.enum';\nimport { PhoneNumberType } from '@core/enums/phone-number-type.enum';\nimport { ConnectWithYouStepModel } from '@core/models/start-now-app.model';\nimport { LogRocketService } from '@core/services/logrocket.service';\nimport { AppState } from '@core/store';\nimport {\n selectContactInfoIsNextEnabled,\n selectContactStep,\n selectContactUniquenessCheck,\n selectStartNowAppData,\n selectStepProcessing,\n} from '@core/store/start-now-app';\nimport {\n ContactInfo,\n ContactStep,\n ContactUniquenessCheck,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n emailUniquenessCheck,\n phoneNumberUniquenessCheck,\n resetContactStep,\n resetEmailValidity,\n resetPhoneNumberValidity,\n updateStartNowAppContactInfo,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { select, Store } from '@ngrx/store';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\nimport { matchValidator } from '@shared/utils/validation.utils';\nimport { StatusCodes } from 'http-status-codes';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-connect-with-you-step',\n templateUrl: './connect-with-you-step.component.html',\n styleUrls: ['./connect-with-you-step.component.scss'],\n})\nexport class ConnectWithYouStepComponent\n extends StartNowStepBaseComponent\n implements OnInit, OnDestroy\n{\n readonly Email: string = 'email';\n readonly EmailConfirm: string = 'emailConfirm';\n readonly CellPhoneNumber: string = 'cellPhoneNumber';\n readonly HomeNumber: string = 'homeNumber';\n readonly Whatsapp: string = 'whatsapp';\n readonly SMS: string = 'sms';\n readonly emailConfirmErrorMessage = $localize`Please confirm your email address.\n It must match the email address above.`;\n readonly validEmailRegExp = ValidEmailRegExp;\n readonly validPhoneRegExp = ValidPhoneRegExp;\n readonly CellPhoneNumberValidationText = $localize`This cell phone number already exists in our\n system. Please provide a different phone number`;\n readonly HomeNumberValidationText = $localize`This home number already exists in our system.\n Please provide a different phone number`;\n readonly PhoneNumberType = PhoneNumberType;\n readonly EmailValidationText = $localize`This email address already exists in our system.\n Please provide a different email address`;\n readonly StatusCodes = StatusCodes;\n readonly FormErrorTypes = FormErrorTypes;\n readonly ErrorMessages = {\n [FormErrorTypes.required]: FormErrorMessages.snaRequired,\n [FormErrorTypes.pattern]: $localize`Cannot start with 1`,\n [FormErrorTypes.maxlength]: FormErrorMessages.maxlength,\n [FormErrorTypes.minlength]: FormErrorMessages.minlength,\n [FormErrorTypes.email]: FormErrorMessages.email,\n };\n readonly isUsaEnv = isUsaEnv;\n\n connectWithYouFormGroup: FormGroup;\n isSubmitted: boolean = false;\n contactUniquenessCheck$: Observable;\n stepProcessing$: Observable;\n contactStep$: Observable;\n\n private connectWithYouDefault: ConnectWithYouStepModel = {\n email: [\n '',\n [\n Validators.required,\n emailValidator(this.validEmailRegExp),\n Validators.maxLength(InputMaxLength.Fifty),\n ],\n ],\n emailConfirm: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n cellPhoneNumber: [\n '',\n [\n Validators.required,\n Validators.maxLength(InputMaxLength.Ten),\n Validators.minLength(InputMaxLength.Ten),\n Validators.pattern(this.validPhoneRegExp),\n ],\n ],\n homeNumber: [\n '',\n [\n Validators.maxLength(InputMaxLength.Ten),\n Validators.minLength(InputMaxLength.Ten),\n Validators.pattern(this.validPhoneRegExp),\n ],\n ],\n whatsapp: [this.isMexEnv],\n sms: [this.isUsaEnv],\n };\n\n constructor(\n private formBuilder: FormBuilder,\n private store$: Store,\n private logRocketService: LogRocketService,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 2 Connect With You');\n }\n\n ngOnInit(): void {\n this.contactUniquenessCheck$ = this.store$.select(selectContactUniquenessCheck);\n this.connectWithYouFormGroup = this.createFormGroup();\n this.prepopulateForm();\n this.stepProcessing$ = this.store$.select(selectStepProcessing);\n this.contactStep$ = this.store$.select(selectContactStep);\n this.updateContactInfoIfEmailIsValid();\n this.isNextEnabledListener();\n this.uniquenessListener();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.store$.dispatch(resetContactStep());\n }\n\n submitStep(): void {\n this.connectWithYouFormGroup.markAllAsTouched();\n this.connectWithYouFormGroup.updateValueAndValidity();\n this.isSubmitted = true;\n\n if (this.connectWithYouFormGroup.valid) {\n this.store$.dispatch(\n emailUniquenessCheck({ email: this.connectWithYouFormGroup.get(this.Email).value }),\n );\n\n const cellPhoneNumber = this.connectWithYouFormGroup.get(this.CellPhoneNumber).value;\n const homeNumber = this.connectWithYouFormGroup.get(this.HomeNumber).value;\n\n this.phoneNumberUniquenessCheck(cellPhoneNumber, this.PhoneNumberType.Mobile);\n if (!!homeNumber) {\n this.phoneNumberUniquenessCheck(homeNumber, this.PhoneNumberType.Home);\n }\n this.resetEmailErrorSubscriptions();\n this.resetPhoneNumberErrorSubscription(this.CellPhoneNumber, this.PhoneNumberType.Mobile);\n this.resetPhoneNumberErrorSubscription(this.HomeNumber, this.PhoneNumberType.Home);\n }\n }\n\n protected createFormGroup(): FormGroup {\n return this.formBuilder.group(this.connectWithYouDefault, {\n validators: matchValidator(this.EmailConfirm, this.Email, this.FormErrorTypes.emailConfirm),\n });\n }\n\n private prepopulateForm() {\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n take(1),\n select((startNowAppData) => startNowAppData?.contactInfo),\n )\n .subscribe((contactInfo) => {\n if (contactInfo) {\n this.connectWithYouFormGroup.setValue({\n email: contactInfo.email,\n emailConfirm: contactInfo.emailConfirm,\n cellPhoneNumber: contactInfo.cellPhoneNumber,\n homeNumber: contactInfo.homeNumber ? contactInfo.homeNumber : null,\n whatsapp: contactInfo.whatsapp,\n sms: contactInfo.sms,\n });\n }\n });\n }\n\n private updateContactInfoIfEmailIsValid() {\n this.subscriptions.add(\n this.contactUniquenessCheck$\n .pipe(\n filter((contactUniquenessCheck) => {\n if (!!this.connectWithYouFormGroup.get(this.HomeNumber).value) {\n return (\n contactUniquenessCheck.emailIsValid &&\n contactUniquenessCheck.phoneValidity[PhoneNumberType.Mobile] &&\n contactUniquenessCheck.phoneValidity[PhoneNumberType.Home]\n );\n } else {\n return (\n contactUniquenessCheck.emailIsValid &&\n contactUniquenessCheck.phoneValidity[PhoneNumberType.Mobile]\n );\n }\n }),\n )\n .subscribe(() => {\n const homeNumber = this.connectWithYouFormGroup.get(this.HomeNumber).value;\n const contactInfo: ContactInfo = {\n email: this.connectWithYouFormGroup.get(this.Email).value,\n emailConfirm: this.connectWithYouFormGroup.get(this.EmailConfirm).value,\n cellPhoneNumber: this.connectWithYouFormGroup.get(this.CellPhoneNumber).value,\n homeNumber: homeNumber === '' ? null : homeNumber,\n whatsapp: this.connectWithYouFormGroup.get(this.Whatsapp).value,\n sms: this.connectWithYouFormGroup.get(this.SMS).value,\n };\n this.store$.dispatch(resetContactStep());\n this.store$.dispatch(\n updateStartNowAppContactInfo({\n contactInfo,\n }),\n );\n this.logRocketService.logRocketIdentify(contactInfo.email);\n }),\n );\n }\n\n private isNextEnabledListener(): void {\n this.subscriptions.add(\n this.store$\n .select(selectContactInfoIsNextEnabled)\n .pipe(filter((isNextEnabled) => isNextEnabled))\n .subscribe(() => {\n this.goToNextStep.emit();\n }),\n );\n }\n\n private uniquenessListener(): void {\n this.subscriptions.add(\n this.contactUniquenessCheck$.pipe(distinctUntilChanged()).subscribe((uniquenessCheck) => {\n if (uniquenessCheck.phoneValidity.Home === false) {\n this.connectWithYouFormGroup.get(this.HomeNumber).setErrors({ uniqueness: false });\n }\n if (uniquenessCheck.phoneValidity.Mobile === false) {\n this.connectWithYouFormGroup.get(this.CellPhoneNumber).setErrors({ uniqueness: false });\n }\n }),\n );\n }\n\n private phoneNumberUniquenessCheck(phoneNumber: string, phoneNumberType: PhoneNumberType): void {\n this.store$.dispatch(\n phoneNumberUniquenessCheck({\n request: {\n phoneNumber,\n phoneNumberType,\n },\n }),\n );\n }\n\n private resetEmailErrorSubscriptions(): void {\n this.subscriptions.add(\n this.connectWithYouFormGroup\n .get(this.Email)\n .valueChanges.pipe(take(1))\n .subscribe(() => this.store$.dispatch(resetEmailValidity())),\n );\n }\n\n private resetPhoneNumberErrorSubscription(field: string, phoneNumberType: PhoneNumberType): void {\n this.subscriptions.add(\n this.connectWithYouFormGroup\n .get(field)\n .valueChanges.pipe(take(1))\n .subscribe(() => {\n this.store$.dispatch(resetPhoneNumberValidity({ phoneNumberType }));\n this.connectWithYouFormGroup.get(field).updateValueAndValidity({ emitEvent: false });\n }),\n );\n }\n}\n","export enum AddressValidationErrors {\n ForbiddenState = '1031',\n}\n","import { AddressValidationErrors } from '@core/enums/address-validation-errors.enum';\n\nexport const AddressValidationErrorMessages = {\n // eslint-disable-next-line max-len\n [AddressValidationErrors.ForbiddenState]: $localize`The state you have chosen is not yet available!`,\n};\n","
    \n \n \n An address element after the house number, in most cases the sub-premise, was not valid.\n \n
    \n
    \n \n \n An address element after the house number, in most cases the sub-premise, was missing.\n \n
    \n
    \n \n \n The PO (Post Office Box), RR (Rural Route), or HC (Highway Contract) Box number is invalid.\n \n
    \n
    \n \n \n The PO (Post Office Box), RR (Rural Route), or HC (Highway Contract) Box number is missing.\n \n
    \n
    \n \n \n The sub premise (suite) type was added or changed, such as from “STE” to “APT.”\n \n
    \n
    \n \n The sub premise (suite) unit number was added or changed.\n
    \n
    \n \n \n \n The subadministrative area was added or changed.\n \n
    \n
    \n \n \n The premise (house or building) number for the address is not valid.\n \n
    \n
    \n \n \n The premise (house or building) number for the address is missing.\n \n
    \n
    \n \n \n The thoroughfare (street) name was added or changed due to a spelling correction.\n \n
    \n
    \n \n \n \n The thoroughfare (street) leading or trailing type was added or changed, such as from \"St\" to \"Rd.\"\n \n
    \n
    \n \n \n \n The thoroughfare (street) pre-directional or post-directional was added or changed, such as from \"N\" to \"NW.\"\n \n
    \n
    \n \n \n \n Could not match the input street to a unique street name. Either no matches or too many matches found.\n \n
    \n
    \n \n \n \n The combination of directionals (N, E, SW, etc) and the suffix (AVE, ST, BLVD) is not correct and produced multiple possible matches.\n \n
    \n","import { Component, Input } from '@angular/core';\nimport { MelissaErrorCode } from '@core/enums/melissa-error-code';\n\n@Component({\n selector: 'app-sna-address-error-messages',\n templateUrl: './sna-address-error-messages.component.html',\n styleUrls: ['../sna-address-validation-modal.component.scss'],\n})\nexport class SnaAddressErrorMessagesComponent {\n @Input() public hasAddressErrorCode: ((code: MelissaErrorCode) => boolean) | undefined;\n\n codes = MelissaErrorCode;\n}\n","
    \n
    \n
    \n The address that you entered cannot be corrected by the address verification service. Please\n enter a valid address!\n
    \n
    \n
    \n\n
    \n

    \n We are unable to verify the delivery address you specified. Please ensure it's a VALID address\n and/or make any necessary corrections. Then click Next to Continue. You may choose to use your\n address. If you user your address, taxes will be calculated based on your zip code. You may\n change the delivery address at any time prior to submitting the order and taxes will be\n recalculated.\n

    \n

    \n Please note: If your delivery address has both a street address and a PO Box, please specify\n ONLY ONE as the \"Ship To\" address.\n

    \n
    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n\n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n \n\n \n\n \n \n \n \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n \n \n The address could not be verified at least up to the postal code level.\n \n
    \n
    \n \n The postal code was changed or added.\n
    \n
    \n \n The administrative area (state, province) was added or changed.\n
    \n
    \n \n The locality (city, municipality) name was added or changed.\n
    \n
    \n \n The dependent locality (urbanization) was changed.\n
    \n
    \n\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n \n \n \n \n \n \n \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { MelissaErrorCode } from '@core/enums/melissa-error-code';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { AddressVerification } from '@core/store/start-now-app/start-now-app-state-models';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n// TODO: StartNowApp - this component is very similar to AddressValidationComponent\n// the EC and SNA address validation response is different\n\n@Component({\n selector: 'app-sna-address-validation-modal',\n templateUrl: './sna-address-validation-modal.component.html',\n styleUrls: ['./sna-address-validation-modal.component.scss'],\n})\nexport class SnaAddressValidationModalComponent implements OnInit, OnDestroy {\n @Input() addressValidation$: Observable;\n @Input() countryStates: SelectOption[];\n @Input() isForbiddenState: boolean;\n @Input() finalizeAddress: (\n formGroup: FormGroup,\n isCorrectedAddress: boolean,\n isPostOfficeBox: boolean,\n ) => void;\n @Input() dismiss: () => void;\n\n readonly AddressLine1: string = 'address1';\n readonly AddressLine2: string = 'address2';\n readonly AddressLine3: string = 'address3';\n readonly City: string = 'city';\n readonly State: string = 'state';\n readonly ZipCode: string = 'zip';\n readonly isMexEnv = isMexEnv;\n readonly isCorrectedAddress = true;\n codes = MelissaErrorCode;\n originalAddressFormGroup: FormGroup;\n correctedAddressFormGroup: FormGroup;\n isOriginalAddress: boolean = true;\n isPostOfficeBox: boolean = true;\n validationCategoryAddresses: MelissaErrorCode[];\n validationCategoryLocations: MelissaErrorCode[];\n\n constructor(private fb: FormBuilder) {}\n\n modalConfig: ModalConfig;\n private modalSubscription: Subscription;\n\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n ngOnInit(): void {\n this.modalConfig = {\n title: $localize`Address Verification`,\n ngbModalOptions: {\n size: 'lg',\n },\n hideCloseButton: true,\n hideDismissButton: true,\n onDismiss: this.cancel?.bind(this),\n };\n\n this.modalSubscription = this.addressValidation$\n ?.pipe(filter((data) => !!data && !data.isValid && !!data.correctedAddress))\n .subscribe((data) => {\n this.validationCategoryAddresses = data.validationCategoryAddresses;\n this.validationCategoryLocations = data.validationCategoryLocations;\n this.isPostOfficeBox = data.isPostOfficeBox;\n this.modalComponent.open();\n\n this.originalAddressFormGroup = this.fb.group({\n [this.AddressLine1]: [data.originalAddress.address1, [this.addressValidationFn()]],\n [this.AddressLine2]: [data.originalAddress.address2, [this.addressValidationFn()]],\n [this.City]: [data.originalAddress.city, [this.cityValidationFn()]],\n [this.State]: [data.originalAddress.state, [this.stateValidationFn()]],\n [this.ZipCode]: [data.originalAddress.zip, [this.zipValidationFn()]],\n });\n\n const correctedAddressLine2 = data.correctedAddress.address2\n ? data.correctedAddress.address2\n : '';\n\n this.correctedAddressFormGroup = this.fb.group({\n [this.AddressLine1]: [data.correctedAddress.address1.trim()],\n [this.AddressLine2]: [correctedAddressLine2.trim()],\n [this.City]: [data.correctedAddress.city],\n [this.State]: [data.correctedAddress.state],\n [this.ZipCode]: [data.correctedAddress.zip],\n });\n\n if (isMexEnv) {\n const originalAddressLine3Control = new FormControl(data.originalAddress.address3, [\n this.addressValidationFn(),\n ]);\n const correctedAddressLine3Control = new FormControl(\n data.correctedAddress.address3 ? data.correctedAddress.address3 : '',\n );\n this.originalAddressFormGroup.addControl(this.AddressLine3, originalAddressLine3Control);\n this.correctedAddressFormGroup.addControl(\n this.AddressLine3,\n correctedAddressLine3Control,\n );\n }\n\n setTimeout(() => this.originalAddressFormGroup.markAllAsTouched());\n });\n }\n\n ngOnDestroy(): void {\n this.modalSubscription.unsubscribe();\n }\n\n cancel(): void {\n this.originalAddressFormGroup.markAllAsTouched();\n this.originalAddressFormGroup.updateValueAndValidity();\n this.dismiss();\n this.modalComponent.close();\n }\n\n continue(): void {\n if (this.isOriginalAddress) {\n this.finalizeAddress(\n this.originalAddressFormGroup,\n !this.isCorrectedAddress,\n this.isPostOfficeBox,\n );\n } else {\n this.finalizeAddress(\n this.correctedAddressFormGroup,\n this.isCorrectedAddress,\n this.isPostOfficeBox,\n );\n }\n this.modalComponent.close();\n }\n\n public hasZipError(): boolean {\n return this.hasLocationErrorCode(this.codes.AE01) || this.hasLocationErrorCode(this.codes.AC01);\n }\n\n public hasStateError(): boolean {\n return this.hasLocationErrorCode(this.codes.AE01) || this.hasLocationErrorCode(this.codes.AC02);\n }\n\n public hasCityError(): boolean {\n return (\n this.hasLocationErrorCode(this.codes.AE01) ||\n this.hasLocationErrorCode(this.codes.AC03) ||\n this.hasLocationErrorCode(this.codes.AC09)\n );\n }\n\n public hasAddressError(): boolean {\n return (\n this.validationCategoryAddresses != undefined && this.validationCategoryAddresses.length > 0\n );\n }\n\n public hasAddressErrorCode = (code: MelissaErrorCode): boolean =>\n this.validationCategoryAddresses?.includes(code) ?? false;\n\n public hasLocationErrorCode(code: MelissaErrorCode): boolean {\n return this.validationCategoryLocations?.some((error) => error.startsWith(code)) ?? false;\n }\n\n private addressValidationFn(): ValidatorFn {\n return (): ValidationErrors => (this.hasAddressError() ? { melissaAddress: true } : null);\n }\n\n private zipValidationFn(): ValidatorFn {\n return (): ValidationErrors => (this.hasZipError() ? { melissaZip: true } : null);\n }\n\n private stateValidationFn(): ValidatorFn {\n return (): ValidationErrors => (this.hasStateError() ? { melissaState: true } : null);\n }\n\n private cityValidationFn(): ValidatorFn {\n return (): ValidationErrors => (this.hasCityError() ? { melissaCity: true } : null);\n }\n}\n","

    Wait till you see all your business tools!

    \n\n
    \n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n
    \n\n\n \n {{ AddressValidationErrorMessages[addressValidationResultErrorCode] }}\n \n \n\n\n
    \n Language Preference\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n This field is required\n
    \n
    \n\n
    \n
    Should we ship all products to the address above?
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n\n\n
    \n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n \n \n {{ AddressValidationErrorMessages[addressValidationResultErrorCode] }}\n \n \n \n\n\n
    \n \n \n
    \n\n\n\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { AddressValidationErrorMessages } from '@core/constants/address-validation-error-messages';\nimport { PFASSTATE } from '@core/constants/pfas-state';\nimport { MaintenanceErrorMessage } from '@core/constants/sna-error-messages';\nimport { AddressType } from '@core/enums/address-type.enum';\nimport { AddressValidationErrors } from '@core/enums/address-validation-errors.enum';\nimport { Country } from '@core/enums/country.enum';\nimport { InputMaxLength } from '@core/enums/input-max-length.enum';\nimport { LanguagePreferenceType } from '@core/enums/language-preference-type.enum';\nimport { AppState } from '@core/store';\nimport {\n selectAddressInfo,\n selectAddressInfoIsNextEnabled,\n selectAddressValidationModalData,\n selectAddressValidationStep,\n selectCanAddressOverride,\n selectSnaCountryStates,\n} from '@core/store/start-now-app';\nimport {\n Address,\n AddressValidationStep,\n AddressVerification,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n fetchCountryStates,\n fetchStartNowAppStarterKits,\n resetAddressValidationModal,\n resetAddressValidationStep,\n stepProcessing,\n updateStartNowAppAddressInfo,\n validateAddress,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { environment } from '@env';\nimport { select, Store } from '@ngrx/store';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { getGenericErrorMessage } from '@shared/utils/get-generic-error-message-utils';\nimport { validInput } from '@shared/utils/validation.utils';\nimport { StatusCodes } from 'http-status-codes';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-wait-business-tools-step',\n templateUrl: './wait-business-tools-step.component.html',\n styleUrls: ['./wait-business-tools-step.component.scss'],\n})\nexport class WaitBusinessToolsStepComponent\n extends StartNowStepBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n @Output() showConsultantList: EventEmitter = new EventEmitter();\n readonly HomeAddressFormGroup: string = 'homeAddressFormGroup';\n readonly ShippingAddressFromGroup: string = 'shippingAddressFormGroup';\n readonly AddressLine1: string = 'address1';\n readonly AddressLine2: string = 'address2';\n readonly AddressLine3: string = 'address3';\n readonly City: string = 'city';\n readonly State: string = 'state';\n readonly ZipCode: string = 'zip';\n readonly AddressValidationErrorMessages = AddressValidationErrorMessages;\n readonly GenericErrorMessage = getGenericErrorMessage();\n readonly MaintenanceErrorMessage = MaintenanceErrorMessage;\n readonly StatusCodes = StatusCodes;\n readonly Country: Country = environment.country;\n readonly LanguagePreferred: string = 'languagePreference';\n readonly LanguagePreferenceType = LanguagePreferenceType;\n\n public formSubmitted: boolean = false;\n public canAddressOverride$: Observable;\n addressFormGroup: FormGroup;\n countryStates$: Observable;\n useHomeAddressForShipping: boolean = true;\n addressValidation$: Observable;\n addressStep$: Observable;\n noCorrectedAddress: boolean = false;\n isForbiddenState: boolean = false;\n addressValidationResultErrorCode: string;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 3 Wait Business Tools');\n }\n\n ngOnInit(): void {\n this.store$.dispatch(fetchCountryStates());\n this.canAddressOverride$ = this.store$.select(selectCanAddressOverride);\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectSnaCountryStates));\n this.addressStep$ = this.store$.select(selectAddressValidationStep);\n\n this.addressValidation$ = this.store$\n .select(selectAddressValidationModalData)\n .pipe(select((data) => data?.payload));\n\n this.listenAddressValidation();\n this.listenSubmitProcesses();\n this.listenValidationResult();\n\n this.addressFormGroup = this.createFormGroup();\n\n if (this.isMexEnv) {\n this.addressFormGroup\n .get(this.LanguagePreferred)\n ?.setValue(this.LanguagePreferenceType.Mexico);\n }\n this.addressFormGroup.get(this.ShippingAddressFromGroup)?.disable({ emitEvent: false });\n }\n\n ngAfterViewInit(): void {\n this.prepopulateForm();\n }\n\n ngOnDestroy(): void {\n this.store$.dispatch(resetAddressValidationModal());\n this.store$.dispatch(resetAddressValidationStep());\n super.ngOnDestroy();\n }\n\n submitStep(): void {\n this.formSubmitted = true;\n this.addressFormGroup.markAllAsTouched();\n this.addressFormGroup.updateValueAndValidity();\n\n let state = this.useHomeAddressForShipping\n ? this.addressFormGroup.get(this.HomeAddressFormGroup).get(`${this.State}`).value\n : this.addressFormGroup.get(this.ShippingAddressFromGroup).get(`${this.State}`).value;\n const languagePreferred = this.addressFormGroup.get(this.LanguagePreferred).value;\n let isNonPfasState = state === PFASSTATE ? true : false;\n\n this.store$.dispatch(\n fetchStartNowAppStarterKits({\n starterKitLanguageCode: languagePreferred,\n isNonPfas: !isNonPfasState,\n }),\n );\n\n const addressToValidate = this.useHomeAddressForShipping\n ? this.addressFormGroup.get(this.HomeAddressFormGroup).value\n : this.addressFormGroup.get(this.ShippingAddressFromGroup).value;\n\n if (this.addressFormGroup.valid) {\n this.store$.dispatch(stepProcessing({ stepProcessing: true }));\n const addressType = this.useHomeAddressForShipping ? AddressType.Home : AddressType.Shipping;\n this.store$.dispatch(\n validateAddress({\n address: { ...addressToValidate, addressType, country: environment.country },\n }),\n );\n\n this.listenAddressChangeAndResetForbiddenState();\n }\n }\n\n listenSubmitProcesses() {\n this.subscriptions.add(\n combineLatest([\n this.store$.select(selectAddressValidationStep),\n this.store$.select(selectAddressInfoIsNextEnabled),\n ])\n .pipe(\n filter(([step, isNextEnabled]) => step.isAddressValidationSuccess && isNextEnabled),\n take(1),\n )\n .subscribe(() => {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n this.goToNextStep.emit();\n }),\n );\n }\n\n /** Finalize address processes by address-validation-modal.\n * If the user entered a wrong address by this modal can choose the user the wrong or the corrected one */\n finalizeAddress = (\n validatedFormGroup: FormGroup,\n isCorrectedAddress: boolean,\n isPostOfficeBox: boolean,\n ): void => {\n this.canAddressOverride$.pipe(take(1)).subscribe((canOverride) => {\n const address: Address = validatedFormGroup.value;\n const homeAndShippingAddress = this.createShippingHomeAddressArray({\n ...address,\n isPostOfficeBox,\n });\n const languagePreferred = this.addressFormGroup.get(this.LanguagePreferred).value;\n if (canOverride || isCorrectedAddress) {\n if (this.useHomeAddressForShipping) {\n this.addressFormGroup.get(this.HomeAddressFormGroup)?.patchValue(address);\n } else {\n this.addressFormGroup.get(this.ShippingAddressFromGroup)?.patchValue(address);\n }\n this.store$.dispatch(stepProcessing({ stepProcessing: true }));\n this.store$.dispatch(\n updateStartNowAppAddressInfo({\n addresses: homeAndShippingAddress,\n languagePreferred,\n }),\n );\n } else {\n const addressType = this.useHomeAddressForShipping\n ? AddressType.Home\n : AddressType.Shipping;\n this.store$.dispatch(\n validateAddress({\n address: { ...address, addressType: addressType, country: environment.country },\n }),\n );\n }\n });\n };\n\n dismissAddressValidationModal = (): void => {\n this.store$.dispatch(resetAddressValidationModal());\n };\n\n toggleShippingAddressActivity(useSameAddress: boolean): void {\n if (useSameAddress) {\n this.addressFormGroup.get(this.ShippingAddressFromGroup)?.disable({ emitEvent: false });\n } else {\n this.addressFormGroup.get(this.ShippingAddressFromGroup)?.enable({ emitEvent: false });\n }\n }\n\n get radioButtonValidInput(): boolean {\n return validInput(this.addressFormGroup.get(this.LanguagePreferred));\n }\n\n protected createFormGroup(): FormGroup {\n const homeAddressFormGroup = this.createAddressFormGroup();\n const shippingAddressFormGroup = this.createAddressFormGroup();\n\n if (this.isMexEnv) {\n homeAddressFormGroup.addControl(\n this.AddressLine3,\n new FormControl('', [Validators.maxLength(InputMaxLength.Fifty)]),\n );\n\n shippingAddressFormGroup.addControl(\n this.AddressLine3,\n new FormControl('', [Validators.maxLength(InputMaxLength.Fifty)]),\n );\n }\n\n return this.fb.group({\n [this.HomeAddressFormGroup]: homeAddressFormGroup,\n [this.ShippingAddressFromGroup]: shippingAddressFormGroup,\n [this.LanguagePreferred]: ['', Validators.required],\n });\n }\n\n private createAddressFormGroup(): FormGroup {\n return this.fb.group({\n [this.AddressLine1]: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n [this.AddressLine2]: ['', [Validators.maxLength(InputMaxLength.Fifty)]],\n [this.City]: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n [this.State]: ['', [Validators.required]],\n [this.ZipCode]: ['', [Validators.required, Validators.maxLength(InputMaxLength.Ten)]],\n });\n }\n\n private prepopulateForm() {\n this.store$\n .select(selectAddressInfo)\n .pipe(\n take(1),\n filter((addressInfo) => !!addressInfo?.addresses?.length),\n )\n .subscribe(({ addresses, languagePreferred }) => {\n let isShippingAddress = false;\n addresses.forEach((address) => {\n if (address.addressType === AddressType.Home) {\n this.addressFormGroup.get(this.HomeAddressFormGroup)?.patchValue(address);\n } else if (address.addressType === AddressType.Shipping) {\n this.addressFormGroup.get(this.ShippingAddressFromGroup)?.patchValue(address);\n isShippingAddress = true;\n }\n });\n\n this.addressFormGroup\n .get(this.LanguagePreferred)\n ?.setValue(languagePreferred, { emitEvent: false });\n this.useHomeAddressForShipping = !isShippingAddress;\n this.toggleShippingAddressActivity(!isShippingAddress);\n });\n }\n\n private listenAddressValidation() {\n this.subscriptions.add(\n this.addressValidation$\n .pipe(filter((addressValidation) => addressValidation?.isValid))\n .subscribe((addressValidation) => {\n const shippingAddress = {\n ...this.selectShippingAddress(),\n isPostOfficeBox: addressValidation.isPostOfficeBox,\n };\n const homeAndShippingAddress = this.createShippingHomeAddressArray(shippingAddress);\n const languagePreferred = this.addressFormGroup.get(this.LanguagePreferred).value;\n this.store$.dispatch(\n updateStartNowAppAddressInfo({\n addresses: homeAndShippingAddress,\n languagePreferred,\n }),\n );\n }),\n );\n }\n\n private createShippingHomeAddressArray(shippingAddress: Address): Address[] {\n if (this.useHomeAddressForShipping) {\n return [\n {\n ...shippingAddress,\n addressType: AddressType.Home,\n country: this.Country,\n },\n ];\n }\n\n return [\n {\n ...this.addressFormGroup.get(this.HomeAddressFormGroup).value,\n addressType: AddressType.Home,\n country: this.Country,\n },\n {\n ...shippingAddress,\n addressType: AddressType.Shipping,\n country: this.Country,\n },\n ];\n }\n\n private selectShippingAddress(): Address {\n if (this.useHomeAddressForShipping) {\n return this.addressFormGroup.get(this.HomeAddressFormGroup).value;\n }\n return this.addressFormGroup.get(this.ShippingAddressFromGroup).value;\n }\n\n private listenValidationResult() {\n this.subscriptions.add(\n this.store$\n .select(selectAddressValidationModalData)\n .pipe(\n select((data) => data?.validationResult?.errors),\n filter((errors) => !!errors),\n )\n .subscribe((errors) => {\n this.isForbiddenState = !!errors.find((error) => {\n if (error.errorCode === AddressValidationErrors.ForbiddenState) {\n this.addressValidationResultErrorCode = error.errorCode;\n return true;\n }\n return false;\n });\n }),\n );\n }\n\n private listenAddressChangeAndResetForbiddenState() {\n this.subscriptions.add(\n this.addressFormGroup.valueChanges.pipe(take(1)).subscribe(() => {\n this.isForbiddenState = false;\n this.addressValidationResultErrorCode = '';\n }),\n );\n }\n}\n","\n \n \n \n \n
    \n
    \n
    \n

    {{ starterKit.description1 }}

    \n
    \n
    \n
    \n
    \n
    \n
    \n {{ starterKit.description2 }}\n
    \n
    \n
    \n \n \n {{ isSelected ? Selected : Select }}\n \n \n
    \n \n Starter kit details\n \n *Plus tax\n
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { StarterKit } from '@core/store/start-now-app/start-now-app-state-models';\nimport { isMexEnv } from '@shared/utils/environment-utils';\n\n@Component({\n selector: 'app-starter-kit-card',\n templateUrl: './starter-kit-card.component.html',\n styleUrls: ['./starter-kit-card.component.scss'],\n})\nexport class StarterKitCardComponent {\n @Input()\n starterKit: StarterKit;\n\n @Input()\n isSelected: boolean;\n\n @Output() selectChange: EventEmitter = new EventEmitter();\n\n readonly Select: string = $localize`Select`;\n readonly Selected: string = $localize`Selected`;\n\n readonly isMexEnv = isMexEnv;\n\n onClick(starterKit: StarterKit) {\n this.selectChange.emit(starterKit);\n }\n\n constructor() {}\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-less-deposit-information',\n templateUrl: './less-deposit-information.component.html',\n styleUrls: ['./less-deposit-information.component.scss'],\n})\nexport class LessDepositInformationComponent {}\n","\n

    \n *You selected the $0 deposit option for your Starter Kit. Once you reach $750 or more in personal sales during\n the first 60 days**, you’ll receive a Starter Kit with over $600 in products and business supplies – the full\n cost of $199*** will be automatically deducted from your profits.\n

    \n

    \n If you do not reach $750 or more in sales during your first 60 days following submission of your application &\n agreement, you will continue to have access to Consultant’s Corner and your online store. However, you will\n forfeit the opportunity to purchase the Starter Kit for $199*** (which includes products and business supplies\n valued at over $600).\n

    \n
    \n\n

    \n **All references to “sales” refer to Qualifying Volume (QV), which can come from any combination of party\n and/or eCommerce orders submitted with a deposit of 50% or more during Period 9, 2024 (August 10, 2024 –\n September 6, 2024).\n

    \n

    \n ***Plus tax, no delivery fee. There is no guarantee that a Consultant will earn any income or qualify for\n Princess House incentives and/or trips. In 2023, the average commissions paid to active Princess House\n Consultants was $1,103. And, on average, 1,089 hardworking Consultants achieve the Incentive Trip each year.\n Visit princesshouse.com/income-disclosure for more information.\n

    \n
    \n","

    {{ titles[country] }}

    \n
    \n Your Starter Kit contains a selection of items to help you build your Princess House business.\n
    \n\n
    \n \n \n
    \n\n\n
    \n
    \n \n Note: Your Starter Kit may be received in two shipments. Products and printed material boxes\n may arrive separately in 5 – 7 business days after your order is processed for shipment. To\n ensure kits are current, products and tools included are subject to change.\n \n
    \n
    \n\n\n
    Select payment option
    \n
    \n
    \n
    \n \n
    \n \n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n
    \n \n If you only pay the {{ payment.depositPaymentValue | phCurrency }} deposit, the difference will be deducted from\n your\n first comissions.\n \n \n \n By selecting {{ payment.reducedDepositPaymentValue | phCurrency }} deposit, you acknowledge that your Starter Kit\n will\n not ship until you have submitted $750 in sales subject to profit (VSG) OR paid your Starter Kit in full within 60\n days.\n Your profits will be applied to your Starter Kit balance until it is paid in full.\n \n\n \n \n
    \n \n\n

    *Tax and delivery is included in the price.

    \n
    \n \n \n
    \n \n","import { AfterViewInit, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Country } from '@core/enums/country.enum';\nimport { StartNowPaymentType } from '@core/enums/start-now-app.enum';\nimport { AppState } from '@core/store';\nimport {\n selectApplicationRegistrationId,\n selectDepositPaymentValue,\n selectIsReducedDepositAvailable,\n selectIsZeroDepositAvailable,\n selectReducedDepositPaymentValue,\n selectSelectedStartNowPaymentType,\n selectSelectedStarterKit,\n selectStarterKitStep,\n selectStarterKits,\n} from '@core/store/start-now-app';\nimport { StarterKit, StarterKitStep } from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n checkIfNewPaymentRequired,\n fetchOrderSummary,\n resetOrderSummary,\n resetStarterKitStep,\n stepProcessing,\n updateIsDepositPayment,\n updateIsReducedDepositPayment,\n updateIsZeroDepositPayment,\n updatePaymentStepSkipped,\n updateStartNowAppSelectedStarterKit,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { environment } from '@env';\nimport { Store, select } from '@ngrx/store';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\nimport { StatusCodes } from 'http-status-codes';\nimport { Observable } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-select-starter-kit-step',\n templateUrl: './select-starter-kit-step.component.html',\n styleUrls: ['./select-starter-kit-step.component.scss'],\n})\nexport class SelectStarterKitStepComponent\n extends StartNowStepBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n readonly StatusCodes = StatusCodes;\n starterKits$: Observable;\n selectedStarterKit$: Observable;\n selectedStarterKit: StarterKit;\n starterKitStepData$: Observable;\n depositPaymentValue$: Observable;\n country = environment.country;\n isDepositPayment: boolean = false;\n isReducedDepositPayment: boolean = false;\n isReducedDepositAvailable$: Observable;\n isZeroDepositPayment: boolean = false;\n isZeroDepositAvailable$: Observable;\n Country = Country;\n reducedDepositPaymentValue$: Observable;\n public readonly StartNowPaymentType = StartNowPaymentType;\n public selectedStartNowPaymentType: StartNowPaymentType = StartNowPaymentType.FullPayment;\n titles = {\n [Country.Mexico]: $localize`Select your starter kit`,\n [Country.Usa]: $localize`Share + earn kit`,\n };\n\n constructor(\n private store$: Store,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 4 Select Starter Kit');\n }\n\n ngOnInit(): void {\n this.store$.dispatch(resetOrderSummary());\n this.starterKits$ = this.store$.select(selectStarterKits);\n this.starterKitStepData$ = this.store$.select(selectStarterKitStep);\n this.selectedStarterKit$ = this.store$.select(selectSelectedStarterKit);\n if (isUsaEnv) {\n this.depositPaymentValue$ = this.store$.select(selectDepositPaymentValue);\n this.reducedDepositPaymentValue$ = this.store$.select(selectReducedDepositPaymentValue);\n this.isReducedDepositAvailable$ = this.store$.select(selectIsReducedDepositAvailable);\n this.isZeroDepositAvailable$ = this.store$.select(selectIsZeroDepositAvailable);\n }\n this.listenStarterKitStepFlag();\n this.listenIsNextEnabled();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.store$.dispatch(resetStarterKitStep());\n }\n\n ngAfterViewInit(): void {\n this.selectDefaultStarterKit();\n this.prepopulateSelectedStartNowPaymentType();\n }\n\n submitStep(): void {\n if (!!this.selectedStarterKit) {\n if (this.selectedStartNowPaymentType == StartNowPaymentType.FullPayment) {\n this.store$.dispatch(updatePaymentStepSkipped({ paymentStepSkipped: false }));\n }\n this.store$.dispatch(stepProcessing({ stepProcessing: true }));\n\n this.checkIfNewPaymentRequired();\n }\n }\n\n onChangeStartNowPaymentType(newValue: StartNowPaymentType): void {\n let zeroPayment: boolean = false;\n this.isZeroDepositAvailable$?.pipe(take(1)).subscribe((val) => {\n zeroPayment = val;\n });\n this.selectedStartNowPaymentType = newValue;\n if (this.selectedStartNowPaymentType == StartNowPaymentType.FullPayment) {\n this.isReducedDepositPayment = false;\n this.isDepositPayment = false;\n this.isZeroDepositPayment = false;\n this.store$.dispatch(updatePaymentStepSkipped({ paymentStepSkipped: false }));\n } else if (\n this.selectedStartNowPaymentType == StartNowPaymentType.DepositAmount ||\n this.selectedStartNowPaymentType == StartNowPaymentType.ReducedDepositAmount\n ) {\n this.isReducedDepositPayment =\n this.selectedStartNowPaymentType == StartNowPaymentType.ReducedDepositAmount ? true : false;\n this.isDepositPayment =\n this.selectedStartNowPaymentType == StartNowPaymentType.DepositAmount ? true : false;\n this.isZeroDepositPayment =\n this.selectedStartNowPaymentType == StartNowPaymentType.ReducedDepositAmount && zeroPayment\n ? true\n : false;\n this.store$.dispatch(\n updatePaymentStepSkipped({ paymentStepSkipped: this.isZeroDepositPayment }),\n );\n }\n }\n\n selectStarterKit(selectedStarterKit: StarterKit): void {\n this.selectedStarterKit = selectedStarterKit;\n }\n\n isSelected(selectedStarterKit: StarterKit, starterKit: StarterKit) {\n return selectedStarterKit?.id === starterKit?.id;\n }\n\n protected createFormGroup(): FormGroup {\n throw new Error('Method not implemented.');\n }\n\n /** Check if new payment required based on starter kit changes based on back/forth UI navigation */\n private checkIfNewPaymentRequired() {\n this.subscriptions.add(\n this.store$\n .select(selectApplicationRegistrationId)\n .pipe(\n take(1),\n filter((applicationRegistrationId) => !!applicationRegistrationId),\n )\n .subscribe((applicationRegistrationId) => {\n // check and update the starterKitStepData.fetched\n this.store$.dispatch(\n checkIfNewPaymentRequired({\n applicationRegistrationId,\n starterKitId: this.selectedStarterKit.id,\n isDepositPayment: this.isDepositPayment,\n isReducedDepositPayment: this.isReducedDepositPayment,\n isZeroDepositPayment: this.isZeroDepositPayment,\n }),\n );\n }),\n );\n }\n\n private selectDefaultStarterKit(): void {\n this.subscriptions.add(\n this.selectedStarterKit$\n .pipe(\n filter((selectedStarterKit) => !!selectedStarterKit),\n take(1),\n )\n .subscribe((selectedStarterKit) => {\n this.selectStarterKit(selectedStarterKit);\n }),\n );\n }\n\n private prepopulateSelectedStartNowPaymentType(): void {\n const selectedStartNowPaymentTypeSub = this.store$\n .select(selectSelectedStartNowPaymentType)\n .pipe(\n filter((selectedStartNowPaymentType) => !!selectedStartNowPaymentType),\n take(1),\n )\n .subscribe(this.onChangeStartNowPaymentType.bind(this));\n this.subscriptions.add(selectedStartNowPaymentTypeSub);\n }\n\n private listenStarterKitStepFlag(): void {\n this.subscriptions.add(\n this.starterKitStepData$\n .pipe(\n select((starterKitStepData) => starterKitStepData?.fetched),\n filter((fetched) => fetched),\n )\n .subscribe(() =>\n // update and set starterKitStep isNextEnabled and errors\n this.store$.dispatch(\n updateStartNowAppSelectedStarterKit({\n selectedStarterKit: this.selectedStarterKit,\n selectedStartNowPaymentType: this.selectedStartNowPaymentType,\n isDepositPayment: this.isDepositPayment,\n isReducedDepositPayment: this.isReducedDepositPayment,\n isZeroDepositPayment: this.isZeroDepositPayment,\n }),\n ),\n ),\n );\n }\n\n private listenIsNextEnabled(): void {\n this.subscriptions.add(\n this.starterKitStepData$\n .pipe(\n filter(\n (starterKitStepData) =>\n starterKitStepData?.isNextEnabled &&\n !starterKitStepData?.errors?.length &&\n !starterKitStepData?.statusCode,\n ),\n )\n .subscribe(() => this.nextStep()),\n );\n }\n\n private nextStep(): void {\n this.store$.dispatch(updateIsDepositPayment({ isDepositPayment: this.isDepositPayment }));\n this.store$.dispatch(\n updateIsReducedDepositPayment({ isReducedDepositPayment: this.isReducedDepositPayment }),\n );\n this.store$.dispatch(\n updateIsZeroDepositPayment({ isZeroDepositPayment: this.isZeroDepositPayment }),\n );\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n this.store$.dispatch(fetchOrderSummary());\n this.goToNextStep.emit();\n }\n}\n","
    \n
    \n i ? currentLevel?.activeColor : 'silver'\n }\"\n >\n
    \n
    \n\n
    {{\n currentLevel?.category\n}}
    \n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport {\n PatterForLettersNumbersAndSpecialChars,\n PatternForFourAnyCharacter,\n PatternForLetterAndNumberOrSpecialChar,\n PatternForOneAnyCharacter,\n} from '@core/constants/patterns';\n\ninterface passwordStrengthParams {\n category: string;\n activeColor: string;\n level: number;\n}\n\n@Component({\n selector: 'app-password-strength-bar',\n templateUrl: './password-strength-bar.component.html',\n styleUrls: ['./password-strength-bar.component.scss'],\n})\nexport class PasswordStrengthBarComponent implements OnInit, OnChanges {\n @Input()\n password: string = '';\n\n currentLevel: passwordStrengthParams;\n passwordBarLevels: passwordStrengthParams[];\n\n private regexForVeryWeak = PatternForOneAnyCharacter;\n private regexForWeak = PatternForFourAnyCharacter;\n private regexForMedium = PatternForLetterAndNumberOrSpecialChar();\n private regexForStrong = PatterForLettersNumbersAndSpecialChars;\n\n constructor() {}\n\n ngOnInit(): void {\n this.initializePasswordBar();\n\n if (this.password) {\n this.evaluatePassword(this.password);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.evaluatePassword(changes.password.currentValue);\n }\n\n private initializePasswordBar() {\n this.passwordBarLevels = [\n {\n category: $localize`Very weak`,\n activeColor: 'darkred',\n level: 1,\n },\n {\n category: $localize`Weak`,\n activeColor: 'orange',\n level: 2,\n },\n {\n category: $localize`Good`,\n activeColor: 'yellowgreen',\n level: 3,\n },\n {\n category: $localize`Strong`,\n activeColor: 'green',\n level: 4,\n },\n ];\n }\n\n private evaluatePassword(password: string) {\n let passwordScore = 0;\n if (this.regexForVeryWeak.test(password)) {\n passwordScore++;\n }\n if (this.regexForWeak.test(password)) {\n passwordScore++;\n }\n if (this.regexForMedium.test(password)) {\n passwordScore++;\n }\n if (this.regexForStrong.test(password)) {\n passwordScore++;\n }\n this.currentLevel = this.passwordBarLevels?.find((e) => e.level === passwordScore);\n return;\n }\n}\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormErrorMessages } from '@core/constants/form-error-messages';\nimport { SnaPasswordMaxLength, SnaPasswordMinLength } from '@core/constants/password-max-length';\nimport { PatternForLetterAndNumberOrSpecialChar } from '@core/constants/patterns';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\nimport { AppState } from '@core/store';\nimport { selectPassword } from '@core/store/start-now-app';\nimport { createPassword, stepProcessing } from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\nimport { matchValidator } from '@shared/utils/validation.utils';\nimport { filter, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-password-backoffice-portal-step',\n templateUrl: './password-backoffice-portal-step.component.html',\n styleUrls: ['./password-backoffice-portal-step.component.scss'],\n})\nexport class PasswordBackOfficeStepComponent extends StartNowStepBaseComponent implements OnInit {\n readonly Password: string = 'password';\n readonly PasswordConfirm: string = 'passwordConfirm';\n readonly PasswordMinLength: number = SnaPasswordMinLength;\n readonly PasswordMaxLength: number = SnaPasswordMaxLength;\n readonly FormErrorTypes = FormErrorTypes;\n\n readonly ErrorMessages = {\n [FormErrorTypes.required]: FormErrorMessages.snaRequired,\n [FormErrorTypes.pattern]: FormErrorMessages.passwordPattern,\n };\n\n public passwordFormGroup: FormGroup;\n formSubmitted: boolean = false;\n passwordLabel = { color: '#747487' };\n public passwordContent: string;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 6 Password Backoffice Portal');\n }\n\n ngOnInit(): void {\n this.passwordFormGroup = this.createFormGroup();\n this.prepopulateForm();\n }\n\n submitStep(): void {\n this.passwordFormGroup.markAllAsTouched();\n this.formSubmitted = true;\n if (this.passwordFormGroup.valid) {\n this.store$.dispatch(stepProcessing({ stepProcessing: true }));\n this.store$.dispatch(\n createPassword({\n password: this.passwordFormGroup.get(this.Password).value,\n }),\n );\n this.goToNextStep.emit();\n }\n }\n\n handlePasswordChange(value: string) {\n this.passwordContent = value;\n }\n\n protected createFormGroup(): FormGroup {\n return this.fb.group(\n {\n [this.Password]: [\n '',\n [\n Validators.required,\n Validators.pattern(PatternForLetterAndNumberOrSpecialChar(SnaPasswordMinLength)),\n ],\n ],\n [this.PasswordConfirm]: ['', [Validators.required]],\n },\n {\n validators: matchValidator(\n this.PasswordConfirm,\n this.Password,\n this.FormErrorTypes.passwordConfirm,\n ),\n },\n );\n }\n\n private prepopulateForm() {\n this.store$\n .select(selectPassword)\n .pipe(\n take(1),\n filter((password) => !!password),\n )\n .subscribe((password) => {\n this.passwordFormGroup.get(this.Password).setValue(password);\n this.passwordFormGroup.get(this.PasswordConfirm).setValue(password);\n this.passwordContent = password;\n });\n }\n}\n","

    Access to Your backoffice portal

    \n
    Password for Consultant Corner and Consultant Agreement\n
    Password for Consultant Corner
    \n\n

    Set a password so you can\n login to our free mobile friendly Consultant's Corner website\n to enter your orders and learn more about your new Princess House business.\n

    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n\n

    \n Minimum {{ PasswordMinLength }}, maximum {{ PasswordMaxLength }} characters, at least one upper\n case letter and one number or symbol\n

    \n","\n {{ label }}\n
    \n \n
    \n \n \n \n
    \n
    \n
    \n {{ validationErrorMessage }}\n
    \n
    \n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MaskPipe } from 'ngx-mask';\n\n/**\n * SSN number looks like 123-45-6789.\n * This component converts the first 5 numbers into X (XXX-XX-6789).\n */\n\n@Component({\n selector: 'app-ssn-number-field-input',\n templateUrl: './ssn-number-field-input.component.html',\n styleUrls: ['./ssn-number-field-input.component.scss'],\n providers: [MaskPipe],\n})\nexport class SsnNumberFieldInputComponent {\n @Input() control: FormControl;\n\n @Input() label: string;\n\n @Input() labelStyle: any = {};\n\n @Input() labelAsterix: boolean = false;\n\n readonly validationErrorMessage: string = $localize`Please enter a valid Social Security Number`;\n readonly identifier = Date.now();\n readonly ssnPattern = {\n X: { pattern: new RegExp('\\\\d'), symbol: 'X' },\n 0: { pattern: new RegExp('\\\\d') },\n };\n}\n","

    You're almost done!

    \n\n
    \n
    \n Social Security Number - \n Don't worry this is a secure site!\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n {{ SsnErrorMessage }}\n
    \n
    \n\n
    \n Please review and agree the Consultant Agreement below\n
    \n\n
    \n \n
    \n\n
    \n
    \n
    \n \n \n I agree to the terms and conditions outlined above\n \n
    \n\n
    \n \n \n Print agreement\n \n
    \n
    \n
    \n {{\n getFormValidationErrorMessage(agreementFormGroup, TermsConditions, ErrorMessages)\n }}\n
    \n
    \n\n
    \n \n \n
    \n\n","import {\n AfterViewInit,\n Component,\n Inject,\n Injector,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n SecurityContext,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FormErrorTypes } from '@core/enums/form-error-type.enum';\nimport { Locale } from '@core/enums/locale';\nimport { StartNowAppService } from '@core/services/start-now-app.service';\nimport { AppState } from '@core/store';\nimport {\n selectAgreementStep,\n selectAreTermsConditionsAgreed,\n selectUserInfo,\n} from '@core/store/start-now-app';\nimport { AgreementStep } from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n resetAgreementStep,\n stepProcessing,\n updateAgreementStepNavigableFlag,\n updateAreTermsConditionsAgreed,\n updateSsnNumber,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { environment } from '@env';\nimport { select, Store } from '@ngrx/store';\nimport { SafeResourceUrlPipe } from '@shared/pipes/safe-url.pipe';\nimport { saveFile } from '@shared/utils/save-file.utils';\nimport { getFormValidationErrorMessage, validInput } from '@shared/utils/validation.utils';\nimport { StatusCodes } from 'http-status-codes';\nimport { Observable } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-consultant-agreement-step',\n templateUrl: './consultant-agreement-step.component.html',\n styleUrls: ['./consultant-agreement-step.component.scss'],\n})\nexport class ConsultantAgreementStepComponent\n extends StartNowStepBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n termsConditionsURL: string = '';\n readonly TermsConditions: string = 'termsConditions';\n readonly SsnNumberFieldName: string = 'ssnNumber';\n readonly StatusCodes = StatusCodes;\n readonly SsnErrorMessage: string = $localize`Please enter a valid Social Security Number`;\n readonly ErrorMessages = {\n [FormErrorTypes.required]: $localize`You need to agree before you got to the next step!`,\n };\n\n getFormValidationErrorMessage = getFormValidationErrorMessage;\n\n public agreementFormGroup: FormGroup;\n public ssnNumberFormGroup: FormGroup;\n areTermConditionsAgreed$: Observable;\n termsConditionsSafeUrl: string;\n agreementStep$: Observable;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n private safeResourceUrlPipe: SafeResourceUrlPipe,\n private domSanitizer: DomSanitizer,\n private startNowAppService: StartNowAppService,\n @Inject(LOCALE_ID) private localeId: Locale,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 7 Consultant Agreement');\n }\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n }, 500);\n }\n\n ngOnInit(): void {\n this.agreementStep$ = this.store$.select(selectAgreementStep);\n this.termsConditionsURL = `${environment.agreementHtmlBaseUrl}/agreements/consultantAgreement-${\n this.localeId === 'en' ? 'en-US' : this.localeId\n }.html`;\n this.agreementFormGroup = this.createFormGroup();\n this.areTermConditionsAgreed$ = this.store$.select(selectAreTermsConditionsAgreed);\n this.listenIsNextEnabled();\n\n if (this.isUsaEnv) {\n this.ssnNumberFormGroup = this.createSsnFormGroup();\n this.prePopulateSsnNumberForm();\n }\n this.subscriptions.add(\n this.areTermConditionsAgreed$.subscribe((value) => {\n this.agreementFormGroup.setValue({\n termsConditions: value,\n });\n }),\n );\n this.termsConditionsSafeUrl = this.getAgreementSafeUrl();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.store$.dispatch(resetAgreementStep());\n }\n\n submitStep(): void {\n this.agreementFormGroup.markAllAsTouched();\n if (this.agreementFormGroup.valid) {\n if (this.isUsaEnv && this.ssnNumberFormGroup.valid) {\n this.store$.dispatch(\n updateSsnNumber({\n ssnNumber: this.ssnNumberFormGroup.get(this.SsnNumberFieldName).value,\n }),\n );\n } else if (!this.isUsaEnv) {\n this.store$.dispatch(updateAgreementStepNavigableFlag({ isNextEnabled: true }));\n }\n }\n }\n\n getAgreementSafeUrl(): string {\n return this.domSanitizer.sanitize(\n SecurityContext.RESOURCE_URL,\n this.safeResourceUrlPipe.transform(this.termsConditionsURL),\n );\n }\n\n get termsConditionValidInput(): boolean {\n return validInput(this.agreementFormGroup.get(this.TermsConditions));\n }\n\n public printAgreement() {\n this.startNowAppService.getAgreementPdf().subscribe((blob) => {\n saveFile(blob, $localize`ConsultantAgreement.pdf`, 'application/pdf');\n });\n }\n\n protected createFormGroup(): FormGroup {\n return this.fb.group({\n [this.TermsConditions]: [this.areTermConditionsAgreed$, [Validators.requiredTrue]],\n });\n }\n\n private createSsnFormGroup(): FormGroup {\n return this.fb.group({\n [this.SsnNumberFieldName]: ['', [Validators.minLength(11)]],\n });\n }\n\n private nextStep(): void {\n this.store$.dispatch(\n updateAreTermsConditionsAgreed({\n areTermsConditionsAgreed: this.agreementFormGroup.get(this.TermsConditions).value,\n }),\n );\n this.goToNextStep.emit();\n }\n\n private listenIsNextEnabled(): void {\n this.subscriptions.add(\n this.agreementStep$\n .pipe(\n filter(\n (agreementStep) =>\n agreementStep?.isNextEnabled &&\n !agreementStep?.errors?.length &&\n !agreementStep?.statusCode,\n ),\n take(1),\n )\n .subscribe(() => this.nextStep()),\n );\n }\n\n private prePopulateSsnNumberForm(): void {\n this.store$\n .select(selectUserInfo)\n .pipe(\n select((userInfo) => userInfo?.ssnNumber),\n take(1),\n filter((ssnNumber) => !!ssnNumber),\n )\n .subscribe((ssnNumber) => {\n this.ssnNumberFormGroup.patchValue({ [this.SsnNumberFieldName]: ssnNumber });\n });\n }\n}\n","import * as FileSaver from 'file-saver';\n\nexport function saveFile(blob: Blob, fileName: string, type: string): void {\n let file: File | undefined;\n file = new File([blob], fileName, { type: type });\n\n if (file) {\n FileSaver.saveAs(file);\n }\n}\n","export enum SsnBlockEndIndex {\n First = 3,\n Second = 5,\n Last = 9,\n}\n","import { SsnBlockEndIndex } from '@core/enums/ssn-block-end-index.enum';\n\nexport const NumberSeparator: string = '-';\nexport const PlaceholderCharacter: string = 'X';\n\nexport function ssnMasking(ssnNumber: string): string {\n let formattedValue: string = '';\n if (ssnNumber) {\n for (let i = 0; i < ssnNumber.length; ++i) {\n if (i < SsnBlockEndIndex.Second + 1 && ssnNumber[i] !== NumberSeparator) {\n formattedValue += PlaceholderCharacter;\n } else {\n formattedValue += ssnNumber[i];\n }\n }\n }\n return formattedValue;\n}\n","
    \n
    \n
    {{ cardTitle }}
    \n
    \n \n Change\n \n \n \n \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-sna-info-card-header',\n templateUrl: './sna-info-card-header.component.html',\n styleUrls: ['./sna-info-card-header.component.scss'],\n})\nexport class SnaInfoCardHeaderComponent {\n @Input() cardTitle: string;\n @Input() isChangeable: boolean = true;\n\n @Output() navigateTo: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n navigate(): void {\n this.navigateTo.emit();\n }\n}\n","
    \n
    \n Name\n {{ fullName }}\n
    \n
    \n Date of Birth\n \n {{ userInfo.birthday | date: dateFormat : 'UTC' }}\n \n
    \n
    \n Social security number\n {{ maskedSsnNumber }}\n
    \n
    \n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { UserInfo } from '@core/store/start-now-app/start-now-app-state-models';\nimport { isUsaEnv } from '@shared/utils/environment-utils';\nimport { ssnMasking } from '@shared/utils/ssn-masking-utils';\n\n@Component({\n selector: 'app-personal-info-card',\n templateUrl: './personal-info-card.component.html',\n styleUrls: ['./personal-info-card.component.scss'],\n})\nexport class PersonalInfoCardComponent implements OnInit, OnChanges {\n @Input() userInfo: UserInfo;\n\n fullName: string;\n dateFormat: string;\n isUsaEnv: boolean;\n maskedSsnNumber: string;\n\n constructor() {}\n\n ngOnInit(): void {\n this.isUsaEnv = isUsaEnv;\n this.dateFormat = isUsaEnv ? 'MM/dd/yyyy' : 'd-MMMM-y';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.userInfo?.currentValue) {\n const currentUserInfo = changes.userInfo.currentValue;\n\n if (currentUserInfo.middleName === '') {\n this.fullName = `${currentUserInfo.firstName} ${currentUserInfo.lastName}`;\n } else {\n // eslint-disable-next-line max-len\n this.fullName = `${currentUserInfo.firstName} ${currentUserInfo.middleName} ${currentUserInfo.lastName}`;\n }\n if (currentUserInfo.ssnNumber) {\n this.maskedSsnNumber = ssnMasking(currentUserInfo.ssnNumber);\n }\n }\n }\n}\n","
    \n
    \n E-mail Address\n {{ contactInfo.email }}\n
    \n
    \n Cell Phone Number\n {{ contactInfo.cellPhoneNumber }}\n
    \n
    \n Home Phone Number\n {{ contactInfo.homeNumber }}\n
    \n
    \n","import { Component, Input } from '@angular/core';\nimport { ContactInfo } from '@core/store/start-now-app/start-now-app-state-models';\n\n@Component({\n selector: 'app-contact-information-card',\n templateUrl: './contact-information-card.component.html',\n styleUrls: ['./contact-information-card.component.scss'],\n})\nexport class ContactInformationCardComponent {\n @Input() contactInfo: ContactInfo;\n\n constructor() {}\n}\n","
    \n
    \n Address Line 1\n {{ address.address1 }}\n
    \n
    \n Address Line 2\n {{ address.address2 }}\n
    \n
    \n Address Line 3\n {{ address.address3 }}\n
    \n
    \n City\n {{ address.city }}\n
    \n
    \n State\n {{ stateName }}\n
    \n
    \n ZIP Code\n {{ address.zip }}\n
    \n
    \n","import { Component, Input, OnInit } from '@angular/core';\nimport { Address, CountryState } from '@core/store/start-now-app/start-now-app-state-models';\n\n@Component({\n selector: 'app-address-card',\n templateUrl: './address-card.component.html',\n styleUrls: ['./address-card.component.scss'],\n})\nexport class AddressCardComponent implements OnInit {\n @Input() address: Address;\n @Input() countryStates: CountryState[] = [];\n\n stateName: string;\n\n constructor() {}\n\n ngOnInit(): void {\n const countryName = this.countryStates.find((state) => state.code === this.address.state)?.name;\n this.stateName = countryName ? countryName : this.address.state;\n }\n}\n","
    \n
    \n Kit Selection\n \n {{ isMexEnv ? starterKit.description1 : UsaStarterKitName }}\n \n
    \n
    \n
    \n Total cost\n {{ starterKit.price | phCurrency }}\n
    \n
    \n Includes VAT and shipping.\n
    \n
    \n \n
    \n
    \n Price\n \n {{ orderSummary?.price | phCurrency }}\n \n
    \n
    \n State & local taxes\n \n {{ orderSummary?.taxAmount | phCurrency }}\n \n
    \n \n Total cost\n \n {{ orderSummary?.totalCost | phCurrency }}\n \n
    \n \n
    \n Less deposit\n \n {{ orderSummary?.lessDeposit | phCurrency }}\n \n
    \n
    \n Balance due\n \n {{ orderSummary?.balanceDue | phCurrency }}\n \n
    \n
    \n You pay\n \n {{ orderSummary?.lessDeposit | phCurrency }}\n \n
    \n \n
    \n \n\n","import { Component, Input } from '@angular/core';\nimport { OrderSummary, StarterKit } from '@core/store/start-now-app/start-now-app-state-models';\nimport { isMexEnv } from '@shared/utils/environment-utils';\n\n@Component({\n selector: 'app-starter-kit-info-card',\n templateUrl: './starter-kit-info-card.component.html',\n styleUrls: ['./starter-kit-info-card.component.scss'],\n})\nexport class StarterKitInfoCardComponent {\n @Input() orderSummary: OrderSummary;\n @Input() starterKit: StarterKit;\n @Input() isZeroDepositAvailable: boolean;\n @Input() paymentStepSkipped: boolean;\n\n readonly UsaStarterKitName: string = $localize`Share + Earn`;\n\n isMexEnv = isMexEnv;\n\n constructor() {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AppState } from '@core/store';\nimport { updateConfirmRecruiter } from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'app-recruiter-card',\n templateUrl: './recruiter-card.component.html',\n styleUrls: ['./recruiter-card.component.scss'],\n})\nexport class RecruiterCardComponent {\n @Input() consultantName: string;\n @Input() stepProcessing: boolean;\n @Input() consultantDataCanNotBeModified: boolean;\n @Input() confirmRecruiter: boolean;\n\n @Output() confirmRecruiterChange: EventEmitter = new EventEmitter();\n\n constructor(private sotre$: Store) {}\n\n navigateToStartNowApp() {\n window.location.reload();\n }\n\n confirmRecruiterChangeHandler(event: boolean) {\n this.sotre$.dispatch(updateConfirmRecruiter({ confirmRecruiter: event }));\n this.confirmRecruiterChange.emit(event);\n }\n}\n","
    \n
    \n Your Recruiter\n {{ consultantName }}\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n Note: If the recruiter listed above is not correct,\n \n please click here to return to the home page.\n \n You will need to complete the application under the correct recruiters website to continue.\n\n","/* eslint-disable max-len */\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\n\nexport const ConsultantSubmitErrorMessages: ConsultantSubmitErrorMessageType = {\n [ConsultantSubmissionErrorType.ApplicationRegistrationNotSubmittable]: $localize`Application registration not submittable`,\n [ConsultantSubmissionErrorType.ContractReleaseFailed]: $localize`Contract release failed`,\n [ConsultantSubmissionErrorType.ContractPaidByVoucher]: $localize`Contract is paid by Voucher`,\n [ConsultantSubmissionErrorType.ContractPaidByBankTransfer]: $localize`Contract is paid by Bank transfer`,\n [ConsultantSubmissionErrorType.ConsultantProwessIdCouldNotRetrieved]: $localize`Consultant ProwessId could not be retrieved`,\n [ConsultantSubmissionErrorType.ConsultantProwessIdCouldNotSaved]: $localize`Consultant ProwessId could not be saved`,\n [ConsultantSubmissionErrorType.DuplicateHomePhone]: $localize`Duplicate home phone number`,\n [ConsultantSubmissionErrorType.DuplicateMobilePhone]: $localize`Duplicate mobile phone number`,\n [ConsultantSubmissionErrorType.DuplicateProwessId]: $localize`Duplicate ProwessId`,\n [ConsultantSubmissionErrorType.EmailAlreadyExists]: $localize`This e-mail address is already registered on one of our Consultants. Please change\n your e-mail address!`,\n [ConsultantSubmissionErrorType.ErrorWhileSync]: $localize`Error while Sync`,\n [ConsultantSubmissionErrorType.InvalidAddress]: $localize`Invalid address`,\n [ConsultantSubmissionErrorType.InvalidBirthDate]: $localize`Invalid birth date`,\n [ConsultantSubmissionErrorType.InvalidConsultantLevel]: $localize`Invalid consultant level`,\n [ConsultantSubmissionErrorType.InvalidConsultantStatus]: $localize`Invalid consultant status`,\n [ConsultantSubmissionErrorType.InvalidEmailFormat]: $localize`Invalid email format`,\n [ConsultantSubmissionErrorType.InvalidHomePhone]: $localize`Invalid home phone number`,\n [ConsultantSubmissionErrorType.InvalidMobilePhone]: $localize`Invalid mobile phone number`,\n [ConsultantSubmissionErrorType.InvalidPaymentType]: $localize`Invalid payment type`,\n [ConsultantSubmissionErrorType.InvalidRecruiterId]:\n 'Consultant is invalid due to some data corruption! User from SNA is not synced from UserManagement',\n [ConsultantSubmissionErrorType.InvalidState]: $localize`Invalid state`,\n [ConsultantSubmissionErrorType.InvalidStarterKitId]: $localize`Invalid starter kit`,\n [ConsultantSubmissionErrorType.InvalidStarterKitPrice]: $localize`Invalid starter kit price`,\n [ConsultantSubmissionErrorType.MissingAddressLine1]: $localize`Missing address line 1`,\n [ConsultantSubmissionErrorType.MissingCity]: $localize`Missing city`,\n [ConsultantSubmissionErrorType.MissingContactInfo]: $localize`Missing contact info`,\n [ConsultantSubmissionErrorType.MissingAddressInfo]: $localize`Missing address info`,\n [ConsultantSubmissionErrorType.MissingB2CId]: $localize`Missing B2C Id`,\n [ConsultantSubmissionErrorType.MissingEmail]: $localize`Missing email`,\n [ConsultantSubmissionErrorType.MissingFirstName]: $localize`Missing first name`,\n [ConsultantSubmissionErrorType.MissingHomeAddress]: $localize`Missing home address`,\n [ConsultantSubmissionErrorType.MissingLastName]: $localize`Missing last name`,\n [ConsultantSubmissionErrorType.MissingLevel]: $localize`Missing level`,\n [ConsultantSubmissionErrorType.MissingPaymentMethod]: $localize`Missing Payment Method`,\n [ConsultantSubmissionErrorType.MissingPaymentMethodToken]: $localize`Missing Payment Method Token`,\n [ConsultantSubmissionErrorType.MissingRecruiter]: $localize`Missing recruiter/consultant`,\n [ConsultantSubmissionErrorType.MissingRegistrationId]: $localize`Missing RegistrationId`,\n [ConsultantSubmissionErrorType.InvalidSsnNumber]: $localize`Invalid social security number`,\n [ConsultantSubmissionErrorType.InvalidZip]: $localize`Invalid zip code`,\n [ConsultantSubmissionErrorType.MissingState]: $localize`Missing state`,\n [ConsultantSubmissionErrorType.MissingStatus]: $localize`Missing status`,\n [ConsultantSubmissionErrorType.MissingUserInfo]: $localize`Missing user info`,\n [ConsultantSubmissionErrorType.MissingProwessId]: $localize`Missing ProwessId`,\n [ConsultantSubmissionErrorType.MissingVanityName]: $localize`Missing vanity name`,\n [ConsultantSubmissionErrorType.MissingZip]: $localize`Missing zip`,\n [ConsultantSubmissionErrorType.ProwessImportFailed]: $localize`Prowess import is failed`,\n [ConsultantSubmissionErrorType.TooLongAddressLine1]: $localize`Too long address line 1`,\n [ConsultantSubmissionErrorType.TooLongAddressLine2]: $localize`Too long address line 2`,\n [ConsultantSubmissionErrorType.TooLongAddressLine3]: $localize`Too long address line 3`,\n [ConsultantSubmissionErrorType.TooLongCity]: $localize`Too long city`,\n [ConsultantSubmissionErrorType.TooLongFirstName]: $localize`Too long first name`,\n [ConsultantSubmissionErrorType.TooLongLastName]: $localize`Too long last name`,\n [ConsultantSubmissionErrorType.TooLongMiddleName]: $localize`Too long middle name`,\n [ConsultantSubmissionErrorType.TooLongHomeNumber]: $localize`Too long home number`,\n [ConsultantSubmissionErrorType.TooLongMobileNumber]: $localize`Too long mobile number`,\n [ConsultantSubmissionErrorType.TooLongEmail]: $localize`Too long email`,\n [ConsultantSubmissionErrorType.TooLongVanityName]: $localize`Too long vanity name`,\n [ConsultantSubmissionErrorType.TooLongZip]: $localize`Too long zip`,\n [ConsultantSubmissionErrorType.TransactionFailed]: $localize`Please add another card and try again!`,\n [ConsultantSubmissionErrorType.UnsupportedLanguage]: $localize`Unsupported language`,\n [ConsultantSubmissionErrorType.UserManagementInAccessible]: $localize`UserManagement is inaccessible`,\n [ConsultantSubmissionErrorType.VaultImportFailed]: $localize`A temporary issue occurred, please try to submit the application again later`,\n [ConsultantSubmissionErrorType.MissingVoucherDetails]: $localize`Sorry, but the system couldn’t generate your voucher! Please try again!`,\n [ConsultantSubmissionErrorType.InvalidRegistrationCode]: $localize`Invalid registration code`,\n [ConsultantSubmissionErrorType.DailyVoucherAmountReached]: $localize`Daily voucher limit reached, the amount should be less than or equal to`,\n [ConsultantSubmissionErrorType.MonthlyVoucherAmountReached]: $localize`Monthly voucher limit reached, the amount should be less than or equal to`,\n [ConsultantSubmissionErrorType.YearlyVoucherAmountReached]: $localize`Yearly voucher limit reached, the amount should be less than or equal to`,\n [ConsultantSubmissionErrorType.Other]: $localize`Unknown other error`,\n};\n\nexport type ConsultantSubmitErrorMessageType = { [key in ConsultantSubmissionErrorType]?: string };\n","export enum CongratulationType {\n Normal = 'Normal',\n Cash = 'Cash',\n BankTransfer = 'BankTransfer',\n BackOfficeIssue = 'BackOfficeIssue',\n}\n","/* eslint-disable max-len */\nimport { ConsultantSubmitErrorMessages } from '@core/constants/consultant-submit-error-message';\nimport { CongratulationType } from '@core/enums/congratulation-type.enum';\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\nimport { PaymentMethodType } from '@core/enums/payment-method-type.enum';\nimport { VoucherLimits } from '@core/models/app-settings.model';\nimport {\n StartNowAppData,\n SubmittedConsultantInfo,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport { isArray } from '@shared/utils/array-utils';\nimport {\n mapContactInfoToSubmitContactInfoDto,\n mapUserInfoToSubmitUserInfoParamsDto,\n} from '@shared/utils/create-submit-consultant-info-utils';\nimport { SubmitConsultantRequest } from '../../../../../core/dto/start-now-app.dto';\n\nexport function buildSubmitConsultantRequest(\n startNowAppData: StartNowAppData,\n skipPayment: boolean,\n): SubmitConsultantRequest {\n return {\n applicationRegistrationId: startNowAppData.applicationRegistrationId,\n recruiterConsultantId: startNowAppData.selectedConsultant?.beeNumber.toString(),\n userInfo: mapUserInfoToSubmitUserInfoParamsDto(startNowAppData.userInfo),\n contactInfo: mapContactInfoToSubmitContactInfoDto(startNowAppData.contactInfo),\n starterKit: {\n starterKitId: startNowAppData.selectedStarterKit.id,\n },\n addressInfo: {\n addresses: startNowAppData.addressInfo.addresses,\n languagePreferred: startNowAppData.addressInfo.languagePreferred,\n },\n registrationCode: startNowAppData.registrationCode,\n securityKey: startNowAppData.securityKey,\n billingFirstName:\n startNowAppData.startNowAppPaymentInfo.additionalBillingInformation?.billingFirstName,\n billingLastName:\n startNowAppData.startNowAppPaymentInfo.additionalBillingInformation?.billingLastName,\n paymentType: skipPayment == true ? PaymentMethodType.Finance : PaymentMethodType.Unknown,\n } as SubmitConsultantRequest;\n}\n\nexport function getConsultantSubmitErrorMessage(response: SubmittedConsultantInfo): string {\n const result: string[] = [];\n if (response && isArray(response.errorTypes) && response.errorTypes.length > 0) {\n response.errorTypes.forEach((errorType) => {\n const errorMessage = ConsultantSubmitErrorMessages[errorType];\n result.push(errorMessage ? errorMessage : errorType);\n });\n }\n\n return result.join(', ');\n}\n\nexport class SubmitSuccessfulModel {\n isSuccessful: boolean;\n congratulationType: CongratulationType;\n}\n\nexport function getDisplayedErrorMessages(\n displayErrorTypes: ConsultantSubmissionErrorType[],\n submissionErrors: ConsultantSubmissionErrorType[],\n voucherLimits: VoucherLimits,\n): string[] {\n let errorMessages: string[] = [];\n submissionErrors?.forEach((errorType) => {\n const displayErrorType = displayErrorTypes.find((item) => item === errorType);\n if (!!displayErrorType) {\n let message;\n switch (displayErrorType) {\n case ConsultantSubmissionErrorType.DailyVoucherAmountReached:\n message = `${ConsultantSubmitErrorMessages[displayErrorType]} ${voucherLimits.dailyLimit}`;\n break;\n case ConsultantSubmissionErrorType.MonthlyVoucherAmountReached:\n message = `${ConsultantSubmitErrorMessages[displayErrorType]} ${voucherLimits.monthlyLimit}`;\n break;\n case ConsultantSubmissionErrorType.YearlyVoucherAmountReached:\n message = `${ConsultantSubmitErrorMessages[displayErrorType]} ${voucherLimits.yearlyLimit}`;\n break;\n default:\n message = ConsultantSubmitErrorMessages[displayErrorType];\n break;\n }\n errorMessages.push(message);\n }\n });\n return errorMessages;\n}\n","export enum NounsType {\n Singular = 0,\n Plural = 1,\n}\n","export enum BrowserType {\n Opera = 'Opera',\n Edge = 'Edge',\n Chrome = 'Chrome',\n Safari = 'Safari',\n Firefox = 'Firefox',\n IE = 'Internet Explorer',\n Other = 'Other',\n}\n","\n \n\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { BrowserType } from '@core/enums/browser-type.enum';\nimport { Voucher } from '@core/store/payment/payment-state-models';\nimport { getBrowserType } from '@shared/utils/browser-utils';\n\n/**\n * We are hiding the Oxxo voucher because it fails from cause of “Refused to display ... URL in a frame because it\n * set 'X-Frame-Options' to 'sameorigin'“. This is a security protection and protects form session hijacking,\n * but in the background activates the voucher. So in this way we hide the IFrame in default.\n */\n\n@Component({\n selector: 'app-oxxo-voucher-container',\n templateUrl: './oxxo-voucher-container.component.html',\n styleUrls: ['./oxxo-voucher-container.component.scss'],\n})\nexport class OxxoVoucherContainerComponent implements OnInit, AfterViewInit {\n @Input() voucher: Voucher;\n @Input() hideIframe: boolean = true;\n @Output() voucherLoaded: EventEmitter = new EventEmitter();\n\n @ViewChild('VoucherIframe') voucherIframe: ElementRef;\n\n /** In Safari if fails to load none of the voucher in iframe, then wants to download an empty file. User needs time\n * to read the pop-up message and choose action (Cancel, Allow). */\n private readonly SafariHealthCheckPeriod = 6000;\n\n private isVoucherLoaded: boolean = false;\n\n constructor() {}\n\n ngOnInit(): void {\n this.handleSafariVoucherOpenFailure();\n }\n\n ngAfterViewInit(): void {\n this.voucherIframe.nativeElement.onload = this.iframeLoaded.bind(this);\n }\n\n iframeLoaded(): void {\n this.isVoucherLoaded = true;\n this.voucherLoaded.emit(this.voucher?.token);\n }\n\n /** Handle Safari blocker iframe issue with a health checker.\n * In Safari in case of Voucher limit exceeding the iframe not sending back any event and the browser want to download\n * an empty file */\n private handleSafariVoucherOpenFailure() {\n if (getBrowserType() == BrowserType.Safari) {\n setTimeout(() => {\n if (!this.isVoucherLoaded) {\n this.voucherLoaded.emit(undefined);\n }\n }, this.SafariHealthCheckPeriod);\n }\n }\n}\n","import { BrowserType } from '@core/enums/browser-type.enum';\n\nexport function getBrowserType(): BrowserType {\n const agent = window.navigator.userAgent;\n\n if ((agent.indexOf('Opera') || agent.indexOf('OPR')) != -1) {\n return BrowserType.Opera;\n } else if (agent.indexOf('Edg') != -1) {\n return BrowserType.Edge;\n } else if (agent.indexOf('Chrome') != -1) {\n return BrowserType.Chrome;\n } else if (agent.indexOf('Safari') != -1) {\n return BrowserType.Safari;\n } else if (agent.indexOf('Firefox') != -1) {\n return BrowserType.Firefox;\n } else if (agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {\n return BrowserType.IE;\n } else {\n return BrowserType.Other;\n }\n}\n","\n
    \n \n \n
    \n\n \n \n\n \n
    \n
    \n \n
    \n
    \n \n {{\n vouchers?.length < 2\n ? VoucherMessages[NounsType.Singular]\n : VoucherMessages[NounsType.Plural]\n }}\n \n
    \n \n
    \n
    \n\n
    \n \n Got it!\n \n
    \n
    \n","import { Component, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { PaymentImageSrc } from '@core/constants/payment.consts';\nimport { ReceiveVoucherRequest } from '@core/dto/start-now-app.dto';\nimport { NounsType } from '@core/enums/nouns-type.enum';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { NounsMessages } from '@core/models/nouns-messages.model';\nimport { LoggerService } from '@core/services/logger.service';\nimport { Voucher } from '@core/store/payment/payment-state-models';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport cloneDeep from 'lodash.clonedeep';\nimport { Subscription } from 'rxjs';\n\n/**\n * Modal for voucher payment that is supported by Oxxo. Here the vouchers separately are opened in iFrames and they\n * are activated by generating the barCodeUrl.\n */\n@Component({\n selector: 'app-oxxo-voucher-payment-modal',\n templateUrl: './oxxo-voucher-payment-modal.component.html',\n styleUrls: ['./oxxo-voucher-payment-modal.component.scss'],\n})\nexport class OxxoVoucherPaymentModalComponent implements OnDestroy {\n @Input() paymentHandler: PaymentHandlerBase;\n @Output() closed: EventEmitter = new EventEmitter();\n\n public readonly PaymentImageSrc = PaymentImageSrc;\n public readonly NounsType = NounsType;\n\n /** In case of prod as we get barCodeUrls (activate the vouchers), the processes by iFrame takes more time and\n * we have to wait a bit them, before we automatically close this modal */\n public readonly OxxoOperationDelay = 1000;\n\n /** There is a chance that the Oxxo operation waiting delay is not enough, so we will check if there are\n barCodeUrls, if there are not then we will wait by retrying to receive in the meantime keep alive the iFrames*/\n public readonly ReceiveRetry = 4;\n\n /** In some cases for the first iframe load can not activate the voucher, but for the second can*/\n public readonly ReloadVouchers = true;\n\n public isVoucherLoading: boolean = true;\n public vouchers: Voucher[] = [];\n public activatedVoucherTokens: string[] = [];\n public oxxoOperationDelayPeriod = 0;\n public readonly VoucherMessages: NounsMessages = {\n [NounsType.Singular]: $localize`Your voucher is ready, you will have access to\n it via e-mail or click link on below:`,\n [NounsType.Plural]: $localize`Your vouchers are ready, you will have access to\n them via e-mail or click links on below:`,\n };\n\n public readonly ModalConfig: ModalConfig = {\n title: $localize`Voucher`,\n hideDismissButton: true,\n hideCloseButton: true,\n hideHeaderDismissButton: true,\n ngbModalOptions: {\n size: 'lg',\n backdrop: 'static',\n keyboard: false,\n },\n };\n\n protected areVouchersReloaded: boolean = false;\n protected subscriptions: Subscription = new Subscription();\n protected receiveVoucherRetryCounter: number = 0;\n protected listenVouchersSubscription: Subscription;\n\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n constructor(private logger: LoggerService) {}\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n /** Handle loaded vouchers: after that a voucher is loaded in the iframe, here is checked if all of them are loaded.\n * With a delay mechanism we are communicating with the BE to check if that on PayPal side the voucher is also\n * activated after that in iframe is loaded, because after the loading the activation process takes time\n */\n handleLoadedVoucher(voucherToken: string) {\n if (voucherToken) {\n if (this.activatedVoucherTokens.indexOf(voucherToken) === -1 && !!voucherToken) {\n this.activatedVoucherTokens.push(voucherToken);\n }\n if (this.activatedVoucherTokens.length === this.vouchers.length) {\n this.handleReceiveVoucherMechanism();\n }\n } else if (this.activatedVoucherTokens.length) {\n this.handleReceiveVoucherMechanism();\n } else {\n this.reloadVouchers();\n }\n }\n\n onClose(): void {\n // As the modal can be reopened more times on the same component have to unsubscribe just the current subscription\n this.listenVouchersSubscription.unsubscribe();\n this.closed.emit();\n this.modalComponent?.close();\n }\n\n openVoucher(link: string): void {\n window.open(link);\n }\n\n async open(vouchers: Voucher[]): Promise {\n this.vouchers = vouchers;\n this.receiveVoucherRetryCounter = 0;\n this.oxxoOperationDelayPeriod = this.OxxoOperationDelay;\n\n // Listen the received status just when the modal is opened\n this.listenReceivedVoucher();\n\n return await this.modalComponent.open();\n }\n\n /** Handle the receive voucher BE check by a delay mechanism */\n private handleReceiveVoucherMechanism() {\n setTimeout(() => {\n this.receiveVouchers();\n }, this.oxxoOperationDelayPeriod);\n }\n\n /** Listen received (activated) vouchers with a retry logic. If they are activated, then automatically close the\n modal. Otherwise may be that the vouchers by the iFrames are loaded, but not processed yet and by a retry logic we\n will give time for processing.\n */\n private listenReceivedVoucher() {\n this.listenVouchersSubscription = this.paymentHandler\n .listenReceivedVouchers()\n .subscribe((vouchersReceived) => {\n if (vouchersReceived) {\n this.isVoucherLoading = false;\n\n /* TODO: solution for PHS-27: close automatically the modal, to avoid unfinished submit state in case of\n closing the tab. Later-on may be the modal will be removed and in the background will the handled the\n Voucher activation */\n this.onClose();\n } else {\n // Retry logic until the iframe activates the voucher\n this.receiveVoucherRetryCounter++;\n if (this.receiveVoucherRetryCounter <= this.ReceiveRetry) {\n this.oxxoOperationDelayPeriod += this.OxxoOperationDelay / 2;\n this.logger.warn(\n 'Retry receive voucher until wait for Oxxo voucher activation by iFrame',\n );\n setTimeout(() => {\n this.receiveVouchers();\n }, this.oxxoOperationDelayPeriod);\n } else {\n if (this.ReloadVouchers && !this.areVouchersReloaded) {\n this.reloadVouchers();\n } else {\n this.onClose();\n }\n }\n }\n });\n\n this.subscriptions.add(this.listenVouchersSubscription);\n }\n\n private receiveVouchers() {\n // Clean up the store to be notified by the existing subscriber\n this.paymentHandler.resetReceiveVoucher();\n\n let vouchers: ReceiveVoucherRequest[] = [];\n this.activatedVoucherTokens.forEach((token) => {\n vouchers = [...vouchers, { token: token }];\n });\n\n this.paymentHandler.receiveVouchers({ vouchers });\n }\n\n private reloadVouchers() {\n this.logger.warn(\n 'Failed to activate the voucher by the first iframe loading, try it for the second time',\n );\n const vouchersToReload = cloneDeep(this.vouchers);\n this.vouchers = [];\n // waits for the oxxo-container component to re-init by removing the existing vouchers\n setTimeout(() => {\n this.vouchers = vouchersToReload;\n this.receiveVoucherRetryCounter = 0;\n this.oxxoOperationDelayPeriod = this.OxxoOperationDelay;\n this.areVouchersReloaded = true;\n });\n }\n}\n","\n
    \n \n \n \n
    \n {{ MaintenanceErrorMessage }}\n
    \n
    \n \n {{ GenericErrorMessage }}\n
    \n {{ errorMessage }}\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n","import { Component, Input, ViewChild } from '@angular/core';\nimport { MaintenanceErrorMessage } from '@core/constants/sna-error-messages';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { StatusCodes } from 'http-status-codes';\n\n@Component({\n selector: 'app-consultant-submit-failed-modal',\n templateUrl: './consultant-submit-failed-modal.component.html',\n styleUrls: ['./consultant-submit-failed-modal.component.scss'],\n})\nexport class ConsultantSubmitFailedModalComponent {\n @Input() statusCode: StatusCodes;\n\n readonly StatusCodes = StatusCodes;\n readonly MaintenanceErrorMessage = MaintenanceErrorMessage;\n\n errorMessages: string[] = [];\n modalConfig: ModalConfig = {\n hideDismissButton: true,\n hideCloseButton: true,\n hideHeader: true,\n ngbModalOptions: {\n size: 'md',\n },\n };\n\n @ViewChild('modal') private modal: ModalComponent;\n\n constructor() {}\n\n open(errorMessages: string[]): void {\n this.errorMessages = errorMessages;\n this.modal.open();\n }\n\n close(): void {\n this.errorMessages = [];\n this.modal.close();\n }\n}\n","\n\n\n\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ConsultantSubmitErrorMessages } from '@core/constants/consultant-submit-error-message';\nimport { SubmitConsultantRequest } from '@core/dto/start-now-app.dto';\nimport { CongratulationType } from '@core/enums/congratulation-type.enum';\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { LoggerService } from '@core/services/logger.service';\nimport { AppState } from '@core/store';\nimport {\n selectCanSubmitConsultantInfo,\n selectPaymentStepSkipped,\n selectStartNowAppData,\n selectStepProcessing,\n selectSubmitConsultantStatusCode,\n selectSubmittedConsultantInfo,\n selectVoucherPaymentInfo,\n} from '@core/store/start-now-app';\nimport {\n SubmittedConsultantInfo,\n VoucherPaymentInfo,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n checkIfCanSubmitConsultant,\n resetCanSubmitConsultantInfo,\n resetReceiveVoucher,\n resetSubmitConsultantInfo,\n stepProcessing,\n submitConsultant,\n updateCongratulationStepMode,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\nimport { OxxoVoucherPaymentModalComponent } from '@payment/components/voucher-payment-modal/oxxo-voucher-payment-modal/oxxo-voucher-payment-modal.component';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { StatusCodes } from 'http-status-codes';\nimport { Observable, Subscription, combineLatest, of } from 'rxjs';\nimport { filter, mergeMap, take } from 'rxjs/operators';\nimport { ConsultantSubmitFailedModalComponent } from '../start-now-app-steps/double-check-step/consultant-submit-failed-modal/consultant-submit-failed-modal.component';\nimport {\n SubmitSuccessfulModel,\n buildSubmitConsultantRequest,\n getConsultantSubmitErrorMessage,\n getDisplayedErrorMessages,\n} from '../start-now-app-steps/double-check-step/double-check-step.helper';\n\n@Component({\n selector: 'app-sna-consultant-submit-component',\n templateUrl: './sna-consultant-submit.component.html',\n})\nexport class SnaConsultantSubmitComponent implements OnInit, OnDestroy {\n @Input() paymentHandler: PaymentHandlerBase;\n @Input() isPaymentProviderFirstLoading: boolean = false;\n @Output() consultantSubmitted: EventEmitter = new EventEmitter();\n\n stepProcessing$: Observable;\n\n readonly DisplayErrorTypes: ConsultantSubmissionErrorType[] = [\n ConsultantSubmissionErrorType.EmailAlreadyExists,\n ConsultantSubmissionErrorType.MissingVoucherDetails,\n ConsultantSubmissionErrorType.VaultImportFailed,\n ConsultantSubmissionErrorType.TransactionFailed,\n ];\n\n readonly defaultErrorMessage = $localize`Sorry but an error happened during the finalization of\n your application. Please contact Princess House customer service!`;\n readonly loadingWarningMessage = $localize`Please don’t close your browser tab until\n your application is getting finalized! It may take up a couple of minutes`;\n\n submitConsultantRequest: SubmitConsultantRequest;\n submitSnaStatusCode$: Observable;\n areVouchersReceived: boolean = false;\n\n // Error flags\n isFailedSubmitConsultant: boolean = false;\n isVoucherPaymentError: boolean = false;\n private subscriptions: Subscription = new Subscription();\n\n @ViewChild('voucherPaymentModal')\n private voucherPaymentModal: OxxoVoucherPaymentModalComponent;\n\n @ViewChild('errorModal')\n private errorModal: ConsultantSubmitFailedModalComponent;\n\n constructor(\n private store$: Store,\n private loggerService: LoggerService,\n private appInitService: AppInitService,\n ) {}\n\n ngOnInit(): void {\n this.stepProcessing$ = this.store$.select(selectStepProcessing);\n this.submitSnaStatusCode$ = this.store$.select(selectSubmitConsultantStatusCode);\n this.listenSubmitConsultantResponse();\n this.listenReceivedVoucher();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n\n if (this.isFailedSubmitConsultant) {\n this.store$.dispatch(resetCanSubmitConsultantInfo());\n this.store$.dispatch(resetSubmitConsultantInfo());\n }\n }\n\n public submit(): void {\n this.isFailedSubmitConsultant = false;\n\n const startNowAppData$ = combineLatest([\n this.store$.select(selectStartNowAppData),\n this.store$.select(selectPaymentStepSkipped),\n ]).pipe(\n filter((startNowAppData) => !!startNowAppData),\n take(1),\n mergeMap(([startNowAppData, skipPayment]) => {\n this.submitConsultantRequest = buildSubmitConsultantRequest(startNowAppData, skipPayment);\n this.store$.dispatch(resetCanSubmitConsultantInfo());\n this.store$.dispatch(checkIfCanSubmitConsultant({ payload: this.submitConsultantRequest }));\n\n return of(startNowAppData);\n }),\n );\n\n const canSubmitConsultantInfo$ = this.store$.select(selectCanSubmitConsultantInfo).pipe(\n filter((canSubmitConsultantInfo) => !!canSubmitConsultantInfo),\n take(1),\n );\n\n this.subscriptions.add(\n combineLatest([startNowAppData$, canSubmitConsultantInfo$]).subscribe(\n ([startNowAppData, canSubmitConsultantInfo]) => {\n const successfulModel = this.isSubmittableConsultant(canSubmitConsultantInfo);\n if (successfulModel.isSuccessful) {\n if (\n startNowAppData.startNowAppPaymentInfo.paymentType === PaymentType.PayByCash &&\n !this.areVouchersReceived\n ) {\n this.listenVouchersForActivation();\n } else {\n this.submitConsultant();\n }\n } else {\n this.isFailedSubmitConsultant = true;\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n this.loggerService.error(\n 'CanSubmitConsultant failed!',\n getConsultantSubmitErrorMessage(canSubmitConsultantInfo),\n );\n this.addVoucherLimitErrorIfNeeded(canSubmitConsultantInfo.errorTypes);\n this.openErrorModal(\n getDisplayedErrorMessages(\n this.DisplayErrorTypes,\n canSubmitConsultantInfo.errorTypes,\n this.appInitService.Settings.sna.voucherLimits,\n ),\n );\n }\n },\n ),\n );\n }\n\n /** Handle the received (activated) voucher modal response. If the vouchers are activated submit\n the consultant otherwise show the corresponding error. */\n public onVoucherModalGotIt() {\n this.subscriptions.add(\n combineLatest([\n this.store$.select(selectVoucherPaymentInfo),\n this.store$.select(selectCanSubmitConsultantInfo),\n ])\n .pipe(\n filter(\n ([voucherPaymentInfo, canSubmitConsultantInfo]) =>\n canSubmitConsultantInfo !== null && voucherPaymentInfo?.vouchersReceived !== null,\n ),\n take(1),\n )\n .subscribe(([voucherPaymentInfo]) => {\n if (voucherPaymentInfo.vouchersReceived) {\n this.submitConsultant();\n } else {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n this.store$.dispatch(resetReceiveVoucher());\n this.isFailedSubmitConsultant = true;\n this.openErrorModal([\n ConsultantSubmitErrorMessages[ConsultantSubmissionErrorType.MissingVoucherDetails],\n ]);\n }\n }),\n );\n }\n\n /** Listen created and not received vouchers to activate them. */\n private listenVouchersForActivation() {\n this.subscriptions.add(\n this.store$\n .select(selectVoucherPaymentInfo)\n .pipe(\n filter(\n (voucherPaymentInfo: VoucherPaymentInfo) =>\n !voucherPaymentInfo.vouchersReceived && !!voucherPaymentInfo.vouchers?.length,\n ),\n take(1),\n )\n .subscribe((voucherPaymentInfo) => {\n // Open the modal where the vouchers will be activated on PayPal Oxxo side\n this.voucherPaymentModal.open(voucherPaymentInfo.vouchers);\n this.isVoucherPaymentError = true;\n }),\n );\n }\n\n /** Listen received (activated) vouchers and set received flag. */\n private listenReceivedVoucher() {\n this.subscriptions.add(\n this.store$\n .select(selectVoucherPaymentInfo)\n .pipe(\n filter((voucherPaymentInfo) => voucherPaymentInfo.vouchersReceived !== null),\n take(1),\n )\n .subscribe((voucherPaymentInfo) => {\n this.areVouchersReceived = voucherPaymentInfo.vouchersReceived;\n }),\n );\n }\n\n /** Listen submit consultant and handle the result. If is submitted then move to congratulation page\n otherwise show the corresponding error. */\n private listenSubmitConsultantResponse() {\n this.subscriptions.add(\n this.store$\n .select(selectSubmittedConsultantInfo)\n .pipe(filter((submitResult) => !!submitResult))\n .subscribe((submitResult) => {\n const successfulModel = this.isSubmittableConsultant(submitResult);\n\n if (successfulModel.isSuccessful) {\n this.store$.dispatch(\n updateCongratulationStepMode({ mode: successfulModel.congratulationType }),\n );\n this.consultantSubmitted.emit(true);\n } else {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n if (submitResult.errorTypes?.length) {\n this.addVoucherLimitErrorIfNeeded(submitResult.errorTypes);\n }\n this.openErrorModal(\n getDisplayedErrorMessages(\n this.DisplayErrorTypes,\n submitResult.errorTypes,\n this.appInitService.Settings.sna.voucherLimits,\n ),\n );\n this.isFailedSubmitConsultant = true;\n this.loggerService.error(\n 'SubmitConsultant failed!',\n getConsultantSubmitErrorMessage(submitResult),\n );\n this.consultantSubmitted.emit(false);\n }\n }),\n );\n }\n\n private submitConsultant() {\n if (this.submitConsultantRequest) {\n this.store$.dispatch(resetSubmitConsultantInfo());\n this.store$.dispatch(submitConsultant({ payload: this.submitConsultantRequest }));\n } else {\n this.loggerService.error('Missing request object for submitting consultant');\n }\n }\n\n private openErrorModal(displayErrorMessages: string[]): void {\n if (!displayErrorMessages.length) {\n displayErrorMessages.push(this.defaultErrorMessage);\n }\n this.errorModal.open(displayErrorMessages);\n }\n\n private addVoucherLimitErrorIfNeeded(errorTypes: ConsultantSubmissionErrorType[]): void {\n if (errorTypes.includes(ConsultantSubmissionErrorType.YearlyVoucherAmountReached)) {\n this.DisplayErrorTypes.push(ConsultantSubmissionErrorType.YearlyVoucherAmountReached);\n } else if (errorTypes.includes(ConsultantSubmissionErrorType.MonthlyVoucherAmountReached)) {\n this.DisplayErrorTypes.push(ConsultantSubmissionErrorType.MonthlyVoucherAmountReached);\n } else if (errorTypes.includes(ConsultantSubmissionErrorType.DailyVoucherAmountReached)) {\n this.DisplayErrorTypes.push(ConsultantSubmissionErrorType.DailyVoucherAmountReached);\n }\n }\n\n private isSubmittableConsultant(submitResult: SubmittedConsultantInfo): SubmitSuccessfulModel {\n if (submitResult && submitResult?.errorTypes) {\n const isOnlyOneError = submitResult.errorTypes.length === 1;\n\n const isContractPaidByVoucher: boolean =\n !!submitResult.errorTypes.find(\n (errorType) => errorType === ConsultantSubmissionErrorType.ContractPaidByVoucher,\n ) && isOnlyOneError;\n\n const isContractReleaseFailed =\n !!submitResult.errorTypes.find(\n (errorType) => errorType === ConsultantSubmissionErrorType.ContractReleaseFailed,\n ) && isOnlyOneError;\n\n const isContractPaidByBankTransfer: boolean =\n !!submitResult.errorTypes.find(\n (errorType) => errorType === ConsultantSubmissionErrorType.ContractPaidByBankTransfer,\n ) && isOnlyOneError;\n\n let congratulationType: CongratulationType = null;\n if (submitResult.isSuccess) {\n congratulationType = CongratulationType.Normal;\n } else if (isContractPaidByVoucher) {\n congratulationType = CongratulationType.Cash;\n } else if (isContractReleaseFailed) {\n congratulationType = CongratulationType.BackOfficeIssue;\n } else if (isContractPaidByBankTransfer) {\n congratulationType = CongratulationType.BankTransfer;\n }\n\n return {\n isSuccessful:\n submitResult.isSuccess ||\n isContractPaidByVoucher ||\n isContractReleaseFailed ||\n isContractPaidByBankTransfer,\n congratulationType: congratulationType,\n };\n } else {\n return { isSuccessful: false, congratulationType: null };\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-password-card',\n templateUrl: './password-card.component.html',\n styleUrls: ['./password-card.component.scss'],\n})\nexport class PasswordCardComponent {\n @Input() password: string;\n\n showPassword: boolean = false;\n\n constructor() {}\n\n togglePasswordShowing() {\n this.showPassword = !this.showPassword;\n }\n}\n","
    \n
    \n
    \n Password\n \n \n {{ showPassword ? password : '*'.repeat(password.length) }}\n \n \n \n \n \n \n
    \n
    \n
    \n \n Password\n \n {{ showPassword ? password : '*'.repeat(password.length) }}\n \n \n \n \n \n \n
    \n
    \n","

    Your information is important to us

    \n
    Please double-check that everything is correct
    \n\n
    \n
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n \n \n
    \n\n \n \n \n \n
    \n\n \n \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n
    \n\n
    \n \n \n
    \n \n Please confirm on your recruiter before finalizing your application!\n \n
    \n
    \n\n
    \n \n
    \n \n \n \n \n\n \n \n\n\n\n \n \n\n","import {\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { AddressType } from '@core/enums/address-type.enum';\nimport { PaymentHandlerType } from '@core/enums/payment-handler-type.enum';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { LoggerService } from '@core/services/logger.service';\nimport { AppState } from '@core/store';\nimport { selectConsultantState } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport {\n selectConfirmRecruiter,\n selectConsultantDataCanNotBeModified,\n selectIsZeroDepositAvailable,\n selectOrderSummary,\n selectPaymentStepSkipped,\n selectSnaCountryStates,\n selectStartNowAppData,\n selectStepProcessing,\n} from '@core/store/start-now-app';\nimport {\n Address,\n CountryState,\n OrderSummary,\n StartNowAppData,\n UserInfo,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport { stepProcessing, storePaymentType } from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { PaymentHandlerFactory } from '@payment/payment-handler/payment-handler-factory';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { ssnMasking } from '@shared/utils/ssn-masking-utils';\nimport { StartNowAppStep } from 'app/modules/start-now-app/enums/start-now-app-step.enum';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\nimport { SnaConsultantSubmitComponent } from '../../sna-consultant-submit/sna-consultant-submit.component';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-double-check-step',\n templateUrl: './double-check-step.component.html',\n styleUrls: ['./double-check-step.component.scss'],\n})\nexport class DoubleCheckStepComponent\n extends StartNowStepBaseComponent\n implements OnInit, OnDestroy\n{\n @Output() goToStep: EventEmitter = new EventEmitter();\n readonly AddressType = AddressType;\n\n ssnMasking = ssnMasking;\n public isMexEnv = isMexEnv;\n\n StartNowAppStep = StartNowAppStep;\n orderSummary$: Observable;\n stepProcessing$: Observable;\n consultantDataCanNotBeModified$: Observable;\n startNowAppData: StartNowAppData;\n confirmRecruiter: boolean = false;\n isSubmitted: boolean = false;\n replicatedSiteConsultant: Consultant;\n paymentHandler: PaymentHandlerBase;\n countryStates$: Observable;\n paymentStepSkipped$: Observable;\n isZeroDepositAvailable$: Observable;\n consultantDataIsChangable$: Observable;\n isLoading: boolean = false;\n addressTitles = {\n [AddressType.Home]: $localize`Address`,\n [AddressType.Shipping]: $localize`Shipping`,\n [AddressType.Billing]: $localize`Billing`,\n };\n public skipPayment: boolean;\n\n @ViewChild('snaConsultantSubmit')\n private snaConsultantSubmitComponent: SnaConsultantSubmitComponent;\n\n constructor(\n private store$: Store,\n private paymentHandlerFactory: PaymentHandlerFactory,\n private logger: LoggerService,\n injector: Injector,\n ) {\n super(injector, 'SNA Step - 8 Double Check');\n }\n\n ngOnInit(): void {\n this.initObservables();\n this.paymentHandler = this.paymentHandlerFactory.getPaymentHandler(\n PaymentHandlerType.StartNowApp,\n );\n this.isZeroDepositAvailable$ = this.store$.select(selectIsZeroDepositAvailable);\n this.requestConfirmRecruiter();\n this.requestStartNowAppData();\n this.listenReplicatedSiteConsultant();\n this.paymentStepSkipped$ = this.store$\n .select(selectPaymentStepSkipped)\n .pipe(map((skipPayment) => skipPayment));\n this.subscriptions.add(\n this.paymentStepSkipped$.subscribe((skipPayment) => {\n this.skipPayment = skipPayment;\n }),\n );\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n submitStep(): void {\n this.isSubmitted = true;\n this.store$.dispatch(stepProcessing({ stepProcessing: true }));\n\n if (this.confirmRecruiter && !this.skipPayment) {\n this.goToNextStep.emit();\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n } else if (this.confirmRecruiter && this.skipPayment) {\n this.submitConsultant();\n } else {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n }\n }\n\n onConsultantSubmitted(isSubmitted): void {\n if (isSubmitted) {\n this.goToNextStep.emit();\n } else {\n this.logger.error('Consultant submission failed');\n }\n }\n\n fullName(userInfo: UserInfo): string {\n let fullName: string;\n if (userInfo.middleName === '') {\n fullName = userInfo.firstName + ' ' + userInfo.lastName;\n } else {\n fullName = userInfo.firstName + ' ' + userInfo.middleName + ' ' + userInfo.lastName;\n }\n return fullName;\n }\n\n selectAddress(addresses: Address[], addressType: AddressType): Address {\n let selectedAddress: Address;\n addresses.forEach((address) => {\n if (address.addressType === addressType) {\n selectedAddress = address;\n }\n });\n return selectedAddress;\n }\n\n navigateTo(step: number) {\n this.goToStep.emit(step);\n }\n\n protected createFormGroup(): FormGroup {\n throw new Error('Method not implemented.');\n }\n\n private requestConfirmRecruiter() {\n this.subscriptions.add(\n this.store$\n .select(selectConfirmRecruiter)\n .pipe(take(1))\n .subscribe((confirmRecruiter) => (this.confirmRecruiter = confirmRecruiter)),\n );\n }\n\n private requestStartNowAppData() {\n this.subscriptions.add(\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n filter((startNowAppData) => !!startNowAppData),\n take(1),\n )\n .subscribe((startNowAppData) => {\n this.startNowAppData = startNowAppData;\n }),\n );\n }\n\n private listenReplicatedSiteConsultant() {\n this.subscriptions.add(\n this.store$\n .select(selectConsultantState)\n .pipe(\n filter((state) => state.isCurrentConsultantFetched),\n take(1),\n )\n .subscribe((state) => {\n this.replicatedSiteConsultant = state.currentConsultant;\n }),\n );\n }\n\n private initObservables(): void {\n this.orderSummary$ = this.store$.select(selectOrderSummary);\n this.stepProcessing$ = this.store$.select(selectStepProcessing);\n this.consultantDataCanNotBeModified$ = this.store$\n .select(selectConsultantDataCanNotBeModified)\n .pipe(map((consultantDataCanNotBeModified) => !!consultantDataCanNotBeModified));\n this.countryStates$ = this.store$.select(selectSnaCountryStates);\n this.consultantDataIsChangable$ = combineLatest([\n this.store$.select(selectStepProcessing),\n this.store$.select(selectConsultantDataCanNotBeModified),\n ]).pipe(\n map(\n ([isStepProcessing, consultantDataCanNotBeModified]) =>\n !isStepProcessing && !consultantDataCanNotBeModified,\n ),\n );\n }\n\n private submitConsultant() {\n this.store$.dispatch(storePaymentType({ paymentType: PaymentType.Finance }));\n this.store$.dispatch(stepProcessing({ stepProcessing: true }));\n this.snaConsultantSubmitComponent.submit();\n }\n}\n","import { Component } from '@angular/core';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { AddressValidationErrorMessages } from '@core/constants/address-validation-error-messages';\nimport { ValidEmailRegExp } from '@core/constants/patterns';\nimport { CardPaymentTypes, PaymentImageSrc } from '@core/constants/payment.consts';\nimport { ZipCodeMinimumLength } from '@core/constants/zip-code-minimum-length';\nimport { AddressType } from '@core/enums/address-type.enum';\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\nimport { Country } from '@core/enums/country.enum';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { SnaCreateVoucherPaymentErrorType } from '@core/enums/create-voucher-error-type.enum';\nimport { InputMaxLength } from '@core/enums/input-max-length.enum';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentCardType, PaymentType } from '@core/enums/payment-type.enum';\nimport {\n PaymentStepCardholderNameModel as PaymentStepAdditionalBillingInformationModel,\n PaymentStepAddressModel,\n PaymentStepCardModel,\n PaymentStepPriceModel,\n PaymentStepVoucherModel,\n} from '@core/models/start-now-app.model';\nimport {\n Address,\n AddressVerification,\n OrderSummary,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport { environment } from '@env';\nimport { SelectOption } from '@shared/components/select/select.component';\nimport { emailValidator } from '@shared/utils/email-validator-utils';\nimport { StatusCodes } from 'http-status-codes';\nimport { Observable } from 'rxjs';\nimport { SavedCardInfo } from '../../../../payment/components/saved-card/saved-card-info.model';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n template: '',\n})\nexport abstract class PaymentStepBaseComponent extends StartNowStepBaseComponent {\n public readonly Country = Country;\n public readonly PaymentType = PaymentType;\n public readonly PaymentCardType = PaymentCardType;\n public readonly CreatePaymentErrorType = CreateCardPaymentErrorType;\n public readonly PaymentImageSrc = PaymentImageSrc;\n public readonly ShowVoucherPayment = environment.feature.voucherPaymentSNA;\n public readonly ShowBankTransfer = environment.feature.bankTransferSna;\n public readonly StatusCodes = StatusCodes;\n public readonly CardPaymentTypes = CardPaymentTypes;\n public readonly PaymentProviderType = PaymentProviderType;\n\n public readonly FormGroup = {\n PaymentCard: 'paymentCard',\n PaymentPrice: 'paymentPrice',\n PaymentVoucher: 'paymentVoucher',\n PaymentAddress: 'paymentAddress',\n AdditionalBillingInformation: 'additionalBillingInformation',\n };\n\n public readonly defaultAddress: Address = {\n address1: '',\n address2: '',\n address3: '',\n city: '',\n state: '',\n zip: '',\n addressType: AddressType.Home,\n country: Country.Usa,\n isPostOfficeBox: false,\n };\n\n public readonly FormControl = {\n CardType: 'cardType',\n Price: 'price',\n AddressLine1: 'address1',\n AddressLine2: 'address2',\n AddressLine3: 'address3',\n City: 'city',\n State: 'state',\n ZipCode: 'zip',\n IsMailingAddress: 'isMailingAddress',\n Email: 'email',\n FirstName: 'firstName',\n LastName: 'lastName',\n };\n\n // TODO: StartNowApp - make background, fontStyle to be used be defined scss variables\n public readonly PriceInputLabelStyle = {\n 'max-width': '369px',\n width: '100%',\n height: '74px',\n background: '#F9F5FB',\n border: '1px solid #EDE0F5',\n boxSizing: 'border-box',\n borderRadius: '4px',\n fontFamily: 'DM Sans',\n fontStyle: 'normal',\n fontWeight: '700',\n fontSize: '24px',\n textAlign: 'right',\n };\n\n public readonly GetIsMailingAddress: string =\n this.FormGroup.PaymentAddress + '.' + this.FormControl.IsMailingAddress;\n\n public isPaymentMethodRequestable: boolean = false;\n public isSubmitted: boolean = false;\n public selectedPaymentType: PaymentType;\n public selectedCardPaymentType: PaymentCardType = PaymentCardType.DebitCard;\n public cardPaymentTypeOptions: SelectOption[] = Object.keys(this.CardPaymentTypes).map((key) => ({\n name: this.CardPaymentTypes[key],\n value: key,\n }));\n public voucherEmail: string;\n public paymentFormGroup: FormGroup;\n public showMorePaymentImage: boolean = false;\n public mailingAddress: Address;\n public isCardPaymentError: boolean = false;\n public isVoucherPaymentError: boolean = false;\n public isCardSaved: boolean = false;\n public isSavedKushki: boolean = false;\n public isVoucherSaved: boolean = false;\n public countryStates$: Observable;\n public cardPaymentErrorType: CreateCardPaymentErrorType = CreateCardPaymentErrorType.None;\n public voucherPaymentErrorType: SnaCreateVoucherPaymentErrorType =\n SnaCreateVoucherPaymentErrorType.None;\n public cardPaymentMethodInfo: SavedCardInfo;\n public addressValidation$: Observable;\n public isForbiddenState: boolean = false;\n public readonly AddressValidationErrorMessages = AddressValidationErrorMessages;\n public addressValidationResultErrorCode: string;\n public canAddressOverride$: Observable;\n public orderSummary$: Observable;\n public isStepProcessing$: Observable;\n public isPaymentApproved: boolean = false;\n public isHttpErrorOnPayment: boolean = false;\n public isPaymentProviderLoading: boolean = true;\n public statusCode: StatusCodes;\n public createVoucherErrorTypes$: Observable;\n public paymentProvider$: Observable;\n public isPayPalCardPaymentEnabled: boolean = false;\n public isNexioPaymnetEnabled: boolean = false;\n public canChangeSavedCard$: Observable;\n public kushkiFormIdType: KushkiFormIdTypes;\n\n protected paymentCard: PaymentStepCardModel = {\n cardType: [this.selectedCardPaymentType, [Validators.required]],\n };\n\n protected paymentPrice: PaymentStepPriceModel = {\n price: ['', []],\n };\n\n protected paymentVoucher: PaymentStepVoucherModel = {\n email: ['', [Validators.required, emailValidator(ValidEmailRegExp)]],\n };\n\n protected paymentAddress: PaymentStepAddressModel = {\n address1: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n address2: ['', [Validators.maxLength(InputMaxLength.Fifty)]],\n // TODO: StartNowApp - handle mexico case\n address3: ['', [Validators.maxLength(InputMaxLength.Fifty)]],\n city: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n state: ['', [Validators.required]],\n zip: [\n '',\n [\n Validators.required,\n Validators.minLength(ZipCodeMinimumLength),\n Validators.maxLength(InputMaxLength.Ten),\n ],\n ],\n isMailingAddress: [true, []],\n };\n\n protected additionalBillingInformation: PaymentStepAdditionalBillingInformationModel = {\n firstName: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n lastName: ['', [Validators.required, Validators.maxLength(InputMaxLength.Fifty)]],\n };\n}\n","\n
    \n
    \n Credit/debit card\n
    \n \n
    \n
    \n
    Paypal
    \n \n
    \n
    \n
    Pay by cash
    \n \n
    \n
    \n
    Bank transfer
    \n \n
    \n\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { PaymentImageSrc } from '@core/constants/payment.consts';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppState } from '@core/store';\nimport {\n resetClientToken,\n updatePaymentProviderType,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { Store } from '@ngrx/store';\nimport { getPaymentProviderType } from '@payment/payment-handler/payment-provider.utils';\nimport { PaymentTypeChangedModalResult } from '../payment-type-changed-modal/payment-type-changed-modal-result.model';\n\n@Component({\n selector: 'app-payment-type-selector',\n templateUrl: './payment-type-selector.component.html',\n styleUrls: ['./payment-type-selector.component.scss'],\n})\nexport class PaymentTypeSelectorComponent implements OnChanges {\n @Input() selectedPaymentType: PaymentType;\n @Input() isStepProcessing: boolean = false;\n @Input() disabled: boolean = false;\n @Input() showVoucherPayment: boolean = true;\n @Input() showBankTransferPayment: boolean = true;\n @Input() hasSavedPayment: boolean = false;\n @Output() selectedPaymentTypeChange: EventEmitter = new EventEmitter();\n @Output() changePaymentType: EventEmitter =\n new EventEmitter();\n\n readonly PaymentImageSrc = PaymentImageSrc;\n readonly PaymentType = PaymentType;\n\n constructor(\n private store$: Store,\n private cdRef: ChangeDetectorRef,\n private appInitService: AppInitService,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n this.cdRef.detectChanges();\n }\n }\n\n onChangePaymentType(paymentType: PaymentType) {\n if (!this.hasSavedPayment) {\n const provider = getPaymentProviderType(\n paymentType,\n this.appInitService.Settings.sna.isNexioCardPaymentEnabled,\n );\n this.store$.dispatch(updatePaymentProviderType({ provider }));\n this.store$.dispatch(resetClientToken());\n }\n\n this.selectedPaymentTypeChange.emit(paymentType);\n }\n}\n","
    \n
    \n
    \n
    \n \n Saved Voucher\n \n \n
    \n
    \n Change\n
    \n
    \n\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-saved-voucher',\n templateUrl: './saved-voucher.component.html',\n styleUrls: ['./saved-voucher.component.scss'],\n})\nexport class SavedVoucherComponent {\n @Input() email: string;\n @Input() hideChange: boolean = false;\n @Output() resetPayment: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n resetPaymentClick() {\n this.resetPayment.emit();\n }\n}\n","
    \n
    \n
    \n
    \n \n Voucher error\n \n \n
    \n
    \n Change\n
    \n
    \n
    \n {{ errorMessage }}\n
    \n\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ConsultantSubmissionErrorType } from '@core/enums/consultant-submission-error-type.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { getVoucherErrorMessage } from '@shared/utils/voucher-error-utils';\n\n@Component({\n selector: 'app-create-voucher-payment-error',\n templateUrl: './create-voucher-payment-error.component.html',\n styleUrls: ['./create-voucher-payment-error.component.scss'],\n})\nexport class CreateVoucherPaymentErrorComponent implements OnInit {\n @Input() email: string;\n @Input() errorTypes: ConsultantSubmissionErrorType[] = [];\n @Input() price: number;\n @Output() resetPayment: EventEmitter = new EventEmitter();\n\n // eslint-disable-next-line max-len\n errorMessage: string = $localize`Voucher creation was not successful, please ignore the e-mail if you got one!`;\n\n constructor(private appInitService: AppInitService) {}\n\n ngOnInit(): void {\n this.errorMessage = getVoucherErrorMessage(\n this.errorTypes,\n this.price > this.appInitService.Settings.sna.voucherLimits.dailyLimit ? null : this.email,\n this.appInitService.Settings.sna.voucherLimits,\n );\n }\n\n resetPaymentClick() {\n this.resetPayment.emit();\n }\n}\n","
    \n
    \n Order Summary\n
    \n
    \n Price\n {{ orderSummary?.price | phCurrency }}\n
    \n
    \n State & local taxes\n {{ orderSummary?.taxAmount | phCurrency }}\n
    \n \n Total cost\n {{ orderSummary?.totalCost | phCurrency }}\n
    \n
    \n Less deposit\n {{ orderSummary?.lessDeposit | phCurrency }}\n
    \n
    \n Balance due\n {{ orderSummary?.balanceDue | phCurrency }}\n
    \n\n
    \n
    \n You pay\n {{ orderSummary?.lessDeposit | phCurrency }}\n
    \n
    \n
    \n
    \n You pay\n
    \n
    \n
    \n
    \n {{ orderSummary?.lessDeposit | phCurrency }}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Total cost\n {{ orderSummary?.totalCost | phCurrency }}\n
    \n
    \n
    \n
    \n Total cost\n
    \n
    \n
    \n
    \n {{ orderSummary?.totalCost | phCurrency }}\n
    \n
    \n
    \n
    \n\n","import { Component, Input } from '@angular/core';\nimport { OrderSummary } from '@core/store/start-now-app/start-now-app-state-models';\n\n@Component({\n selector: 'app-order-summary',\n templateUrl: './order-summary.component.html',\n styleUrls: ['./order-summary.component.scss'],\n})\nexport class OrderSummaryComponent {\n @Input()\n orderSummary: OrderSummary;\n\n constructor() {}\n}\n","\n
    \n \n \n \n

    The already created payment will be ignored!

    \n
    \n The previously introduced card and payment will be removed! Are you sure?\n
    \n
    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n","import { Component, EventEmitter, Output, ViewChild } from '@angular/core';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\nimport { PaymentTypeChangedModalResult } from './payment-type-changed-modal-result.model';\n\n@Component({\n selector: 'app-payment-type-changed-modal',\n templateUrl: './payment-type-changed-modal.component.html',\n styleUrls: ['./payment-type-changed-modal.component.scss'],\n})\nexport class PaymentTypeChangedModalComponent extends BaseComponent {\n @Output() changePaymentType: EventEmitter =\n new EventEmitter();\n public readonly PaymentType = PaymentType;\n\n public readonly ModalConfig: ModalConfig = {\n hideCloseButton: true,\n hideDismissButton: true,\n hideHeader: true,\n ngbModalOptions: {\n backdrop: 'static',\n keyboard: false,\n },\n };\n\n previousPaymentType: PaymentType;\n currentPaymentType: PaymentType;\n\n @ViewChild('modal') private modalComponent: ModalComponent;\n\n constructor() {\n super();\n }\n\n async open(previousPaymentType: PaymentType, currentPaymentType: PaymentType) {\n this.previousPaymentType = previousPaymentType;\n this.currentPaymentType = currentPaymentType;\n return await this.modalComponent.open();\n }\n\n continue(): void {\n this.changePaymentType.emit({\n previousPaymentType: this.previousPaymentType,\n currentPaymentType: this.currentPaymentType,\n isPaymentTypeChangeAccepted: true,\n });\n this.modalComponent.close();\n }\n\n cancel(): void {\n this.changePaymentType.emit({\n previousPaymentType: this.previousPaymentType,\n currentPaymentType: this.currentPaymentType,\n isPaymentTypeChangeAccepted: false,\n });\n this.modalComponent.close();\n }\n}\n","
    \n

    Your best business investment.

    \n\n
    How would you like to pay for your Share + Earn kit?
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n \n
    \n

    Credit Card Billing Address

    \n
    \n
    \n
    \n \n \n Credit Card Billing Address and Mailing Address are the same\n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n\n
    \n \n {{ AddressValidationErrorMessages[addressValidationResultErrorCode] }}\n \n \n
    \n\n
    \n
    \n

    Card Contact Information

    \n
    \n \n \n \n
    \n \n\n
    \n
    \n \n \n
    \n \n \n \n \n
    \n
    \n\n
    \n
    \n \n
    \n \n \n \n
    \n\n
    \n Please fill in the payment related fields with valid values!\n Please fill in and submit the payment related fields with valid values!\n
    \n
    \n\n \n \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n \n
    \n \n \n\n \n \n\n\n\n\n\n\n\n
    \n \n
    \n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Injector,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { AddressType } from '@core/enums/address-type.enum';\nimport { AddressValidationErrors } from '@core/enums/address-validation-errors.enum';\nimport { CreateCardPaymentErrorType } from '@core/enums/create-card-payment-error-type.enum';\nimport { SnaCreateVoucherPaymentErrorType } from '@core/enums/create-voucher-error-type.enum';\nimport { KushkiFormIdTypes } from '@core/enums/kushki-form-id-types.enum';\nimport { PaymentHandlerType } from '@core/enums/payment-handler-type.enum';\nimport { PaymentProviderType } from '@core/enums/payment-provider-type.enum';\nimport { PaymentCardType, PaymentType } from '@core/enums/payment-type.enum';\nimport { CardholderName } from '@core/models/cardholder-name.model';\nimport { LogCardAttemptData } from '@core/models/log-card-attempt-data.model';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { LoggerService } from '@core/services/logger.service';\nimport { AppState } from '@core/store';\nimport { CreatedVoucherPaymentMethod } from '@core/store/payment/payment-state-models';\nimport {\n selectAddressValidationModalData,\n selectAddresses,\n selectCanAddressOverride,\n selectCanChangeSaveCard,\n selectCardPaymentInfo,\n selectCreateVoucherErrorTypes,\n selectCreatedCardPaymentMethodResponse,\n selectCreatedVoucherPaymentMethodResponse,\n selectOrderSummary,\n selectSavedAccount,\n selectSavedCard,\n selectSelectedStarterKit,\n selectSnaCountryStates,\n selectSnaPaymentInfo,\n selectSnaPaymentNonce,\n selectStartNowAppData,\n selectStepProcessing,\n selectVoucherPaymentInfo,\n} from '@core/store/start-now-app';\nimport {\n Address,\n AddressVerification,\n CreatedSnaPaymentMethod,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n addAddress,\n fetchCountryStates,\n fetchOrderSummary,\n resetAdditionalBillingInformation,\n resetAddressValidationModal,\n resetAddressValidationStep,\n resetClientToken,\n resetIsFinalizeButtonEnable,\n resetPaymentMethod,\n resetVoucherInfo,\n setIsFinalizeButtonEnable,\n stepProcessing,\n storeCardPaymentInfo,\n storePaymentType,\n storeVoucherPaymentInfo,\n updateAdditionalBillingInformation,\n updateAddressValidationModalValidity,\n updatePaymentProviderType,\n validateAddress,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { environment } from '@env';\nimport { Store, select } from '@ngrx/store';\nimport { CardPaymentWrapperComponent } from '@payment/components/card-payment-wrapper/card-payment-wrapper.component';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { PaymentHandlerFactory } from '@payment/payment-handler/payment-handler-factory';\nimport { getPaymentProviderType } from '@payment/payment-handler/payment-provider.utils';\nimport { TextFieldInputComponent } from '@shared/components/text-field-input/text-field-input.component';\nimport { countryStatesToSelectOptions } from '@shared/utils/address-utils';\nimport { getKushkiFormIdType } from '@shared/utils/get-kushki-fomr-id-type-util';\nimport { StatusCodes } from 'http-status-codes';\nimport { Observable, combineLatest, fromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, mergeMap, startWith, take, tap } from 'rxjs/operators';\nimport { SavedCardInfo } from '../../../../payment/components/saved-card/saved-card-info.model';\nimport { SnaConsultantSubmitComponent } from '../../sna-consultant-submit/sna-consultant-submit.component';\nimport { PaymentStepBaseComponent } from './payment-step-base.component';\nimport { PaymentTypeChangedModalResult } from './payment-type-changed-modal/payment-type-changed-modal-result.model';\nimport { PaymentTypeChangedModalComponent } from './payment-type-changed-modal/payment-type-changed-modal.component';\n\n@Component({\n selector: 'app-payment-step',\n templateUrl: './payment-step.component.html',\n styleUrls: ['./payment-step.component.scss'],\n})\nexport class PaymentStepComponent\n extends PaymentStepBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n isPaymentProviderFirstLoading: boolean = true;\n cardholderName: CardholderName;\n kushkiFormIdType: KushkiFormIdTypes;\n public paymentHandler: PaymentHandlerBase;\n\n @ViewChild('cardPaymentWrapper')\n private paymentWrapperComponent: CardPaymentWrapperComponent;\n\n @ViewChild('paymentTypeChangedModal')\n private paymentTypeChangedModal: PaymentTypeChangedModalComponent;\n\n @ViewChild('snaConsultantSubmit')\n private snaConsultantSubmitComponent: SnaConsultantSubmitComponent;\n\n @ViewChild('firstNameInput') private firstNameInput: TextFieldInputComponent;\n @ViewChild('lastNameInput') private lastNameInput: TextFieldInputComponent;\n\n constructor(\n private store$: Store,\n private fb: FormBuilder,\n private cdRef: ChangeDetectorRef,\n private paymentHandlerFactory: PaymentHandlerFactory,\n private logger: LoggerService,\n injector: Injector,\n appInitService: AppInitService,\n ) {\n super(injector, 'SNA Step - 5 Payment');\n this.isPayPalCardPaymentEnabled = appInitService.Settings.sna.isPayPalCardPaymentEnabled;\n this.isNexioPaymnetEnabled = appInitService.Settings.sna.isNexioCardPaymentEnabled;\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n }, 500);\n\n // TODO: Handle cardholder name prefell for Kushki payment provider if needed\n this.listenCreditCardBillingAddressValidity();\n }\n\n ngOnInit(): void {\n this.store$.dispatch(fetchCountryStates());\n this.canAddressOverride$ = this.store$.select(selectCanAddressOverride);\n this.countryStates$ = countryStatesToSelectOptions(this.store$.select(selectSnaCountryStates));\n this.isStepProcessing$ = this.store$.select(selectStepProcessing);\n this.paymentHandler = this.paymentHandlerFactory.getPaymentHandler(\n PaymentHandlerType.StartNowApp,\n );\n this.createVoucherErrorTypes$ = this.store$.select(selectCreateVoucherErrorTypes);\n this.paymentFormGroup = this.createFormGroup();\n\n this.fetchAndSelectOrderSummary();\n this.initAddressValidation();\n this.listenPaymentType();\n this.listenSavedCard();\n this.listenSavedVoucher();\n this.listenCardTypeValueChanges();\n this.listenForPaymentReadySubmit();\n this.listenValidationResult();\n this.listenAddresses();\n this.subscribeIsMailingAddressValueChanges();\n this.prepopulateStarterKitPrice();\n this.prepopulateAdditionalBillingInformation();\n this.initPaymentProvider();\n const voucherForm = this.paymentFormGroup.get(this.FormGroup.PaymentVoucher) as FormGroup;\n this.listenFormValidityForUpdateFinalizeButton(voucherForm);\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.store$.dispatch(resetAddressValidationModal());\n this.store$.dispatch(resetAddressValidationStep());\n this.store$.dispatch(resetIsFinalizeButtonEnable());\n }\n\n submitStep(): void {\n let isValid: boolean = false;\n this.isSubmitted = true;\n this.paymentFormGroup.markAllAsTouched();\n this.store$.dispatch(resetAddressValidationModal());\n\n if (\n this.selectedPaymentType === PaymentType.CreditOrDebitCard ||\n this.selectedPaymentType === PaymentType.PayPal ||\n this.selectedPaymentType === PaymentType.BankTransfer\n ) {\n isValid =\n this.isCardSaved ||\n (this.isPaymentMethodRequestable && !this.isCardPaymentError) ||\n this.isSavedKushki;\n } else if (this.selectedPaymentType === PaymentType.PayByCash) {\n const isVoucherEmailValid = this.paymentFormGroup.get(this.FormGroup.PaymentVoucher).valid;\n isValid = this.isVoucherSaved || (isVoucherEmailValid && !this.isVoucherPaymentError);\n }\n\n isValid = isValid && this.getBillingInformationValidity();\n if (isValid) {\n this.store$.dispatch(stepProcessing({ stepProcessing: true }));\n const address: Address = this.paymentFormGroup.get(this.FormGroup.PaymentAddress).value;\n\n if (this.selectedPaymentType === PaymentType.CreditOrDebitCard) {\n this.store$.dispatch(\n validateAddress({\n address: { ...address, addressType: AddressType.Billing, country: environment.country },\n }),\n );\n } else {\n this.submitPayment();\n }\n\n this.listenAddressChangeAndResetFlags();\n }\n }\n\n handlePaymentRequestable(isPaymentMethodRequestable: boolean): void {\n this.isPaymentMethodRequestable = isPaymentMethodRequestable;\n // https://github.com/webcomponents/polyfills/issues/238\n this.cdRef.detectChanges();\n this.setFinlizeButtonVisibility();\n }\n\n isCardFormValid(): boolean {\n return this.isSubmitted\n ? this.isPaymentMethodRequestable || this.isCardSaved || this.isSavedKushki\n : true;\n }\n\n toggleShowMorePaymentImage(): void {\n this.showMorePaymentImage = !this.showMorePaymentImage;\n }\n\n resetCardPayment(): void {\n this.initSavedCard();\n this.setCardError(CreateCardPaymentErrorType.None);\n this.isPaymentApproved = false;\n this.setFinlizeButtonVisibility();\n if (this.isMexEnv) {\n switch (this.paymentWrapperComponent?.paymentProviderType) {\n case PaymentProviderType.PayPal:\n // As we have already a card payment and we would like to change it we have to reset it\n this.paymentHandler.updateOrder();\n this.resetPayPalComponent();\n break;\n case PaymentProviderType.Kushki:\n this.store$.dispatch(resetPaymentMethod());\n this.paymentWrapperComponent?.resetToken(\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n );\n break;\n case PaymentProviderType.Kushki:\n this.store$.dispatch(resetPaymentMethod());\n this.paymentWrapperComponent?.resetToken(\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n );\n break;\n case PaymentProviderType.Kushki:\n this.store$.dispatch(resetPaymentMethod());\n this.paymentWrapperComponent?.resetToken(\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n );\n break;\n case PaymentProviderType.Kushki:\n this.store$.dispatch(resetPaymentMethod());\n this.paymentWrapperComponent?.resetToken(\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n );\n break;\n case PaymentProviderType.Nexio:\n this.paymentWrapperComponent?.resetToken(\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n );\n break;\n default:\n break;\n }\n } else if (this.isUsaEnv) {\n this.paymentWrapperComponent?.resetToken(\n this.cardholderName.firstName,\n this.cardholderName.lastName,\n );\n }\n }\n\n resetVoucherPayment(): void {\n this.initSavedVoucher(false);\n this.setVoucherError(SnaCreateVoucherPaymentErrorType.None);\n\n // reset stored emails\n this.paymentFormGroup\n .get(this.FormGroup.PaymentVoucher)\n .get(this.FormControl.Email)\n .setValue('');\n this.voucherEmail = '';\n\n this.store$.dispatch(resetVoucherInfo());\n this.listenSavedVoucher();\n }\n\n onChangePaymentType(newValue: PaymentType) {\n const hasSavedPayment =\n this.isCardSaved || this.isVoucherSaved || this.isPaymentApproved || this.isSavedKushki;\n if (hasSavedPayment) {\n this.paymentTypeChangedModal.open(this.selectedPaymentType, newValue);\n } else if (!hasSavedPayment && this.selectedPaymentType === PaymentType.CreditOrDebitCard) {\n this.resetAdditionalBillingInformation();\n }\n if (!hasSavedPayment && this.selectedPaymentType === PaymentType.PayPal) {\n this.paymentHandler.updateOrder();\n }\n this.setAddressFormAvailability(newValue);\n if (!hasSavedPayment && this.isMexEnv) {\n this.kushkiFormIdType = getKushkiFormIdType(newValue);\n }\n this.selectedPaymentType = newValue;\n this.setCardPaymentInfo(this.getCardPaymentType(newValue));\n if (!hasSavedPayment) {\n this.store$.dispatch(storePaymentType({ paymentType: this.selectedPaymentType }));\n }\n }\n\n onPaymentTypeModalSelection(result: PaymentTypeChangedModalResult) {\n if (result.isPaymentTypeChangeAccepted) {\n this.store$.dispatch(resetClientToken());\n if (\n result.previousPaymentType === PaymentType.CreditOrDebitCard ||\n result.previousPaymentType === PaymentType.PayPal ||\n result.previousPaymentType === PaymentType.BankTransfer\n ) {\n if (this.isMexEnv) {\n this.kushkiFormIdType = getKushkiFormIdType(result.currentPaymentType);\n this.setCardPaymentInfo(this.getCardPaymentType(result.currentPaymentType));\n }\n this.selectedPaymentType = result.currentPaymentType;\n if (result.previousPaymentType === PaymentType.PayPal || this.isUsaEnv) {\n this.resetCardPayment();\n }\n // wait to be able to start the token reset and setting back the CreditOrDebitCard payment type\n setTimeout(() => {\n if (this.isMexEnv) {\n this.kushkiFormIdType = getKushkiFormIdType(result.currentPaymentType);\n this.setCardPaymentInfo(this.getCardPaymentType(result.currentPaymentType));\n }\n this.selectedPaymentType = result.currentPaymentType;\n });\n } else if (result.previousPaymentType === PaymentType.PayByCash) {\n this.resetVoucherPayment();\n }\n if (result.previousPaymentType === PaymentType.CreditOrDebitCard) {\n this.resetAdditionalBillingInformation();\n }\n const prevProvider = getPaymentProviderType(\n result.previousPaymentType,\n this.isNexioPaymnetEnabled,\n );\n if (prevProvider === PaymentProviderType.Kushki) {\n this.initSavedCard();\n }\n const currentProvider = getPaymentProviderType(\n result.currentPaymentType,\n this.isNexioPaymnetEnabled,\n );\n this.store$.dispatch(updatePaymentProviderType({ provider: currentProvider }));\n this.store$.dispatch(storePaymentType({ paymentType: result.currentPaymentType }));\n } else {\n this.setAddressFormAvailability(result.previousPaymentType);\n if (this.isMexEnv) {\n this.kushkiFormIdType = getKushkiFormIdType(result.previousPaymentType);\n this.setCardPaymentInfo(this.getCardPaymentType(result.previousPaymentType));\n }\n this.selectedPaymentType = result.previousPaymentType;\n }\n }\n\n onConsultantSubmitted(isSubmitted): void {\n if (isSubmitted) {\n this.goToNextStep.emit();\n } else {\n this.logger.error('Consultant submission failed');\n }\n }\n\n dismissAddressValidationModal = (): void => {\n this.store$.dispatch(resetAddressValidationModal());\n };\n\n finalizeAddress = (validatedFormGroup: FormGroup, isCorrectedAddress: boolean): void => {\n this.canAddressOverride$.pipe(take(1)).subscribe((canOverride) => {\n const address: Address = {\n ...validatedFormGroup.value,\n addressType: AddressType.Billing,\n country: environment.country,\n };\n this.prepopulateAddressForm(address);\n if (canOverride || isCorrectedAddress) {\n this.store$.dispatch(updateAddressValidationModalValidity({ isSuccess: true }));\n } else {\n this.store$.dispatch(validateAddress({ address }));\n }\n });\n };\n\n paymentApproved(isCreated: boolean): void {\n this.isPaymentApproved = isCreated;\n this.setFinlizeButtonVisibility();\n this.cdRef.detectChanges();\n }\n\n handleCardAttempt(cardAttemptData: LogCardAttemptData): void {\n this.paymentHandler.logCardAttempt(cardAttemptData.success, cardAttemptData.response);\n }\n\n handleIsPaymentProviderLoading(isLoading: boolean): void {\n if (this.isPaymentProviderFirstLoading && !isLoading) {\n this.isPaymentProviderFirstLoading = false;\n }\n this.isPaymentProviderLoading = isLoading;\n this.cdRef.detectChanges();\n }\n\n get disablePaymentInputs(): boolean {\n if (this.isUsaEnv || this.selectedPaymentType === PaymentType.CreditOrDebitCard) {\n return (\n this.paymentFormGroup.get(this.FormGroup.PaymentAddress).invalid ||\n this.paymentFormGroup.get(this.FormGroup.AdditionalBillingInformation).invalid\n );\n }\n return false;\n }\n\n protected createFormGroup(): FormGroup {\n const addressFromGroup = this.fb.group(this.paymentAddress);\n if (this.isMexEnv) {\n const addressLine3Control = new FormControl('', [Validators.required]);\n addressFromGroup.addControl(this.FormControl.AddressLine3, addressLine3Control);\n }\n\n return new FormGroup({\n [this.FormGroup.PaymentCard]: this.fb.group(this.paymentCard),\n [this.FormGroup.PaymentPrice]: this.fb.group(this.paymentPrice),\n [this.FormGroup.PaymentVoucher]: this.fb.group(this.paymentVoucher),\n [this.FormGroup.PaymentAddress]: addressFromGroup,\n [this.FormGroup.AdditionalBillingInformation]: this.fb.group(\n this.additionalBillingInformation,\n ),\n });\n }\n\n private setAddressFormAvailability(paymentType: PaymentType) {\n if (paymentType === PaymentType.CreditOrDebitCard) {\n this.paymentFormGroup.get(this.FormGroup.PaymentAddress).enable({ emitEvent: false });\n this.paymentFormGroup\n .get(this.FormGroup.AdditionalBillingInformation)\n .enable({ emitEvent: false });\n } else {\n this.paymentFormGroup.get(this.FormGroup.PaymentAddress).disable({ emitEvent: false });\n this.paymentFormGroup\n .get(this.FormGroup.AdditionalBillingInformation)\n .disable({ emitEvent: false });\n }\n this.setFinlizeButtonVisibility();\n }\n\n private resetPayPalComponent(): void {\n // need to force change detection for paypal component reinit\n this.isCardSaved = true;\n this.cdRef.detectChanges();\n setTimeout(() => {\n this.isCardSaved = false;\n this.cdRef.detectChanges();\n });\n\n // wait to reload the hidden payment component by resetting the error\n setTimeout(\n () =>\n this.paymentWrapperComponent?.resetToken(\n this.cardholderName?.firstName,\n this.cardholderName.lastName,\n ),\n );\n }\n\n private initAddressValidation(): void {\n this.addressValidation$ = this.store$\n .select(selectAddressValidationModalData)\n .pipe(select((data) => data?.payload));\n }\n\n private initSavedCard(cardInfo: SavedCardInfo = null, savedKushki: boolean = false) {\n this.cardPaymentMethodInfo = cardInfo;\n this.isCardSaved = !!cardInfo?.card || !!cardInfo?.account;\n this.isSavedKushki = savedKushki;\n this.setFinlizeButtonVisibility();\n if (this.isCardSaved) {\n this.isPaymentProviderLoading = false;\n this.isPaymentProviderFirstLoading = false;\n }\n }\n\n private initSavedVoucher(isSaved: boolean): void {\n this.isVoucherSaved = isSaved;\n this.setFinlizeButtonVisibility();\n }\n\n private setCardError(errorType: CreateCardPaymentErrorType) {\n this.cardPaymentErrorType = errorType;\n this.isCardPaymentError = errorType ? errorType !== CreateCardPaymentErrorType.None : false;\n }\n\n private setVoucherError(errorType: SnaCreateVoucherPaymentErrorType) {\n this.voucherPaymentErrorType = errorType;\n this.isVoucherPaymentError = errorType !== SnaCreateVoucherPaymentErrorType.None;\n }\n\n private setHttpErrorOnPayment(status: StatusCodes) {\n this.isHttpErrorOnPayment = !this.isCardPaymentError && status !== StatusCodes.OK;\n this.statusCode = status;\n }\n\n private getVoucherErrorType(response: CreatedVoucherPaymentMethod) {\n /* TODO: request from the BE to send errorType, because based on errorCode on FE can't find\n Currently we send back an Other error type */\n if (response?.error?.errors || (response?.status && response?.status !== StatusCodes.OK)) {\n this.setHttpErrorOnPayment(response.status);\n return SnaCreateVoucherPaymentErrorType.Other;\n }\n return SnaCreateVoucherPaymentErrorType.None;\n }\n\n private listenAddressChangeAndResetFlags() {\n this.subscriptions.add(\n this.paymentFormGroup\n .get(this.FormGroup.PaymentAddress)\n .valueChanges.pipe(take(1))\n .subscribe(() => {\n this.store$.dispatch(resetAddressValidationModal());\n this.isForbiddenState = false;\n this.addressValidationResultErrorCode = '';\n }),\n );\n }\n\n private listenPaymentType() {\n this.store$\n .select(selectSnaPaymentInfo)\n .pipe(take(1))\n .subscribe((paymentInfo) => {\n this.selectedPaymentType = paymentInfo.paymentType;\n if (this.selectedPaymentType === PaymentType.PayByCash) {\n this.isPaymentProviderLoading = false;\n }\n if (this.isMexEnv) {\n this.kushkiFormIdType = getKushkiFormIdType(this.selectedPaymentType);\n this.setCardPaymentInfo(this.getCardPaymentType(this.selectedPaymentType));\n }\n this.setAddressFormAvailability(this.selectedPaymentType);\n });\n }\n\n private listenSavedCard() {\n combineLatest([\n this.store$.select(selectSavedCard),\n this.store$.select(selectSavedAccount),\n this.store$.select(selectCardPaymentInfo),\n this.store$.select(selectSnaPaymentNonce),\n ])\n .pipe(\n filter(\n ([card, account, cardPaymentInfo, nonce]) =>\n (card !== null || account !== null || !!nonce) &&\n cardPaymentInfo !== null &&\n !!cardPaymentInfo.cardType,\n ),\n take(1),\n )\n .subscribe(([card, account, cardPaymentInfo, nonce]) => {\n const providerType = getPaymentProviderType(\n this.selectedPaymentType,\n this.isNexioPaymnetEnabled,\n );\n const isKushkiSaved: boolean =\n this.isMexEnv && !!nonce && providerType === PaymentProviderType.Kushki;\n this.initSavedCard({ card, account }, isKushkiSaved);\n this.setCardPaymentInfo(cardPaymentInfo.cardType);\n });\n\n this.canChangeSavedCard$ = this.store$.select(selectCanChangeSaveCard);\n }\n\n private listenSavedVoucher() {\n combineLatest([\n this.store$.select(selectCreatedVoucherPaymentMethodResponse),\n this.store$.select(selectVoucherPaymentInfo),\n ])\n .pipe(\n filter(\n ([createdVoucherPaymentMethod, voucherPaymentInfo]) =>\n voucherPaymentInfo !== null &&\n createdVoucherPaymentMethod !== null &&\n !!voucherPaymentInfo.email &&\n !!voucherPaymentInfo.amount,\n ),\n take(1),\n )\n .subscribe(([createdVoucherPaymentMethod, voucherPaymentInfo]) => {\n this.voucherEmail = voucherPaymentInfo.email;\n const isVoucherCreated = voucherPaymentInfo.vouchers?.length > 0;\n this.initSavedVoucher(isVoucherCreated);\n this.setVoucherError(this.getVoucherErrorType(createdVoucherPaymentMethod));\n });\n }\n\n private listenCardTypeValueChanges() {\n this.subscriptions.add(\n this.paymentFormGroup\n .get(this.FormGroup.PaymentCard)\n .get(this.FormControl.CardType)\n .valueChanges.subscribe((value: string) => {\n this.setCardPaymentInfo(value as PaymentCardType);\n }),\n );\n }\n\n private listenForPaymentReadySubmit(): void {\n this.subscriptions.add(\n this.listenSuccessfulAddressValidation().subscribe(() =>\n this.submitPayment(this.getActualAddressFromFormGroup()),\n ),\n );\n }\n\n private submitPayment(address: Address = undefined): void {\n this.store$.dispatch(stepProcessing({ stepProcessing: true }));\n if (this.paymentFormGroup.get(this.FormGroup.AdditionalBillingInformation).enabled) {\n this.updateAdditionalBillingInformation();\n }\n if (address) {\n this.store$.dispatch(addAddress({ address }));\n }\n\n if (\n this.selectedPaymentType === PaymentType.CreditOrDebitCard ||\n this.selectedPaymentType === PaymentType.PayPal ||\n this.selectedPaymentType === PaymentType.BankTransfer\n ) {\n if (this.isCardSaved) {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n this.submitConsultant();\n } else {\n this.requestCardPayment();\n }\n } else if (this.selectedPaymentType == PaymentType.PayByCash) {\n if (this.isVoucherSaved) {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n this.submitConsultant();\n } else {\n this.storeVoucherPaymentInfo();\n this.requestVoucherPayment();\n }\n }\n }\n\n private submitConsultant() {\n this.snaConsultantSubmitComponent.submit();\n }\n\n private getBillingInformationValidity(): boolean {\n const addressForm = this.paymentFormGroup.get(this.FormGroup.PaymentAddress);\n const additionalBillingInformationForm = this.paymentFormGroup.get(\n this.FormGroup.AdditionalBillingInformation,\n );\n if (addressForm.enabled && additionalBillingInformationForm.enabled) {\n return addressForm.valid && additionalBillingInformationForm.valid;\n }\n return true;\n }\n\n private listenSuccessfulAddressValidation(): Observable<[AddressVerification, boolean]> {\n return combineLatest([\n this.addressValidation$,\n this.store$\n .select(selectAddressValidationModalData)\n .pipe(select((modalData) => modalData?.isValid)),\n ]).pipe(filter(([addressValidation, isValid]) => addressValidation?.isValid || isValid));\n }\n\n private listenAddresses() {\n this.store$\n .select(selectAddresses)\n .pipe(\n take(1),\n filter((addresses) => !!addresses.length),\n )\n .subscribe((addresses) => {\n const billingAddress = addresses.find(\n (address) => address.addressType === AddressType.Billing,\n );\n if (billingAddress) {\n this.prepopulateAddressForm(billingAddress);\n } else {\n const homeAddress = addresses.find((address) => address.addressType === AddressType.Home);\n if (homeAddress) {\n this.prepopulateAddressForm(homeAddress);\n }\n }\n });\n\n this.listenAddressChangeAndResetFlags();\n }\n\n private prepopulateAddressForm(address: Address): void {\n this.paymentFormGroup.get(this.FormGroup.PaymentAddress).patchValue(address);\n this.mailingAddress = address;\n }\n\n private prepopulateStarterKitPrice(): void {\n if (this.isMexEnv) {\n this.store$\n .select(selectSelectedStarterKit)\n .pipe(take(1))\n .subscribe((starterKit) =>\n this.paymentFormGroup\n .get(`${this.FormGroup.PaymentPrice}.${this.FormControl.Price}`)\n .patchValue(starterKit.price),\n );\n }\n }\n\n private prepopulateAdditionalBillingInformation(): void {\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n select((data) => data?.startNowAppPaymentInfo?.additionalBillingInformation),\n take(1),\n filter((additionalBillingInformation) => !!additionalBillingInformation),\n )\n .subscribe((additionalBillingInformation) => {\n this.paymentFormGroup.get(this.FormGroup.AdditionalBillingInformation).patchValue({\n [this.FormControl.FirstName]: additionalBillingInformation.billingFirstName,\n [this.FormControl.LastName]: additionalBillingInformation.billingLastName,\n });\n });\n }\n\n private subscribeIsMailingAddressValueChanges() {\n this.subscriptions.add(\n this.paymentFormGroup\n .get(this.GetIsMailingAddress)\n .valueChanges.pipe(distinctUntilChanged())\n .subscribe((value) => {\n if (value) {\n this.paymentFormGroup\n .get(this.FormGroup.PaymentAddress)\n .patchValue(this.mailingAddress);\n } else {\n this.paymentFormGroup\n .get(this.FormGroup.PaymentAddress)\n .patchValue(this.defaultAddress);\n }\n }),\n );\n\n this.listenAddressChangeAndResetFlags();\n }\n\n /** Requests a card payment and handles the errors */\n private requestCardPayment() {\n this.subscriptions.add(\n this.requestCardPaymentMethod().subscribe(\n (response: CreatedSnaPaymentMethod) => {\n this.setCardError(response.errorType as CreateCardPaymentErrorType);\n if (response.status) {\n this.setHttpErrorOnPayment(response.status);\n }\n this.cardPaymentMethodInfo = { card: response.card, account: response.account };\n\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n\n if (response.errorType == CreateCardPaymentErrorType.None) {\n this.submitConsultant();\n }\n },\n () => this.store$.dispatch(stepProcessing({ stepProcessing: false })),\n ),\n );\n }\n\n /** Requests a voucher payment*/\n private requestVoucherPayment() {\n this.paymentHandler.createVoucher();\n\n this.subscriptions.add(\n this.store$\n .select(selectCreatedVoucherPaymentMethodResponse)\n .pipe(\n filter((response) => !!response),\n take(1),\n )\n .subscribe(\n (response: CreatedVoucherPaymentMethod) => {\n if (response.vouchers?.length > 0) {\n this.store$.dispatch(stepProcessing({ stepProcessing: false }));\n this.submitConsultant();\n } else {\n this.setVoucherError(this.getVoucherErrorType(response));\n }\n },\n () => this.store$.dispatch(stepProcessing({ stepProcessing: false })),\n ),\n );\n }\n\n /** Requests a payment method object via dropin third party library and creates a payment method */\n private requestCardPaymentMethod(): Observable {\n const paymentMethodObject$ = this.paymentWrapperComponent.requestPaymentMethodObject().pipe(\n tap((isSuccessful) => {\n this.paymentWrapperComponent.createPaymentMethod(isSuccessful);\n }),\n take(1),\n );\n const listenCreateMethod$ = this.store$.select(selectCreatedCardPaymentMethodResponse).pipe(\n filter((response: CreatedSnaPaymentMethod) => !!response),\n take(1),\n );\n\n return paymentMethodObject$.pipe(mergeMap(() => listenCreateMethod$));\n }\n\n private storeVoucherPaymentInfo(): void {\n const email = this.paymentFormGroup\n .get(this.FormGroup.PaymentVoucher)\n .get(this.FormControl.Email).value;\n\n const price = this.paymentFormGroup\n .get(this.FormGroup.PaymentPrice)\n .get(this.FormControl.Price).value;\n\n this.store$.dispatch(\n storeVoucherPaymentInfo({\n payload: {\n amount: price,\n email: email,\n vouchers: [],\n vouchersReceived: null,\n },\n }),\n );\n }\n\n private setCardPaymentInfo(cardPaymentType: PaymentCardType) {\n this.selectedCardPaymentType = cardPaymentType;\n this.store$.dispatch(\n storeCardPaymentInfo({\n payload: {\n cardType: cardPaymentType,\n },\n }),\n );\n }\n\n private getActualAddressFromFormGroup(): Address {\n const formAddress = this.paymentFormGroup.get(this.FormGroup.PaymentAddress).value;\n return {\n ...formAddress,\n addressType: AddressType.Billing,\n country: environment.country,\n };\n }\n\n private listenValidationResult() {\n this.subscriptions.add(\n this.store$\n .select(selectAddressValidationModalData)\n .pipe(\n select((data) => data?.validationResult?.errors),\n filter((errors) => !!errors),\n )\n .subscribe((errors) => {\n this.isForbiddenState = !!errors.find((error) => {\n if (error.errorCode === AddressValidationErrors.ForbiddenState) {\n this.addressValidationResultErrorCode = error.errorCode;\n return true;\n }\n return false;\n });\n }),\n );\n }\n\n private fetchAndSelectOrderSummary(): void {\n if (this.isUsaEnv) {\n this.store$.dispatch(fetchOrderSummary());\n this.orderSummary$ = this.store$.select(selectOrderSummary);\n }\n }\n\n private initPaymentProvider(): void {\n this.paymentProvider$ = this.store$\n .select(selectSnaPaymentInfo)\n .pipe(select((paymentInfo) => paymentInfo.provider));\n\n this.store$\n .select(selectSnaPaymentInfo)\n .pipe(take(1))\n .subscribe((paymentInfo) => {\n if (!paymentInfo.provider) {\n const provider = getPaymentProviderType(\n this.selectedPaymentType,\n this.isNexioPaymnetEnabled,\n );\n this.store$.dispatch(updatePaymentProviderType({ provider }));\n }\n });\n }\n\n private updateAdditionalBillingInformation(): void {\n const additionalBillingInformation = this.paymentFormGroup.get(\n this.FormGroup.AdditionalBillingInformation,\n );\n this.store$.dispatch(\n updateAdditionalBillingInformation({\n additionalBillingInformation: {\n billingFirstName: additionalBillingInformation.get(this.FormControl.FirstName).value,\n billingLastName: additionalBillingInformation.get(this.FormControl.LastName).value,\n },\n }),\n );\n }\n\n private resetAdditionalBillingInformation(): void {\n this.store$.dispatch(resetAdditionalBillingInformation());\n this.paymentFormGroup.get(this.FormGroup.AdditionalBillingInformation).patchValue({\n [this.FormControl.FirstName]: '',\n [this.FormControl.LastName]: '',\n });\n }\n\n private listenCreditCardBillingAddressValidity(): void {\n const billingAddressForm = this.paymentFormGroup.get(this.FormGroup.PaymentAddress);\n const additionalBillingInfoForm = this.paymentFormGroup.get(\n this.FormGroup.AdditionalBillingInformation,\n );\n if (this.isUsaEnv || this.isNexioPaymnetEnabled) {\n this.subscriptions.add(\n combineLatest([\n fromEvent(this.firstNameInput.input.nativeElement, 'blur').pipe(startWith({})),\n fromEvent(this.lastNameInput.input.nativeElement, 'blur').pipe(startWith({})),\n billingAddressForm.statusChanges.pipe(startWith({})),\n ])\n .pipe(\n filter(() => billingAddressForm.valid && additionalBillingInfoForm.valid),\n take(1),\n )\n .subscribe(() => {\n const formValue = additionalBillingInfoForm.value;\n this.cardholderName = {\n firstName: formValue.firstName,\n lastName: formValue.lastName,\n };\n if (this.selectedPaymentType === PaymentType.CreditOrDebitCard) {\n this.paymentWrapperComponent.resetToken(\n this.cardholderName?.firstName,\n this.cardholderName?.lastName,\n );\n }\n }),\n );\n }\n\n this.listenFormValidityForUpdateFinalizeButton(billingAddressForm as FormGroup);\n this.listenFormValidityForUpdateFinalizeButton(additionalBillingInfoForm as FormGroup);\n }\n\n private getCardPaymentType(paymentType: PaymentType): PaymentCardType {\n if (paymentType === PaymentType.BankTransfer) {\n return PaymentCardType.BankTransfer;\n }\n return PaymentCardType.CreditCard;\n }\n\n private setFinlizeButtonVisibility(): void {\n const addressForm = this.paymentFormGroup.get(this.FormGroup.PaymentAddress);\n const additionalBillingInfoForm = this.paymentFormGroup.get(\n this.FormGroup.AdditionalBillingInformation,\n );\n const isAddressFormValid =\n (addressForm.valid || addressForm.disabled) &&\n (additionalBillingInfoForm.valid || additionalBillingInfoForm.disabled);\n const isVoucherInputValid =\n this.selectedPaymentType === PaymentType.PayByCash &&\n this.paymentFormGroup.get(this.FormGroup.PaymentVoucher).valid;\n const isPaymentValid =\n this.isPaymentApproved ||\n this.isPaymentMethodRequestable ||\n this.isCardSaved ||\n this.isSavedKushki ||\n this.isVoucherSaved ||\n isVoucherInputValid;\n this.store$.dispatch(\n setIsFinalizeButtonEnable({ isFinalizeButtonEnable: isAddressFormValid && isPaymentValid }),\n );\n }\n\n private listenFormValidityForUpdateFinalizeButton(form: FormGroup): void {\n this.subscriptions.add(\n form.statusChanges\n .pipe(distinctUntilChanged())\n .subscribe(() => this.setFinlizeButtonVisibility()),\n );\n }\n}\n","
    \n
    \n \n Back\n \n
    \n
    \n \n {{ isFinalStep ? Finalize : Next }}\n
    \n Loading...\n
    \n \n
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-back-forth-buttons',\n templateUrl: './back-forth-buttons.component.html',\n styleUrls: ['./back-forth-buttons.component.scss'],\n})\nexport class BackForthButtonsComponent {\n @Output() navigateBack: EventEmitter = new EventEmitter();\n @Output() navigateForward: EventEmitter = new EventEmitter();\n @Input() nextProcessing: boolean;\n @Input() isFinalStep: boolean;\n @Input() isBackButtonDisabled: boolean;\n @Input() isNextButtonDisabled: boolean;\n\n readonly Next: string = $localize`Next`;\n readonly Finalize: string = $localize`Finalize`;\n\n constructor() {}\n\n previousStepClick(): void {\n if (!this.nextProcessing) {\n this.navigateBack.emit();\n }\n }\n\n nextStepClick(): void {\n if (!this.nextProcessing) {\n this.navigateForward.emit();\n }\n }\n}\n","\n
    \n
    \n
    \n \n
      \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    \n
    \n
    \n
    \n \n
    \n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { AppState } from '@core/store';\nimport {\n selectConsultantDataCanNotBeModified,\n selectIsFinalizeButtonEnabled,\n selectPaymentStepSkipped,\n selectStepProcessing,\n} from '@core/store/start-now-app';\nimport { Store } from '@ngrx/store';\nimport { NavigationStep } from '@shared/components/stepper-base/navigation-step.model';\nimport { StepperBaseComponent } from '@shared/components/stepper-base/stepper-base.component';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { StartNowAppStep } from '../../enums/start-now-app-step.enum';\nimport { StartNowStepBaseComponent } from '../start-now-app-step-base/start-now-step-base.component';\n@Component({\n selector: 'app-start-now-app-stepper',\n templateUrl: './start-now-app-stepper.component.html',\n styleUrls: ['./start-now-app-stepper.component.scss'],\n})\nexport class StartNowStepperComponent\n extends StepperBaseComponent\n implements OnInit, OnDestroy, OnChanges\n{\n @Input() initStep: number;\n @Input() steps: NavigationStep[];\n @Output() moveBackToInitialNavigationPosition: EventEmitter = new EventEmitter();\n @Output() navigateToStep: EventEmitter = new EventEmitter();\n\n /** Based on the nav implementation just one of the nav item is loaded in the DOM, so just one\n * of the step referenced item is loaded */\n @ViewChild('step') currentStep: StartNowStepBaseComponent;\n\n stepProcessing$: Observable;\n consultantDataCanNotBeModified$: Observable;\n paymentStepSkipped$: Observable;\n skipPayment: boolean = false;\n isFinalStep: boolean;\n isFinalizeButtonEnabled$: Observable;\n\n constructor(private store$: Store) {\n super();\n }\n\n ngOnInit(): void {\n this.stepProcessing$ = this.store$.select(selectStepProcessing).pipe(distinctUntilChanged());\n this.consultantDataCanNotBeModified$ = this.store$.select(selectConsultantDataCanNotBeModified);\n this.initialStepId = this.initStep;\n this.paymentStepSkipped$ = this.store$\n .select(selectPaymentStepSkipped)\n .pipe(map((skipPayment) => skipPayment));\n this.subscriptions.add(\n this.paymentStepSkipped$.subscribe((skipPayment) => {\n this.skipPayment = skipPayment;\n if (this.skipPayment && this.isFinalStep == true) {\n this.isFinalStep = false;\n }\n }),\n );\n this.isFinalizeButtonEnabled$ = this.store$.select(selectIsFinalizeButtonEnabled);\n super.ngOnInit();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.steps?.currentValue) {\n this.initSteps(this.steps);\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n previousStepClick(): void {\n const previousStep: number = this.activeStepId;\n this.activeStepId = this.getPreviousStepId(this.activeStepId);\n\n if (this.skipPayment && this.isFinalStep == true) {\n this.isFinalStep = false;\n }\n\n if (previousStep == this.activeStepId) {\n this.moveBackToInitialNavigationPosition.emit();\n } else {\n this.stepChanged.emit(-1);\n }\n }\n\n nextStepClick(): void {\n this.currentStep.submitStep();\n }\n\n goToNextStep() {\n this.activeStepId = this.getNextStepId(this.activeStepId);\n if (\n this.skipPayment &&\n this.activeStepId + StartNowAppStep.ConfirmConsultant == StartNowAppStep.ConsultantAgreement\n ) {\n this.isFinalStep = true;\n } else {\n this.isFinalStep = false;\n }\n\n this.stepChanged.emit(1);\n }\n\n goToStep(step: number) {\n if (step <= StartNowAppStep.ConfirmConsultant) {\n this.moveBackToInitialNavigationPosition.emit();\n } else {\n this.steps.forEach((navigationStep) => {\n if (navigationStep.id === step) {\n this.navigateTo(navigationStep.orderNumber);\n }\n });\n }\n if (this.skipPayment && this.isFinalStep == true && step != StartNowAppStep.DoubleCheck) {\n this.isFinalStep = false;\n }\n this.navigateToStep.emit(step);\n }\n\n showConsultantList() {\n this.moveBackToInitialNavigationPosition.emit();\n this.navigateToStep.emit(StartNowAppStep.ConfirmConsultant);\n }\n}\n","
    \n \n
    \n Card Type\n {{ cardTypeText[paymentInfo.cardPaymentInfo.cardType] }}\n
    \n
    \n Card Number\n XXXX XXXX XXXX {{ paymentInfo.externalPaymentInfo.lastFour }}\n
    \n
    \n Cardholder Name\n {{ paymentInfo.externalPaymentInfo.cardholderName }}\n
    \n
    \n Expiration Date\n \n {{ paymentInfo.externalPaymentInfo.expirationMonth }}-{{\n paymentInfo.externalPaymentInfo.expirationYear\n }}\n \n
    \n
    \n\n
    \n
    \n Payment Type\n Voucher\n
    \n
    \n Email\n {{ paymentInfo.voucherPaymentInfo.email }}\n
    \n
    \n\n
    \n
    \n Payment Type\n Bank tranfer\n
    \n
    \n Email\n {{ paymentInfo.createdCardPaymentMethod.email }}\n
    \n
    \n Clabe\n {{ paymentInfo.createdCardPaymentMethod.clabe }}\n
    \n
    \n\n","import { Component, Input } from '@angular/core';\nimport { PaymentCardType, PaymentType } from '@core/enums/payment-type.enum';\nimport { StartNowAppPaymentInfo } from '@core/store/start-now-app/start-now-app-state-models';\nimport { environment } from '@env';\n\n@Component({\n selector: 'app-payment-card',\n templateUrl: './payment-card.component.html',\n styleUrls: ['./payment-card.component.scss'],\n})\nexport class PaymentCardComponent {\n @Input() paymentInfo: StartNowAppPaymentInfo;\n @Input() skipPayment: boolean;\n\n public readonly CardType = PaymentCardType;\n public readonly PaymentType = PaymentType;\n public readonly storeLocatorUrl = environment.storeLocatorUrl;\n\n readonly cardTypeText = {\n [PaymentCardType.DebitCard]: $localize`Debit card`,\n [PaymentCardType.CreditCard]: $localize`Credit card`,\n };\n\n constructor() {}\n}\n","
    \n
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n \n \n
    \n\n \n \n \n \n
    \n\n \n \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n \n
    \n \n \n \n \n\n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { AddressType } from '@core/enums/address-type.enum';\nimport { PaymentHandlerType } from '@core/enums/payment-handler-type.enum';\nimport { AppState } from '@core/store';\nimport { selectConsultantState } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport {\n selectConfirmRecruiter,\n selectIsZeroDepositAvailable,\n selectOrderSummary,\n selectPaymentStepSkipped,\n selectSnaCountryStates,\n selectStartNowAppData,\n} from '@core/store/start-now-app';\nimport {\n Address,\n CountryState,\n OrderSummary,\n StartNowAppData,\n UserInfo,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport { Store } from '@ngrx/store';\nimport { PaymentHandlerBase } from '@payment/payment-handler/payment-handler-base.model';\nimport { PaymentHandlerFactory } from '@payment/payment-handler/payment-handler-factory';\nimport { BaseComponent } from '@shared/components/base-component/base-component';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { ssnMasking } from '@shared/utils/ssn-masking-utils';\nimport { StartNowAppStep } from 'app/modules/start-now-app/enums/start-now-app-step.enum';\nimport { Observable } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-congratulation-summary',\n templateUrl: './congratulation-summary.component.html',\n styleUrls: ['./congratulation-summary.component.scss'],\n})\nexport class CongratulationSummaryComponent extends BaseComponent implements OnInit, OnDestroy {\n @Output() goToStep: EventEmitter = new EventEmitter();\n\n readonly AddressType = AddressType;\n\n ssnMasking = ssnMasking;\n public isMexEnv = isMexEnv;\n\n StartNowAppStep = StartNowAppStep;\n orderSummary$: Observable;\n stepProcessing$: Observable;\n consultantDataCanNotBeModified$: Observable;\n startNowAppData: StartNowAppData;\n confirmRecruiter: boolean = false;\n isSubmitted: boolean = false;\n replicatedSiteConsultant: Consultant;\n paymentHandler: PaymentHandlerBase;\n usaStarterKitName: string = $localize`Share + Earn`;\n countryStates$: Observable;\n isZeroDepositAvailable$: Observable;\n paymentStepSkipped$: Observable;\n addressTitles = {\n [AddressType.Home]: $localize`Address`,\n [AddressType.Shipping]: $localize`Shipping`,\n [AddressType.Billing]: $localize`Billing`,\n };\n\n constructor(\n private store$: Store,\n private paymentHandlerFactory: PaymentHandlerFactory,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.initObservables();\n this.paymentHandler = this.paymentHandlerFactory.getPaymentHandler(\n PaymentHandlerType.StartNowApp,\n );\n this.isZeroDepositAvailable$ = this.store$.select(selectIsZeroDepositAvailable);\n this.paymentStepSkipped$ = this.store$.select(selectPaymentStepSkipped);\n this.requestConfirmRecruiter();\n this.requestStartNowAppData();\n this.listenReplicatedSiteConsultant();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n fullName(userInfo: UserInfo): string {\n let fullName: string;\n if (userInfo.middleName === '') {\n fullName = userInfo.firstName + ' ' + userInfo.lastName;\n } else {\n fullName = userInfo.firstName + ' ' + userInfo.middleName + ' ' + userInfo.lastName;\n }\n return fullName;\n }\n\n selectAddress(addresses: Address[], addressType: AddressType): Address {\n let selectedAddress: Address;\n addresses.forEach((address) => {\n if (address.addressType === addressType) {\n selectedAddress = address;\n }\n });\n return selectedAddress;\n }\n\n private requestConfirmRecruiter() {\n this.subscriptions.add(\n this.store$\n .select(selectConfirmRecruiter)\n .pipe(take(1))\n .subscribe((confirmRecruiter) => (this.confirmRecruiter = confirmRecruiter)),\n );\n }\n\n private requestStartNowAppData() {\n this.subscriptions.add(\n this.store$\n .select(selectStartNowAppData)\n .pipe(\n filter((startNowAppData) => !!startNowAppData),\n take(1),\n )\n .subscribe((startNowAppData) => {\n this.startNowAppData = startNowAppData;\n }),\n );\n }\n\n private listenReplicatedSiteConsultant() {\n this.subscriptions.add(\n this.store$\n .select(selectConsultantState)\n .pipe(\n filter((state) => state.isCurrentConsultantFetched),\n take(1),\n )\n .subscribe((state) => {\n this.replicatedSiteConsultant = state.currentConsultant;\n }),\n );\n }\n\n private initObservables(): void {\n this.orderSummary$ = this.store$.select(selectOrderSummary);\n this.countryStates$ = this.store$.select(selectSnaCountryStates);\n }\n}\n","
    \n
    \n \n

    CONGRATULATIONS {{ userInfo.firstName }}!

    \n
    \n\n \n \n

    You are now an independent Princess House Consultant

    \n
    \n \n

    You will be an independent Princess House Consultant soon.

    \n
    \n
    \n\n \n \n
    \n
    \n Your Consultant ID Number is\n {{ submittedConsultantInfo.consultantBeeNumber }}\n
    \n\n
    \n This number is also your username to login to our\n Consultant’s Corner website.\n
    \n
    \n
    \n\n \n
    \n
    \n Your Cash Voucher\n \n Download \n \n \n
    \n Loading...\n
    \n
    \n
    \n
    \n\n \n
    \n Your registration will be ready after you paid the voucher in any stores. The voucher\n expires in {{ VoucherDeadline }} days.\n
    \n\n
    \n \n
    \n
    \n\n \n
    \n \n
    \n

    \n This is the explanation of the new applications about Bank transfer payment and Consultant\n registration\n

    \n

    \n Your registratrion will be ready after you complete your bank trasfer using your CLABE.\n

    \n
    \n\n \n
    \n \n
    \n \n \n

    \n Our team will be in touch with you\n in 72 hours using your previously entered contact information.\n

    \n
    \n
    \n \n\n \n
    \n Your Recruiter is\n \n {{ consultant.fullName }}\n \n
    \n \n\n \n

    \n You will also be able to login to\n Consultant’s Corner using your email address or mobile\n phone number.\n

    \n\n \n LOGIN TO CONSULTANT’S CORNER\n \n
    \n\n

    Your Application Details

    \n \n
    \n\n \n
    \n Your Consultant ID Number is\n Not issued yet\n
    \n\n \n \n \n
    \n This is is the explanation of the new applications about Voucher payment and Consultant\n registration\n
    \n
    \n \n \n \n
    \n Our team will be in touch with you\n in 72 hours using your previously entered contact information.\n
    \n
    \n
    \n
    \n
    \n
    \n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Component, Inject, Injector, LOCALE_ID, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MobileMedia } from '@core/constants/screen-sizes';\nimport { CongratulationType } from '@core/enums/congratulation-type.enum';\nimport { AppState } from '@core/store';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport {\n selectCongratulationStepMode,\n selectStartNowAppData,\n selectSubmittedConsultantInfo,\n selectVoucherBarcodeUrls,\n} from '@core/store/start-now-app';\nimport {\n SubmittedConsultantInfo,\n UserInfo,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport { fetchVoucherBarCodeUrls } from '@core/store/start-now-app/start-now-app.actions';\nimport { environment } from '@env';\nimport { Store, select } from '@ngrx/store';\nimport { isMexEnv } from '@shared/utils/environment-utils';\nimport { Observable } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\nimport { StartNowStepBaseComponent } from '../../start-now-app-step-base/start-now-step-base.component';\n\n@Component({\n selector: 'app-congratulation-step',\n templateUrl: './congratulation.component.html',\n styleUrls: ['./congratulation.component.scss'],\n})\nexport class CongratulationComponent extends StartNowStepBaseComponent implements OnInit {\n userInfo$: Observable;\n applicationRegistrationId$: Observable;\n submittedConsultantInfo$: Observable;\n selectedConsultant$: Observable;\n voucherBarcodeUrls$: Observable;\n public congratulationType$: Observable;\n public readonly CongratulationTypes = CongratulationType;\n public readonly VoucherDeadline: number = 3;\n\n isMobile$: Observable;\n\n constructor(\n private store$: Store,\n private breakpointObserver: BreakpointObserver,\n injector: Injector,\n @Inject(LOCALE_ID) private localeId: string,\n ) {\n super(injector, 'SNA Step - 9 Congratulation');\n }\n\n ngOnInit(): void {\n this.initObservables();\n\n this.isMobile$ = this.breakpointObserver.observe(MobileMedia).pipe(select((o) => o.matches));\n }\n\n get consultantCornerUrl(): string {\n return `${environment.consultantCorner2Uri}/${this.localeId}/`;\n }\n\n submitStep(): void {\n //there is no next button, so keep empty\n }\n\n onLoginToConsultantsCornerClick() {\n window.location.href = this.consultantCornerUrl;\n }\n\n openVoucherUrls(urls: string[]): void {\n urls.forEach((url) => window.open(url));\n }\n\n protected createFormGroup(): FormGroup {\n throw new Error('Method not implemented.');\n }\n\n private initObservables(): void {\n this.userInfo$ = this.store$\n .select(selectStartNowAppData)\n .pipe(map((startNowApp) => startNowApp.userInfo));\n this.submittedConsultantInfo$ = this.store$.select(selectSubmittedConsultantInfo);\n this.congratulationType$ = this.store$.select(selectCongratulationStepMode);\n this.selectedConsultant$ = this.store$\n .select(selectStartNowAppData)\n .pipe(select((startNowApp) => startNowApp.selectedConsultant));\n this.applicationRegistrationId$ = this.store$\n .select(selectStartNowAppData)\n .pipe(select((startNowApp) => startNowApp.applicationRegistrationId));\n if (isMexEnv) {\n this.applicationRegistrationId$\n .pipe(\n filter((applicationRegistrationId) => !!applicationRegistrationId),\n take(1),\n )\n .subscribe((applicationRegistrationId) =>\n this.store$.dispatch(fetchVoucherBarCodeUrls({ applicationRegistrationId })),\n );\n this.voucherBarcodeUrls$ = this.store$.select(selectVoucherBarcodeUrls);\n }\n }\n}\n","export enum StartNowAppOfflineMessages {\n DefaultMessage = 'DefaultMessage',\n AfterCardPayment = 'AfterCardPayment',\n}\n","/* eslint-disable max-len */\nimport { StartNowAppOfflineMessages } from 'app/modules/start-now-app/enums/start-now-app-offline-messages.enum';\n\nexport const OfflineMessages = {\n [StartNowAppOfflineMessages.DefaultMessage]: $localize`You have lost the internet connection. You can continue your application after your connection is restored!`,\n [StartNowAppOfflineMessages.AfterCardPayment]: $localize`You have lost the internet connection. You can continue your application after your connection is restored! If you cannot continue and you added a card payment please contact Princess House customer service:`,\n};\n","\n
    \n
    \n
    \n \n
    \n {{ message }}\n
    \n
    \n {{ phoneNumber }}\n Your application reference number is\n \n {{ applicationRegistrationId }}\n \n
    \n
    \n
    \n
    \n
    \n","import { Component, Input, ViewChild } from '@angular/core';\nimport { OfflineMessages } from '@core/constants/start-now-app-offline-messages';\nimport { Country } from '@core/enums/country.enum';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { ModalConfig } from '@core/models/modal-config.model';\nimport { StartNowAppPaymentInfo } from '@core/store/start-now-app/start-now-app-state-models';\nimport { ModalComponent } from '@shared/components/modal/modal.component';\n\n@Component({\n selector: 'app-start-now-app-offline-modal',\n templateUrl: './start-now-app-offline-modal.component.html',\n styleUrls: ['./start-now-app-offline-modal.component.scss'],\n})\nexport class StartNowAppOfflineModalComponent {\n @Input() applicationRegistrationId: number;\n @Input() paymentInfo: StartNowAppPaymentInfo;\n @Input() country: String;\n\n message: string;\n offlineMessages = OfflineMessages;\n phoneNumber: string = '+1 609 123 4567';\n\n offlineModalConfig: ModalConfig = {\n hideCloseButton: true,\n hideDismissButton: true,\n hideHeader: true,\n ngbModalOptions: {\n size: 'md',\n modalDialogClass: 'modal',\n backdrop: 'static',\n keyboard: false,\n },\n };\n\n @ViewChild('offlineModal') private modalComponent: ModalComponent;\n\n constructor() {}\n\n open(): void {\n if (\n this.country == Country.Mexico &&\n this.paymentInfo.externalPaymentInfo != null &&\n this.paymentInfo.paymentType == PaymentType.CreditOrDebitCard &&\n this.paymentInfo.createdCardPaymentMethod !== null\n ) {\n this.message = OfflineMessages.AfterCardPayment;\n } else {\n this.message = OfflineMessages.DefaultMessage;\n }\n this.modalComponent.open();\n }\n\n close(): void {\n this.modalComponent.close();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppState } from '@core/store';\nimport { selectConsultantState } from '@core/store/consultant';\nimport { selectConsultantFinderStep } from '@core/store/start-now-app';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-sna-query-param-checker',\n template: '',\n})\nexport class SnaQueryParamCheckerComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription = new Subscription();\n\n constructor(private router: Router, private store$: Store) {}\n\n ngOnInit(): void {\n this.snaQueryParamCheckerEcNotFoundConsultant();\n this.snaQueryParamCheckerSnaNotFoundConsultant();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private snaQueryParamCheckerEcNotFoundConsultant(): void {\n this.subscriptions.add(\n this.store$\n .select(selectConsultantState)\n .pipe(\n filter((consultantState) => consultantState?.isCurrentConsultantFetched),\n filter((consultantState) => !consultantState.currentConsultant),\n )\n .subscribe(() => {\n this.removeQueryParam();\n }),\n );\n }\n\n private snaQueryParamCheckerSnaNotFoundConsultant(): void {\n this.subscriptions.add(\n this.store$\n .select(selectConsultantFinderStep)\n .pipe(\n filter((finder) => finder?.isConsultantsFetched),\n filter((finder) => !finder.findIsSuccess),\n )\n .subscribe(() => {\n this.removeQueryParam();\n }),\n );\n }\n\n private removeQueryParam(): void {\n this.router.navigate([], {\n queryParams: { cid: null, lnid: null },\n queryParamsHandling: 'merge',\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MaintenanceErrorMessage } from '@core/constants/sna-error-messages';\n\n@Component({\n selector: 'app-sna-disabled-page',\n templateUrl: './sna-disabled-page.component.html',\n styleUrls: ['./sna-disabled-page.component.scss'],\n})\nexport class SnaDisabledPageComponent {\n @Input() isProwessDown: boolean = false;\n\n readonly errorMessages = {\n prowessDown: MaintenanceErrorMessage,\n manuallyDisabled: $localize`The Start Now App registration is currently turned\n off by PrincessHouse!`,\n };\n\n constructor() {}\n}\n","
    \n
    \n
    \n \"info\"\n
    \n\n
    \n {{ isProwessDown ? errorMessages.prowessDown : errorMessages.manuallyDisabled }}\n
    \n\n \n
    \n
    \n","
    \n \n
    \n\n\n \n \n \n \n\n \n \n \n\n \n\n \n\n \n \n\n \n\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { StartNowAppLayoutComponent } from '@base/components/layout/start-now-app-layout/start-now-app-layout.component';\nimport { StartNowAppRoutes } from '@core/constants/routes.const';\nimport { StartNowAppComponent } from './components/start-now-app.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: StartNowAppLayoutComponent,\n children: [\n {\n path: StartNowAppRoutes.StartNowApp,\n component: StartNowAppComponent,\n data: {\n title: $localize`New Consultant Application`,\n description: $localize`New Consultant Application - Description`,\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class StartNowAppRoutingModule {}\n","import { Component, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Country } from '@core/enums/country.enum';\nimport { PaymentType } from '@core/enums/payment-type.enum';\nimport { RouterQueryParams } from '@core/enums/router-query-param.enum';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AppcuesService } from '@core/services/appcues.service';\nimport { AppState } from '@core/store';\nimport { selectConsultantState } from '@core/store/consultant';\nimport { Consultant } from '@core/store/consultant/consultant-state-models';\nimport {\n selectConsultantFinderStep,\n selectConsultantStepsSkipped,\n selectRegistrationCodeStepSkipped,\n selectSnaPaymentInfo,\n selectStartNowAppData,\n} from '@core/store/start-now-app';\nimport {\n StartNowAppData,\n StartNowAppPaymentInfo,\n} from '@core/store/start-now-app/start-now-app-state-models';\nimport {\n fetchDepositPaymentValue,\n fetchIsReducedDepositAvailable,\n fetchIsZeroDepositAvailable,\n fetchReducedDepositPaymentValue,\n storePaymentType,\n updateRegistrationCode,\n} from '@core/store/start-now-app/start-now-app.actions';\nimport { environment } from '@env';\nimport { Store, select } from '@ngrx/store';\nimport { NavigationStep } from '@shared/components/stepper-base/navigation-step.model';\nimport { isMexEnv, isUsaEnv } from '@shared/utils/environment-utils';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\nimport { filter, take, tap } from 'rxjs/operators';\nimport { NetworkStatus, StartNowAppStep } from '../enums/start-now-app-step.enum';\nimport { StartNowAppOfflineModalComponent } from './start-now-app-offline-modal/start-now-app-offline-modal.component';\n\n@Component({\n selector: 'app-start-now-app',\n templateUrl: './start-now-app.component.html',\n styleUrls: ['./start-now-app.component.scss'],\n})\nexport class StartNowAppComponent implements OnInit, OnDestroy {\n readonly NavigationSteps: NavigationStep[] = [\n // Consultant Finder Wrapper\n { id: StartNowAppStep.DoYouKnowConsultant },\n { id: StartNowAppStep.SelectConsultant },\n { id: StartNowAppStep.ConfirmConsultant },\n { id: StartNowAppStep.RegistrationCode },\n // SNA steps with progress bar\n { id: StartNowAppStep.AboutYou },\n { id: StartNowAppStep.ConnectWithYou },\n { id: StartNowAppStep.WaitBusinessTools },\n { id: StartNowAppStep.SelectStarterKit },\n { id: StartNowAppStep.Payment },\n { id: StartNowAppStep.PasswordBackofficePortal },\n { id: StartNowAppStep.ConsultantAgreement },\n { id: StartNowAppStep.DoubleCheck },\n { id: StartNowAppStep.Congratulation },\n ];\n\n consultantFinderSteps: NavigationStep[] = [];\n\n startNowAppData$: Observable;\n isStartNowAppDisabled: boolean;\n isProwessDown: boolean;\n globalStep: number = StartNowAppStep.DoYouKnowConsultant;\n consultantPhasePassed: boolean = false;\n isFinalized: boolean = false;\n isCurrentConsultantFetchLoading: boolean = true;\n replicatedSiteConsultant: Consultant = null;\n paymentInfo$: Observable;\n country: string = environment.country;\n applicationRegistrationId$: Observable;\n subscriptions: Subscription = new Subscription();\n paymentStepSkipped$: Observable;\n skipPayment: boolean = false;\n @ViewChild('offlineModal') private offlineModal: StartNowAppOfflineModalComponent;\n\n constructor(\n private store$: Store,\n private route: ActivatedRoute,\n private appcuesService: AppcuesService,\n private appInitService: AppInitService,\n ) {}\n\n /** Listen tab closing and show a confirmation pop-up */\n @HostListener('window:beforeunload')\n leavingPageWithoutConfirm(): boolean {\n // in case of congratulation the data is saved we can let the user to close the tab\n return this.isFinalized;\n }\n\n @HostListener('window:offline', ['$event'])\n offlineEvent(event: Event): void {\n if (event.type === NetworkStatus.Offline) {\n this.offlineModal.open();\n }\n }\n\n @HostListener('window:online', ['$event'])\n onlineEvent(event: Event): void {\n if (event.type === NetworkStatus.Online) {\n this.offlineModal.close();\n }\n }\n\n ngOnInit(): void {\n this.listenReplicatedSiteConsultant();\n this.listenFetchedConsultantList();\n this.initializeStartNowAppDisabled();\n this.initializeDefaultPaymentType();\n\n if (isUsaEnv) {\n this.store$.dispatch(fetchDepositPaymentValue());\n this.store$.dispatch(fetchReducedDepositPaymentValue());\n this.store$.dispatch(fetchIsReducedDepositAvailable());\n this.store$.dispatch(fetchIsZeroDepositAvailable());\n }\n this.paymentInfo$ = this.store$\n .select(selectSnaPaymentInfo)\n .pipe(filter((paymentInfo) => !!paymentInfo));\n this.applicationRegistrationId$ = this.store$.select(selectStartNowAppData).pipe(\n select((startNowAppData) => startNowAppData.applicationRegistrationId),\n filter((applicationRegistrationId) => !!applicationRegistrationId),\n );\n this.route.queryParams.pipe(take(1)).subscribe((params) => {\n if (!!params?.cid) {\n this.store$.dispatch(updateRegistrationCode({ registrationCode: params.cid }));\n } else if (!!params?.lnid) {\n this.store$.dispatch(updateRegistrationCode({ registrationCode: params.lnid }));\n }\n });\n\n this.subscriptions.add(\n this.appcuesService\n .isAppcuesLoaded()\n .pipe(\n filter((isLoaded) => !!isLoaded),\n take(1),\n )\n .subscribe(() => this.appcuesService.setAppcuesIdentityForAnonymousUser()),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n stepChanged(value: number) {\n this.globalStep = this.globalStep + value;\n\n if (this.globalStep == StartNowAppStep.Congratulation) {\n this.isFinalized = true;\n }\n }\n\n goToStep(value: number) {\n this.globalStep = value;\n }\n\n onConsultantPhaseFinished(): void {\n this.consultantPhasePassed = true;\n }\n\n onMoveBackToConsultantPhase(): void {\n this.consultantPhasePassed = false;\n combineLatest([\n this.store$.select(selectConsultantStepsSkipped),\n this.store$.select(selectRegistrationCodeStepSkipped),\n this.store$\n .select(selectStartNowAppData)\n .pipe(select((data) => data.selectedConsultant?.isPrivateRecruitment)),\n ])\n .pipe(take(1))\n .subscribe(([consultantStepsSkipped, registrationCodeSkipped, consultantProfileLocked]) => {\n if (consultantStepsSkipped && isMexEnv) {\n this.goToStep(StartNowAppStep.DoYouKnowConsultant);\n } else if (\n window.location.href.includes(RouterQueryParams.cid) ||\n window.location.href.includes(RouterQueryParams.lnid) ||\n registrationCodeSkipped ||\n !consultantProfileLocked\n ) {\n this.goToStep(StartNowAppStep.ConfirmConsultant);\n } else {\n this.stepChanged(-1);\n }\n });\n }\n\n private listenReplicatedSiteConsultant() {\n this.subscriptions.add(\n this.store$\n .select(selectConsultantState)\n .pipe(\n filter((state) => state.isCurrentConsultantFetched),\n tap((state) => (this.replicatedSiteConsultant = state.currentConsultant)),\n filter((state) => !state.currentConsultant),\n take(1),\n )\n .subscribe(() => {\n this.isCurrentConsultantFetchLoading = false;\n this.globalStep = StartNowAppStep.DoYouKnowConsultant;\n this.consultantFinderSteps = this.NavigationSteps.slice(0, 4);\n }),\n );\n }\n\n private listenFetchedConsultantList(): void {\n this.subscriptions.add(\n this.store$\n .select(selectConsultantFinderStep)\n .pipe(\n filter((finder) => finder.isConsultantsFetched),\n take(1),\n )\n .subscribe((finder) => {\n if (finder.findIsSuccess && !!this.replicatedSiteConsultant) {\n this.globalStep = StartNowAppStep.ConfirmConsultant;\n this.consultantFinderSteps = this.NavigationSteps.slice(2, 4);\n } else {\n this.consultantFinderSteps = this.NavigationSteps.slice(0, 4);\n }\n this.isCurrentConsultantFetchLoading = false;\n }),\n );\n }\n\n private initializeStartNowAppDisabled(): void {\n this.isStartNowAppDisabled = this.appInitService.isStartNowAppDisabled();\n this.isProwessDown = this.appInitService.Settings.sna.isProwessDown;\n }\n\n private initializeDefaultPaymentType(): void {\n this.store$\n .select(selectSnaPaymentInfo)\n .pipe(\n take(1),\n filter((paymentInfo) => !paymentInfo?.paymentType),\n )\n .subscribe(() =>\n this.store$.dispatch(storePaymentType({ paymentType: PaymentType.CreditOrDebitCard })),\n );\n }\n\n private buildCountryFilter(country: Country): Country {\n // Do not allow for USA consultant to join to a MEX recruiter\n if (country == Country.Usa) return Country.Usa;\n\n // MEX can join to a USA consultant. If the filter is not defined it will search in MEX and also in USA\n if (country == Country.Mexico) return undefined;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PaymentModule } from '@payment/payment.module';\nimport { SafeResourceUrlPipe } from '@shared/pipes/safe-url.pipe';\nimport { SharedModule } from '@shared/shared.module';\nimport { SnaAddressErrorMessagesComponent } from './components/sna-address-validation-modal/sna-address-validation-error-messages/sna-address-error-messages.component';\nimport { SnaAddressValidationModalComponent } from './components/sna-address-validation-modal/sna-address-validation-modal.component';\nimport { SnaConsultantSubmitComponent } from './components/sna-consultant-submit/sna-consultant-submit.component';\nimport { SnaDisabledPageComponent } from './components/sna-disabled-page/sna-disabled-page.component';\nimport { SnaHttpStatusErrorsComponent } from './components/sna-http-status-errors/sna-http-status-errors.component';\nimport { AddressCardComponent } from './components/sna-info-cards/address-card/address-card.component';\nimport { ContactInformationCardComponent } from './components/sna-info-cards/contact-information-card/contact-information-card.component';\nimport { LessDepositInformationComponent } from './components/sna-info-cards/less-deposit-information/less-deposit-information.component';\nimport { PasswordCardComponent } from './components/sna-info-cards/password-card/password-card.component';\nimport { PaymentCardComponent } from './components/sna-info-cards/payment-card/payment-card.component';\nimport { PersonalInfoCardComponent } from './components/sna-info-cards/personal-info-card/personal-info-card.component';\nimport { RecruiterCardComponent } from './components/sna-info-cards/recruiter-card/recruiter-card.component';\nimport { SnaInfoCardHeaderComponent } from './components/sna-info-cards/sna-info-card-header/sna-info-card-header.component';\nimport { StarterKitInfoCardComponent } from './components/sna-info-cards/starter-kit-info-card/starter-kit-info-card.component';\nimport { SnaQueryParamCheckerComponent } from './components/sna-query-param-checker/sna-query-param-checker.component';\nimport { SnaReCaptchaComponent } from './components/sna-recaptcha/sna-recaptcha.component';\nimport { StartNowAppConsultantStepWrapperComponent } from './components/start-now-app-consultant-step-wrapper/start-now-app-consultant-step-wrapper.component';\nimport { StartNowAppOfflineModalComponent } from './components/start-now-app-offline-modal/start-now-app-offline-modal.component';\nimport { StartNowAppProgressBarComponent } from './components/start-now-app-progress-bar/start-now-app-progress-bar.component';\nimport { BackForthButtonsComponent } from './components/start-now-app-stepper/back-forth-buttons/back-forth-buttons.component';\nimport { StartNowStepperComponent } from './components/start-now-app-stepper/start-now-app-stepper.component';\nimport { AboutYouStepComponent } from './components/start-now-app-steps/about-you-step/about-you-step.component';\nimport { ConfirmConsultantStepComponent } from './components/start-now-app-steps/confirm-consultant-step/confirm-consultant-step.component';\nimport { ConsultantBoxComponent } from './components/start-now-app-steps/confirm-consultant-step/consultant-box/consultant-box.component';\nimport { CongratulationSummaryComponent } from './components/start-now-app-steps/congratulation/congratulation-summary/congratulation-summary.component';\nimport { CongratulationComponent } from './components/start-now-app-steps/congratulation/congratulation.component';\nimport { ConnectWithYouStepComponent } from './components/start-now-app-steps/connect-with-you-step/connect-with-you-step.component';\nimport { ConsultantAgreementStepComponent } from './components/start-now-app-steps/consultant-agreement-step/consultant-agreement-step.component';\nimport { DoYouKnowConsultantComponent } from './components/start-now-app-steps/do-you-know-consultant-step/do-you-know-consultant-step.component';\nimport { ConsultantSubmitFailedModalComponent } from './components/start-now-app-steps/double-check-step/consultant-submit-failed-modal/consultant-submit-failed-modal.component';\nimport { DoubleCheckStepComponent } from './components/start-now-app-steps/double-check-step/double-check-step.component';\nimport { FindConsultantByZipCodeComponent } from './components/start-now-app-steps/find-consultant-by-zip-code/find-consultant-by-zip-code.component';\nimport { PasswordBackOfficeStepComponent } from './components/start-now-app-steps/password-backoffice-portal-step/password-backoffice-portal-step.component';\nimport { PasswordStrengthBarComponent } from './components/start-now-app-steps/password-backoffice-portal-step/password-strength-bar/password-strength-bar.component';\nimport { CreateVoucherPaymentErrorComponent } from './components/start-now-app-steps/payment-step/create-voucher-payment-error/create-voucher-payment-error.component';\nimport { OrderSummaryComponent } from './components/start-now-app-steps/payment-step/order-summary/order-summary.component';\nimport { PaymentStepComponent } from './components/start-now-app-steps/payment-step/payment-step.component';\nimport { PaymentTypeChangedModalComponent } from './components/start-now-app-steps/payment-step/payment-type-changed-modal/payment-type-changed-modal.component';\nimport { PaymentTypeSelectorComponent } from './components/start-now-app-steps/payment-step/payment-type-selector/payment-type-selector.component';\nimport { RegistrationCodeStepComponent } from './components/start-now-app-steps/registration-code-step/registration-code-step.component';\nimport { NoConsultantFoundModalComponent } from './components/start-now-app-steps/select-consultant-step/no-consultant-found-modal/no-consultant-found-modal.component';\nimport { SelectConsultantStepComponent } from './components/start-now-app-steps/select-consultant-step/select-consultant-step.component';\nimport { SelectStarterKitStepComponent } from './components/start-now-app-steps/select-starter-kit-step/select-starter-kit-step.component';\nimport { StarterKitCardComponent } from './components/start-now-app-steps/select-starter-kit-step/starter-kit-card/starter-kit-card.component';\nimport { WaitBusinessToolsStepComponent } from './components/start-now-app-steps/wait-business-tools-step/wait-business-tools-step.component';\nimport { StartNowAppComponent } from './components/start-now-app.component';\nimport { StartNowAppRoutingModule } from './start-now-app-routing.module';\n\n// TODO EC-3876\n// export function appInitializerFactory(appInitService: AppInitService) {\n// return () => appInitService.initSnaConfiguration();\n// }\n\n@NgModule({\n declarations: [\n StartNowAppComponent,\n DoYouKnowConsultantComponent,\n SelectConsultantStepComponent,\n FindConsultantByZipCodeComponent,\n StartNowStepperComponent,\n StartNowAppConsultantStepWrapperComponent,\n ConfirmConsultantStepComponent,\n AboutYouStepComponent,\n ConnectWithYouStepComponent,\n WaitBusinessToolsStepComponent,\n SelectStarterKitStepComponent,\n PaymentStepComponent,\n PasswordBackOfficeStepComponent,\n ConsultantAgreementStepComponent,\n DoubleCheckStepComponent,\n BackForthButtonsComponent,\n StartNowAppProgressBarComponent,\n PasswordStrengthBarComponent,\n StarterKitCardComponent,\n CongratulationComponent,\n CongratulationSummaryComponent,\n ConsultantBoxComponent,\n NoConsultantFoundModalComponent,\n PaymentCardComponent,\n SnaAddressValidationModalComponent,\n SnaAddressErrorMessagesComponent,\n CreateVoucherPaymentErrorComponent,\n PaymentTypeChangedModalComponent,\n OrderSummaryComponent,\n PasswordCardComponent,\n AddressCardComponent,\n PersonalInfoCardComponent,\n ContactInformationCardComponent,\n SnaInfoCardHeaderComponent,\n StarterKitInfoCardComponent,\n RecruiterCardComponent,\n LessDepositInformationComponent,\n ConsultantSubmitFailedModalComponent,\n StartNowAppOfflineModalComponent,\n RegistrationCodeStepComponent,\n SnaQueryParamCheckerComponent,\n SnaDisabledPageComponent,\n SnaHttpStatusErrorsComponent,\n SnaReCaptchaComponent,\n PaymentTypeSelectorComponent,\n SnaConsultantSubmitComponent,\n ],\n imports: [\n CommonModule,\n StartNowAppRoutingModule,\n SharedModule,\n FormsModule,\n ReactiveFormsModule,\n PaymentModule,\n ],\n exports: [],\n providers: [\n SafeResourceUrlPipe,\n // TODO EC-3876\n // {\n // provide: APP_INITIALIZER,\n // useFactory: appInitializerFactory,\n // deps: [AppInitService],\n // multi: true,\n // },\n ],\n})\nexport class StartNowAppModule {}\n","import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, NgModule, NgZone, PLATFORM_ID } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { AuthModule } from '@auth/auth.module';\nimport {\n MSAL_GUARD_CONFIG,\n MSAL_INSTANCE,\n MsalBroadcastService,\n MsalGuard,\n MsalGuardConfiguration,\n MsalModule,\n MsalRedirectComponent,\n MsalService,\n} from '@azure/msal-angular';\nimport {\n IPublicClientApplication,\n InteractionType,\n PublicClientApplication,\n} from '@azure/msal-browser';\nimport { BaseModule } from '@base/base.module';\nimport { CoreModule } from '@core/core.module';\nimport { AppInitService } from '@core/services/app-init.service';\nimport { AuthGuardService } from '@core/services/auth-guard.service';\nimport { FakeRecaptchaService } from '@core/services/fake-recapthca.service';\nimport { GuestGuardService } from '@core/services/guest-guard.service';\nimport { LogRocketService } from '@core/services/logrocket.service';\nimport { metaReducers, reducers } from '@core/store';\nimport { environment } from '@env';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { StoreRouterConnectingModule } from '@ngrx/router-store';\nimport { StoreModule, USER_PROVIDED_META_REDUCERS } from '@ngrx/store';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { ProductModule } from '@product/product.module';\nimport { RecipeMoreModule } from '@recipe-more/recipe-more.module';\nimport { ToastComponent } from '@shared/components/toast/toast.component';\nimport { SharedModule } from '@shared/shared.module';\nimport { UserModule } from '@user/user.module';\nimport { RECAPTCHA_V3_SITE_KEY, ReCaptchaV3Service, RecaptchaV3Module } from 'ng-recaptcha';\nimport { ToastrModule } from 'ngx-toastr';\nimport { EffectModuleConfig } from './app-module.config';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { loginRequest, msalConfig } from './auth-config';\nimport { HttpBearerTokenInterceptor } from './http-bearer-token.interceptor';\nimport { ConditionalContentWildcardRoutingModule } from './modules/conditional-content/conditional-content-wildcard-routing.module';\nimport { ConditionalContentModule } from './modules/conditional-content/conditional-content.module';\nimport { ConsultantModule } from './modules/consultant/consultant.module';\nimport { DeliveryInfoModule } from './modules/delivery-info/delivery-info.module';\nimport { StartNowAppModule } from './modules/start-now-app/start-now-app.module';\n\n// eslint-disable-next-line no-unused-vars\nexport function appInitializerFactory(appInitService: AppInitService) {\n // TODO EC-3876\n // return () => appInitService.initEcConfiguration();\n return () => () =>\n new Promise((resolve) => {\n resolve();\n });\n}\n\nexport function logRocketFactory(logRocketService: LogRocketService) {\n return logRocketService.getMetaReducers();\n}\n\nexport function MSALInstanceFactory(): IPublicClientApplication {\n return new PublicClientApplication(msalConfig);\n}\n\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\n return {\n interactionType: InteractionType.Popup,\n authRequest: loginRequest,\n };\n}\n\nexport function recaptchaServiceFactory(\n zone: NgZone,\n injector: Injector,\n appInitService: AppInitService,\n) {\n const platformId = injector.get(PLATFORM_ID);\n if (\n appInitService.Settings.ec.isRecaptchaEnabled ||\n appInitService.Settings.sna.isReCaptchaEnabled\n ) {\n return new ReCaptchaV3Service(zone, environment.recaptchaSiteKey, platformId);\n }\n return new FakeRecaptchaService();\n}\n\n@NgModule({\n declarations: [AppComponent],\n imports: [\n ConditionalContentModule,\n AuthModule,\n BaseModule,\n AppRoutingModule,\n ConsultantModule,\n BrowserModule,\n CoreModule,\n ProductModule,\n RecipeMoreModule,\n NgbModule,\n HttpClientModule,\n UserModule,\n DeliveryInfoModule,\n StartNowAppModule,\n SharedModule,\n BrowserAnimationsModule,\n ToastrModule.forRoot({\n toastComponent: ToastComponent,\n closeButton: true,\n tapToDismiss: true,\n }),\n StoreModule.forRoot(reducers, {\n metaReducers,\n }),\n StoreDevtoolsModule.instrument({\n maxAge: 25,\n logOnly: environment.production,\n }),\n StoreRouterConnectingModule.forRoot(),\n EffectModuleConfig,\n MsalModule,\n ConditionalContentWildcardRoutingModule,\n RecaptchaV3Module,\n ],\n providers: [\n AppInitService,\n AuthGuardService,\n GuestGuardService,\n LogRocketService,\n\n {\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [AppInitService],\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [AppInitService],\n multi: true,\n },\n {\n provide: USER_PROVIDED_META_REDUCERS,\n useFactory: logRocketFactory,\n deps: [LogRocketService, AppInitService],\n },\n { provide: RECAPTCHA_V3_SITE_KEY, useValue: environment.recaptchaSiteKey },\n {\n provide: ReCaptchaV3Service,\n useFactory: recaptchaServiceFactory,\n deps: [NgZone, Injector, AppInitService],\n },\n { provide: RECAPTCHA_V3_SITE_KEY, useValue: environment.recaptchaSiteKey },\n {\n provide: ReCaptchaV3Service,\n useFactory: recaptchaServiceFactory,\n deps: [NgZone, Injector, AppInitService],\n },\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALInstanceFactory,\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useFactory: MSALGuardConfigFactory,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpBearerTokenInterceptor,\n multi: true,\n },\n MsalService,\n MsalGuard,\n MsalBroadcastService,\n ],\n bootstrap: [AppComponent, MsalRedirectComponent],\n})\nexport class AppModule {}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { ConfigurationResponse as ECConfigurationResponse } from '@core/dto/configuration.dto';\nimport { ConfigurationResponse as SNAConfigurationResponse } from '@core/dto/start-now-app.dto';\nimport { environment } from '@env';\nimport { APP_CONFIG } from '@shared/utils/app-config-util';\nimport { AppModule } from './app/app.module';\n\n// TODO EC-3876\n// if (environment.production) {\n// enableProdMode();\n// }\n\n// platformBrowserDynamic()\n// .bootstrapModule(AppModule)\n// .catch((err) => console.error(err));\n\nPromise.all([\n fetch(`${environment.ecommerceBackendUri}api/configuration`).then((value) => value.json()),\n fetch(`${environment.startNowAppBackendUri}api/Configuration`).then((value) => value.json()),\n]).then(([ec, sna]: [ECConfigurationResponse, SNAConfigurationResponse]) => {\n if (environment.production) {\n enableProdMode();\n }\n\n platformBrowserDynamic([{ provide: APP_CONFIG, useValue: { ec, sna } }])\n .bootstrapModule(AppModule)\n .catch((err) => console.error(err));\n});\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { EventType } from './EventType.js';\nimport { InteractionType, InteractionStatus } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventMessageUtils = /** @class */ (function () {\r\n function EventMessageUtils() {\r\n }\r\n /**\r\n * Gets interaction status from event message\r\n * @param message\r\n * @param currentStatus\r\n */\r\n EventMessageUtils.getInteractionStatusFromEvent = function (message, currentStatus) {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_START:\r\n return InteractionStatus.Login;\r\n case EventType.SSO_SILENT_START:\r\n return InteractionStatus.SsoSilent;\r\n case EventType.ACQUIRE_TOKEN_START:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.AcquireToken;\r\n }\r\n break;\r\n case EventType.HANDLE_REDIRECT_START:\r\n return InteractionStatus.HandleRedirect;\r\n case EventType.LOGOUT_START:\r\n return InteractionStatus.Logout;\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.SSO_SILENT_FAILURE:\r\n if (currentStatus && currentStatus !== InteractionStatus.SsoSilent) {\r\n // Prevent this event from clearing any status other than ssoSilent\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGOUT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.Logout) {\r\n // Prevent this event from clearing any status other than logout\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.HANDLE_REDIRECT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.HandleRedirect) {\r\n // Prevent this event from clearing any status other than handleRedirect\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n case EventType.RESTORE_FROM_BFCACHE:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n if (currentStatus && currentStatus !== InteractionStatus.Login && currentStatus !== InteractionStatus.AcquireToken) {\r\n // Prevent this event from clearing any status other than login or acquireToken\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n }\r\n break;\r\n }\r\n return null;\r\n };\r\n return EventMessageUtils;\r\n}());\n\nexport { EventMessageUtils };\n","import { InjectionToken, Injectable, Inject, Optional, VERSION, Component, NgModule } from '@angular/core';\nimport { Location, DOCUMENT, CommonModule } from '@angular/common';\nimport { WrapperSKU, InteractionStatus, EventMessageUtils, InteractionType, BrowserConfigurationAuthError, UrlString, BrowserUtils, StringUtils, NavigationClient } from '@azure/msal-browser';\nimport { from, ReplaySubject, Subject, BehaviorSubject, of, EMPTY } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { map, concatMap, catchError, switchMap, take, filter } from 'rxjs/operators';\nimport { __awaiter } from 'tslib';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/router';\nconst MSAL_INSTANCE = new InjectionToken(\"MSAL_INSTANCE\");\r\nconst MSAL_GUARD_CONFIG = new InjectionToken(\"MSAL_GUARD_CONFIG\");\r\nconst MSAL_INTERCEPTOR_CONFIG = new InjectionToken(\"MSAL_INTERCEPTOR_CONFIG\");\r\nconst MSAL_BROADCAST_CONFIG = new InjectionToken(\"MSAL_BROADCAST_CONFIG\");\n\n/* eslint-disable header/header */\r\nconst name = \"@azure/msal-angular\";\r\nconst version = \"2.5.12\";\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass MsalService {\r\n constructor(instance, location) {\r\n this.instance = instance;\r\n this.location = location;\r\n const hash = this.location.path(true).split(\"#\").pop();\r\n if (hash) {\r\n this.redirectHash = `#${hash}`;\r\n }\r\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, version);\r\n }\r\n initialize() {\r\n return from(this.instance.initialize());\r\n }\r\n acquireTokenPopup(request) {\r\n return from(this.instance.acquireTokenPopup(request));\r\n }\r\n acquireTokenRedirect(request) {\r\n return from(this.instance.acquireTokenRedirect(request));\r\n }\r\n acquireTokenSilent(silentRequest) {\r\n return from(this.instance.acquireTokenSilent(silentRequest));\r\n }\r\n handleRedirectObservable(hash) {\r\n return from(this.instance.handleRedirectPromise(hash || this.redirectHash));\r\n }\r\n loginPopup(request) {\r\n return from(this.instance.loginPopup(request));\r\n }\r\n loginRedirect(request) {\r\n return from(this.instance.loginRedirect(request));\r\n }\r\n logout(logoutRequest) {\r\n return from(this.instance.logout(logoutRequest));\r\n }\r\n logoutRedirect(logoutRequest) {\r\n return from(this.instance.logoutRedirect(logoutRequest));\r\n }\r\n logoutPopup(logoutRequest) {\r\n return from(this.instance.logoutPopup(logoutRequest));\r\n }\r\n ssoSilent(request) {\r\n return from(this.instance.ssoSilent(request));\r\n }\r\n /**\r\n * Gets logger for msal-angular.\r\n * If no logger set, returns logger instance created with same options as msal-browser\r\n */\r\n getLogger() {\r\n if (!this.logger) {\r\n this.logger = this.instance.getLogger().clone(name, version);\r\n }\r\n return this.logger;\r\n }\r\n // Create a logger instance for msal-angular with the same options as msal-browser\r\n setLogger(logger) {\r\n this.logger = logger.clone(name, version);\r\n this.instance.setLogger(logger);\r\n }\r\n}\nMsalService.ɵfac = function MsalService_Factory(t) { return new (t || MsalService)(ɵngcc0.ɵɵinject(MSAL_INSTANCE), ɵngcc0.ɵɵinject(ɵngcc1.Location)); };\nMsalService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalService, factory: MsalService.ɵfac });\r\nMsalService.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INSTANCE,] }] },\r\n { type: Location }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INSTANCE]\n }] }, { type: ɵngcc1.Location }]; }, null); })();\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass MsalBroadcastService {\r\n constructor(msalInstance, authService, msalBroadcastConfig) {\r\n this.msalInstance = msalInstance;\r\n this.authService = authService;\r\n this.msalBroadcastConfig = msalBroadcastConfig;\r\n // Make _msalSubject a ReplaySubject if configured to replay past events\r\n if (this.msalBroadcastConfig && this.msalBroadcastConfig.eventsToReplay > 0) {\r\n this.authService.getLogger().verbose(`BroadcastService - replayPastEvents set on BroadcastConfig, replaying the last ${this.msalBroadcastConfig.eventsToReplay} events`);\r\n this._msalSubject = new ReplaySubject(this.msalBroadcastConfig.eventsToReplay);\r\n }\r\n else {\r\n // Defaults to _msalSubject being a Subject\r\n this._msalSubject = new Subject();\r\n }\r\n this.msalSubject$ = this._msalSubject.asObservable();\r\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\r\n this._inProgress = new BehaviorSubject(InteractionStatus.Startup);\r\n this.inProgress$ = this._inProgress.asObservable();\r\n this.msalInstance.addEventCallback((message) => {\r\n this._msalSubject.next(message);\r\n const status = EventMessageUtils.getInteractionStatusFromEvent(message, this._inProgress.value);\r\n if (status !== null) {\r\n this.authService.getLogger().verbose(`BroadcastService - ${message.eventType} results in setting inProgress from ${this._inProgress.value} to ${status}`);\r\n this._inProgress.next(status);\r\n }\r\n });\r\n }\r\n}\nMsalBroadcastService.ɵfac = function MsalBroadcastService_Factory(t) { return new (t || MsalBroadcastService)(ɵngcc0.ɵɵinject(MSAL_INSTANCE), ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(MSAL_BROADCAST_CONFIG, 8)); };\nMsalBroadcastService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalBroadcastService, factory: MsalBroadcastService.ɵfac });\r\nMsalBroadcastService.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INSTANCE,] }] },\r\n { type: MsalService },\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MSAL_BROADCAST_CONFIG,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalBroadcastService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INSTANCE]\n }] }, { type: MsalService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MSAL_BROADCAST_CONFIG]\n }] }]; }, null); })();\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass MsalGuard {\r\n constructor(msalGuardConfig, msalBroadcastService, authService, location, router) {\r\n this.msalGuardConfig = msalGuardConfig;\r\n this.msalBroadcastService = msalBroadcastService;\r\n this.authService = authService;\r\n this.location = location;\r\n this.router = router;\r\n // Subscribing so events in MsalGuard will set inProgress$ observable\r\n this.msalBroadcastService.inProgress$.subscribe();\r\n }\r\n /**\r\n * Parses url string to UrlTree\r\n * @param url\r\n */\r\n parseUrl(url) {\r\n return this.router.parseUrl(url);\r\n }\r\n /**\r\n * Builds the absolute url for the destination page\r\n * @param path Relative path of requested page\r\n * @returns Full destination url\r\n */\r\n getDestinationUrl(path) {\r\n this.authService.getLogger().verbose(\"Guard - getting destination url\");\r\n // Absolute base url for the application (default to origin if base element not present)\r\n const baseElements = document.getElementsByTagName(\"base\");\r\n const baseUrl = this.location.normalize(baseElements.length ? baseElements[0].href : window.location.origin);\r\n // Path of page (including hash, if using hash routing)\r\n const pathUrl = this.location.prepareExternalUrl(path);\r\n // Hash location strategy\r\n if (pathUrl.startsWith(\"#\")) {\r\n this.authService.getLogger().verbose(\"Guard - destination by hash routing\");\r\n return `${baseUrl}/${pathUrl}`;\r\n }\r\n /*\r\n * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page).\r\n * Since baseUrl also includes /base, can just concatentate baseUrl + path\r\n */\r\n return `${baseUrl}${path}`;\r\n }\r\n /**\r\n * Interactively prompt the user to login\r\n * @param url Path of the requested page\r\n */\r\n loginInteractively(state) {\r\n const authRequest = typeof this.msalGuardConfig.authRequest === \"function\"\r\n ? this.msalGuardConfig.authRequest(this.authService, state)\r\n : Object.assign({}, this.msalGuardConfig.authRequest);\r\n if (this.msalGuardConfig.interactionType === InteractionType.Popup) {\r\n this.authService.getLogger().verbose(\"Guard - logging in by popup\");\r\n return this.authService.loginPopup(authRequest)\r\n .pipe(map((response) => {\r\n this.authService.getLogger().verbose(\"Guard - login by popup successful, can activate, setting active account\");\r\n this.authService.instance.setActiveAccount(response.account);\r\n return true;\r\n }));\r\n }\r\n this.authService.getLogger().verbose(\"Guard - logging in by redirect\");\r\n const redirectStartPage = this.getDestinationUrl(state.url);\r\n return this.authService.loginRedirect(Object.assign({ redirectStartPage }, authRequest))\r\n .pipe(map(() => false));\r\n }\r\n /**\r\n * Helper which checks for the correct interaction type, prevents page with Guard to be set as reidrect, and calls handleRedirectObservable\r\n * @param state\r\n */\r\n activateHelper(state) {\r\n if (this.msalGuardConfig.interactionType !== InteractionType.Popup && this.msalGuardConfig.interactionType !== InteractionType.Redirect) {\r\n throw new BrowserConfigurationAuthError(\"invalid_interaction_type\", \"Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration\");\r\n }\r\n this.authService.getLogger().verbose(\"MSAL Guard activated\");\r\n /*\r\n * If a page with MSAL Guard is set as the redirect for acquireTokenSilent,\r\n * short-circuit to prevent redirecting or popups.\r\n */\r\n if (typeof window !== \"undefined\") {\r\n if (UrlString.hashContainsKnownProperties(window.location.hash) && BrowserUtils.isInIframe() && !this.authService.instance.getConfiguration().system.allowRedirectInIframe) {\r\n this.authService.getLogger().warning(\"Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.\");\r\n return of(false);\r\n }\r\n }\r\n else {\r\n this.authService.getLogger().info(\"Guard - window is undefined, MSAL does not support server-side token acquisition\");\r\n return of(true);\r\n }\r\n /**\r\n * If a loginFailedRoute is set in the config, set this as the loginFailedRoute\r\n */\r\n if (this.msalGuardConfig.loginFailedRoute) {\r\n this.loginFailedRoute = this.parseUrl(this.msalGuardConfig.loginFailedRoute);\r\n }\r\n // Capture current path before it gets changed by handleRedirectObservable\r\n const currentPath = this.location.path(true);\r\n return this.authService.handleRedirectObservable()\r\n .pipe(concatMap(() => {\r\n if (!this.authService.instance.getAllAccounts().length) {\r\n if (state) {\r\n this.authService.getLogger().verbose(\"Guard - no accounts retrieved, log in required to activate\");\r\n return this.loginInteractively(state);\r\n }\r\n this.authService.getLogger().verbose(\"Guard - no accounts retrieved, no state, cannot load\");\r\n return of(false);\r\n }\r\n this.authService.getLogger().verbose(\"Guard - at least 1 account exists, can activate or load\");\r\n // Prevent navigating the app to /#code= or /code=\r\n if (state) {\r\n /*\r\n * Path routing:\r\n * state.url: /#code=...\r\n * state.root.fragment: code=...\r\n */\r\n /*\r\n * Hash routing:\r\n * state.url: /code\r\n * state.root.fragment: null\r\n */\r\n const urlContainsCode = this.includesCode(state.url);\r\n const fragmentContainsCode = !!state.root && !!state.root.fragment && this.includesCode(`#${state.root.fragment}`);\r\n const hashRouting = this.location.prepareExternalUrl(state.url).indexOf(\"#\") === 0;\r\n // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used\r\n if (urlContainsCode && (fragmentContainsCode || hashRouting)) {\r\n this.authService.getLogger().info(\"Guard - Hash contains known code response, stopping navigation.\");\r\n // Path routing (navigate to current path without hash)\r\n if (currentPath.indexOf(\"#\") > -1) {\r\n return of(this.parseUrl(this.location.path()));\r\n }\r\n // Hash routing (navigate to root path)\r\n return of(this.parseUrl(\"\"));\r\n }\r\n }\r\n return of(true);\r\n }), catchError((error) => {\r\n this.authService.getLogger().error(\"Guard - error while logging in, unable to activate\");\r\n this.authService.getLogger().errorPii(`Guard - error: ${error.message}`);\r\n /**\r\n * If a loginFailedRoute is set, checks to see if Angular 10+ is used and state is passed in before returning route\r\n * Apps using Angular 9 will receive of(false) in canLoad interface, as it does not support UrlTree return types\r\n */\r\n if (this.loginFailedRoute && parseInt(VERSION.major, 10) > 9 && state) {\r\n this.authService.getLogger().verbose(\"Guard - loginFailedRoute set, redirecting\");\r\n return of(this.loginFailedRoute);\r\n }\r\n return of(false);\r\n }));\r\n }\r\n includesCode(path) {\r\n return (path.lastIndexOf(\"/code\") > -1 &&\r\n path.lastIndexOf(\"/code\") === path.length - \"/code\".length) || // path.endsWith(\"/code\")\r\n path.indexOf(\"#code=\") > -1 ||\r\n path.indexOf(\"&code=\") > -1;\r\n }\r\n canActivate(route, state) {\r\n this.authService.getLogger().verbose(\"Guard - canActivate\");\r\n return this.activateHelper(state);\r\n }\r\n canActivateChild(route, state) {\r\n this.authService.getLogger().verbose(\"Guard - canActivateChild\");\r\n return this.activateHelper(state);\r\n }\r\n canLoad() {\r\n this.authService.getLogger().verbose(\"Guard - canLoad\");\r\n // @ts-ignore\r\n return this.activateHelper();\r\n }\r\n}\nMsalGuard.ɵfac = function MsalGuard_Factory(t) { return new (t || MsalGuard)(ɵngcc0.ɵɵinject(MSAL_GUARD_CONFIG), ɵngcc0.ɵɵinject(MsalBroadcastService), ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc1.Location), ɵngcc0.ɵɵinject(ɵngcc2.Router)); };\nMsalGuard.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalGuard, factory: MsalGuard.ɵfac });\r\nMsalGuard.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_GUARD_CONFIG,] }] },\r\n { type: MsalBroadcastService },\r\n { type: MsalService },\r\n { type: Location },\r\n { type: Router }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalGuard, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_GUARD_CONFIG]\n }] }, { type: MsalBroadcastService }, { type: MsalService }, { type: ɵngcc1.Location }, { type: ɵngcc2.Router }]; }, null); })();\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass MsalInterceptor {\r\n constructor(msalInterceptorConfig, authService, location, msalBroadcastService, \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n document) {\r\n this.msalInterceptorConfig = msalInterceptorConfig;\r\n this.authService = authService;\r\n this.location = location;\r\n this.msalBroadcastService = msalBroadcastService;\r\n this._document = document;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n intercept(req, next) {\r\n if (this.msalInterceptorConfig.interactionType !== InteractionType.Popup && this.msalInterceptorConfig.interactionType !== InteractionType.Redirect) {\r\n throw new BrowserConfigurationAuthError(\"invalid_interaction_type\", \"Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration\");\r\n }\r\n this.authService.getLogger().verbose(\"MSAL Interceptor activated\");\r\n const scopes = this.getScopesForEndpoint(req.url, req.method);\r\n // If no scopes for endpoint, does not acquire token\r\n if (!scopes || scopes.length === 0) {\r\n this.authService.getLogger().verbose(\"Interceptor - no scopes for endpoint\");\r\n return next.handle(req);\r\n }\r\n // Sets account as active account or first account\r\n let account;\r\n if (!!this.authService.instance.getActiveAccount()) {\r\n this.authService.getLogger().verbose(\"Interceptor - active account selected\");\r\n account = this.authService.instance.getActiveAccount();\r\n }\r\n else {\r\n this.authService.getLogger().verbose(\"Interceptor - no active account, fallback to first account\");\r\n account = this.authService.instance.getAllAccounts()[0];\r\n }\r\n const authRequest = typeof this.msalInterceptorConfig.authRequest === \"function\"\r\n ? this.msalInterceptorConfig.authRequest(this.authService, req, { account: account })\r\n : Object.assign(Object.assign({}, this.msalInterceptorConfig.authRequest), { account });\r\n this.authService.getLogger().info(`Interceptor - ${scopes.length} scopes found for endpoint`);\r\n this.authService.getLogger().infoPii(`Interceptor - [${scopes}] scopes found for ${req.url}`);\r\n return this.acquireToken(authRequest, scopes, account)\r\n .pipe(switchMap((result) => {\r\n this.authService.getLogger().verbose(\"Interceptor - setting authorization headers\");\r\n const headers = req.headers\r\n .set(\"Authorization\", `Bearer ${result.accessToken}`);\r\n const requestClone = req.clone({ headers });\r\n return next.handle(requestClone);\r\n }));\r\n }\r\n /**\r\n * Try to acquire token silently. Invoke interaction if acquireTokenSilent rejected with error or resolved with null access token\r\n * @param authRequest Request\r\n * @param scopes Array of scopes for the request\r\n * @param account Account\r\n * @returns Authentication result\r\n */\r\n acquireToken(authRequest, scopes, account) {\r\n // Note: For MSA accounts, include openid scope when calling acquireTokenSilent to return idToken\r\n return this.authService.acquireTokenSilent(Object.assign(Object.assign({}, authRequest), { scopes, account }))\r\n .pipe(catchError(() => {\r\n this.authService.getLogger().error(\"Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve.\");\r\n return this.msalBroadcastService.inProgress$\r\n .pipe(take(1), switchMap((status) => {\r\n if (status === InteractionStatus.None) {\r\n return this.acquireTokenInteractively(authRequest, scopes);\r\n }\r\n return this.msalBroadcastService.inProgress$\r\n .pipe(filter((status) => status === InteractionStatus.None), take(1), switchMap(() => this.acquireToken(authRequest, scopes, account)));\r\n }));\r\n }), switchMap((result) => {\r\n if (!result.accessToken) {\r\n this.authService.getLogger().error(\"Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve.\");\r\n return this.msalBroadcastService.inProgress$\r\n .pipe(filter((status) => status === InteractionStatus.None), take(1), switchMap(() => this.acquireTokenInteractively(authRequest, scopes)));\r\n }\r\n return of(result);\r\n }));\r\n }\r\n /**\r\n * Invoke interaction for the given set of scopes\r\n * @param authRequest Request\r\n * @param scopes Array of scopes for the request\r\n * @returns Result from the interactive request\r\n */\r\n acquireTokenInteractively(authRequest, scopes) {\r\n if (this.msalInterceptorConfig.interactionType === InteractionType.Popup) {\r\n this.authService.getLogger().verbose(\"Interceptor - error acquiring token silently, acquiring by popup\");\r\n return this.authService.acquireTokenPopup(Object.assign(Object.assign({}, authRequest), { scopes }));\r\n }\r\n this.authService.getLogger().verbose(\"Interceptor - error acquiring token silently, acquiring by redirect\");\r\n const redirectStartPage = window.location.href;\r\n this.authService.acquireTokenRedirect(Object.assign(Object.assign({}, authRequest), { scopes, redirectStartPage }));\r\n return EMPTY;\r\n }\r\n /**\r\n * Looks up the scopes for the given endpoint from the protectedResourceMap\r\n * @param endpoint Url of the request\r\n * @param httpMethod Http method of the request\r\n * @returns Array of scopes, or null if not found\r\n *\r\n */\r\n getScopesForEndpoint(endpoint, httpMethod) {\r\n this.authService.getLogger().verbose(\"Interceptor - getting scopes for endpoint\");\r\n // Ensures endpoints and protected resources compared are normalized\r\n const normalizedEndpoint = this.location.normalize(endpoint);\r\n const protectedResourcesArray = Array.from(this.msalInterceptorConfig.protectedResourceMap.keys());\r\n const matchingProtectedResources = this.matchResourcesToEndpoint(protectedResourcesArray, normalizedEndpoint);\r\n // Check absolute urls of resources first before checking relative to prevent incorrect matching where multiple resources have similar relative urls\r\n if (matchingProtectedResources.absoluteResources.length > 0) {\r\n return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources.absoluteResources, httpMethod);\r\n }\r\n else if (matchingProtectedResources.relativeResources.length > 0) {\r\n return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources.relativeResources, httpMethod);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Finds resource endpoints that match request endpoint\r\n * @param protectedResourcesEndpoints\r\n * @param endpoint\r\n * @returns\r\n */\r\n matchResourcesToEndpoint(protectedResourcesEndpoints, endpoint) {\r\n const matchingResources = { absoluteResources: [], relativeResources: [] };\r\n protectedResourcesEndpoints.forEach(key => {\r\n // Normalizes and adds resource to matchingResources.absoluteResources if key matches endpoint. StringUtils.matchPattern accounts for wildcards\r\n const normalizedKey = this.location.normalize(key);\r\n if (StringUtils.matchPattern(normalizedKey, endpoint)) {\r\n matchingResources.absoluteResources.push(key);\r\n }\r\n // Get url components for relative urls\r\n const absoluteKey = this.getAbsoluteUrl(key);\r\n const keyComponents = new UrlString(absoluteKey).getUrlComponents();\r\n const absoluteEndpoint = this.getAbsoluteUrl(endpoint);\r\n const endpointComponents = new UrlString(absoluteEndpoint).getUrlComponents();\r\n // Normalized key should include query strings if applicable\r\n const relativeNormalizedKey = keyComponents.QueryString ? `${keyComponents.AbsolutePath}?${keyComponents.QueryString}` : this.location.normalize(keyComponents.AbsolutePath);\r\n // Add resource to matchingResources.relativeResources if same origin, relativeKey matches endpoint, and is not empty\r\n if (keyComponents.HostNameAndPort === endpointComponents.HostNameAndPort && StringUtils.matchPattern(relativeNormalizedKey, absoluteEndpoint) && relativeNormalizedKey !== \"\" && relativeNormalizedKey !== \"/*\") {\r\n matchingResources.relativeResources.push(key);\r\n }\r\n });\r\n return matchingResources;\r\n }\r\n /**\r\n * Transforms relative urls to absolute urls\r\n * @param url\r\n * @returns\r\n */\r\n getAbsoluteUrl(url) {\r\n const link = this._document.createElement(\"a\");\r\n link.href = url;\r\n return link.href;\r\n }\r\n /**\r\n * Finds scopes from first matching endpoint with HTTP method that matches request\r\n * @param protectedResourceMap Protected resource map\r\n * @param endpointArray Array of resources that match request endpoint\r\n * @param httpMethod Http method of the request\r\n * @returns\r\n */\r\n matchScopesToEndpoint(protectedResourceMap, endpointArray, httpMethod) {\r\n const allMatchedScopes = [];\r\n // Check each matched endpoint for matching HttpMethod and scopes\r\n endpointArray.forEach(matchedEndpoint => {\r\n const scopesForEndpoint = [];\r\n const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);\r\n // Return if resource is unprotected\r\n if (methodAndScopesArray === null) {\r\n allMatchedScopes.push(null);\r\n return;\r\n }\r\n methodAndScopesArray.forEach(entry => {\r\n // Entry is either array of scopes or ProtectedResourceScopes object\r\n if (typeof entry === \"string\") {\r\n scopesForEndpoint.push(entry);\r\n }\r\n else {\r\n // Ensure methods being compared are normalized\r\n const normalizedRequestMethod = httpMethod.toLowerCase();\r\n const normalizedResourceMethod = entry.httpMethod.toLowerCase();\r\n // Method in protectedResourceMap matches request http method\r\n if (normalizedResourceMethod === normalizedRequestMethod) {\r\n // Validate if scopes comes null to unprotect the resource in a certain http method\r\n if (entry.scopes === null) {\r\n allMatchedScopes.push(null);\r\n }\r\n else {\r\n entry.scopes.forEach((scope) => {\r\n scopesForEndpoint.push(scope);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n // Only add to all scopes if scopes for endpoint and method is found\r\n if (scopesForEndpoint.length > 0) {\r\n allMatchedScopes.push(scopesForEndpoint);\r\n }\r\n });\r\n if (allMatchedScopes.length > 0) {\r\n if (allMatchedScopes.length > 1) {\r\n this.authService.getLogger().warning(\"Interceptor - More than 1 matching scopes for endpoint found.\");\r\n }\r\n // Returns scopes for first matching endpoint\r\n return allMatchedScopes[0];\r\n }\r\n return null;\r\n }\r\n}\nMsalInterceptor.ɵfac = function MsalInterceptor_Factory(t) { return new (t || MsalInterceptor)(ɵngcc0.ɵɵinject(MSAL_INTERCEPTOR_CONFIG), ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc1.Location), ɵngcc0.ɵɵinject(MsalBroadcastService), ɵngcc0.ɵɵinject(DOCUMENT)); };\nMsalInterceptor.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalInterceptor, factory: MsalInterceptor.ɵfac });\r\nMsalInterceptor.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INTERCEPTOR_CONFIG,] }] },\r\n { type: MsalService },\r\n { type: Location },\r\n { type: MsalBroadcastService },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalInterceptor, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INTERCEPTOR_CONFIG]\n }] }, { type: MsalService }, { type: ɵngcc1.Location }, { type: MsalBroadcastService }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass MsalRedirectComponent {\r\n constructor(authService) {\r\n this.authService = authService;\r\n }\r\n ngOnInit() {\r\n this.authService.getLogger().verbose(\"MsalRedirectComponent activated\");\r\n this.authService.initialize().pipe(concatMap(() => {\r\n return this.authService.handleRedirectObservable();\r\n })).subscribe();\r\n }\r\n}\nMsalRedirectComponent.ɵfac = function MsalRedirectComponent_Factory(t) { return new (t || MsalRedirectComponent)(ɵngcc0.ɵɵdirectiveInject(MsalService)); };\nMsalRedirectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MsalRedirectComponent, selectors: [[\"app-redirect\"]], decls: 0, vars: 0, template: function MsalRedirectComponent_Template(rf, ctx) { }, encapsulation: 2 });\r\nMsalRedirectComponent.ctorParameters = () => [\r\n { type: MsalService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalRedirectComponent, [{\n type: Component,\n args: [{\n selector: \"app-redirect\",\n template: \"\"\n }]\n }], function () { return [{ type: MsalService }]; }, null); })();\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass MsalModule {\r\n static forRoot(msalInstance, guardConfig, interceptorConfig) {\r\n return {\r\n ngModule: MsalModule,\r\n providers: [\r\n {\r\n provide: MSAL_INSTANCE,\r\n useValue: msalInstance\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useValue: guardConfig\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useValue: interceptorConfig\r\n },\r\n MsalService\r\n ]\r\n };\r\n }\r\n}\nMsalModule.ɵfac = function MsalModule_Factory(t) { return new (t || MsalModule)(); };\nMsalModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MsalModule });\nMsalModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n MsalGuard,\n MsalBroadcastService\n ], imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalModule, [{\n type: NgModule,\n args: [{\n declarations: [MsalRedirectComponent],\n imports: [\n CommonModule\n ],\n providers: [\n MsalGuard,\n MsalBroadcastService\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MsalModule, { declarations: function () { return [MsalRedirectComponent]; }, imports: function () { return [CommonModule]; } }); })();\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Custom navigation used for Angular client-side navigation.\r\n * See performance doc for details:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/v2-docs/performance.md\r\n */\r\nclass MsalCustomNavigationClient extends NavigationClient {\r\n constructor(authService, router, location) {\r\n super();\r\n this.authService = authService;\r\n this.router = router;\r\n this.location = location;\r\n }\r\n navigateInternal(url, options) {\r\n const _super = Object.create(null, {\r\n navigateInternal: { get: () => super.navigateInternal }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.authService.getLogger().trace(\"MsalCustomNavigationClient called\");\r\n this.authService.getLogger().verbose(\"MsalCustomNavigationClient - navigating\");\r\n this.authService.getLogger().verbosePii(`MsalCustomNavigationClient - navigating to url: ${url}`);\r\n // Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled\r\n if (options.noHistory) {\r\n return _super.navigateInternal.call(this, url, options);\r\n }\r\n else {\r\n // Normalizing newUrl if no query string\r\n const urlComponents = new UrlString(url).getUrlComponents();\r\n const newUrl = urlComponents.QueryString ? `${urlComponents.AbsolutePath}?${urlComponents.QueryString}` : this.location.normalize(urlComponents.AbsolutePath);\r\n this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });\r\n }\r\n return Promise.resolve(options.noHistory);\r\n });\r\n }\r\n}\nMsalCustomNavigationClient.ɵfac = function MsalCustomNavigationClient_Factory(t) { return new (t || MsalCustomNavigationClient)(ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc2.Router), ɵngcc0.ɵɵinject(ɵngcc1.Location)); };\nMsalCustomNavigationClient.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalCustomNavigationClient, factory: MsalCustomNavigationClient.ɵfac });\r\nMsalCustomNavigationClient.ctorParameters = () => [\r\n { type: MsalService },\r\n { type: Router },\r\n { type: Location }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalCustomNavigationClient, [{\n type: Injectable\n }], function () { return [{ type: MsalService }, { type: ɵngcc2.Router }, { type: ɵngcc1.Location }]; }, null); })();\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { MSAL_BROADCAST_CONFIG, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalCustomNavigationClient, MsalGuard, MsalInterceptor, MsalModule, MsalRedirectComponent, MsalService, version };\n\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __read, __rest, __spread };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { StringUtils, AuthError } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n popupWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\n desc: \"Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentLogoutUnsupportedError: {\r\n code: \"silent_logout_unsupported\",\r\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n },\r\n unableToLoadTokenError: {\r\n code: \"unable_to_load_token\",\r\n desc: \"Error loading token to cache.\"\r\n },\r\n signingKeyNotFoundInStorage: {\r\n code: \"crypto_key_not_found\",\r\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\r\n },\r\n authCodeRequired: {\r\n code: \"auth_code_required\",\r\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\r\n },\r\n authCodeOrNativeAccountRequired: {\r\n code: \"auth_code_or_nativeAccountId_required\",\r\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\r\n },\r\n spaCodeAndNativeAccountPresent: {\r\n code: \"spa_code_and_nativeAccountId_present\",\r\n desc: \"Request cannot contain both spa code and native account id.\"\r\n },\r\n databaseUnavailable: {\r\n code: \"database_unavailable\",\r\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\r\n },\r\n unableToAcquireTokenFromNativePlatform: {\r\n code: \"unable_to_acquire_token_from_native_platform\",\r\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeHandshakeTimeout: {\r\n code: \"native_handshake_timeout\",\r\n desc: \"Timed out while attempting to establish connection to browser extension\"\r\n },\r\n nativeExtensionNotInstalled: {\r\n code: \"native_extension_not_installed\",\r\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\r\n },\r\n nativeConnectionNotEstablished: {\r\n code: \"native_connection_not_established\",\r\n desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeBrokerCalledBeforeInitialize: {\r\n code: \"native_broker_called_before_initialize\",\r\n desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativePromptNotSupported: {\r\n code: \"native_prompt_not_supported\",\r\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\r\n }\r\n};\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nvar BrowserAuthError = /** @class */ (function (_super) {\r\n __extends(BrowserAuthError, _super);\r\n function BrowserAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n Object.setPrototypeOf(_this, BrowserAuthError.prototype);\r\n _this.name = \"BrowserAuthError\";\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createPkceNotGeneratedError = function (errDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code, BrowserAuthErrorMessage.pkceNotGenerated.desc + \" Detail:\" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createCryptoNotAvailableError = function (errDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code, BrowserAuthErrorMessage.cryptoDoesNotExist.desc + \" Detail:\" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method\r\n */\r\n BrowserAuthError.createHttpMethodNotImplementedError = function (method) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code, BrowserAuthErrorMessage.httpMethodNotImplementedError.desc + \" Given Method: \" + method);\r\n };\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n BrowserAuthError.createEmptyNavigationUriError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue\r\n */\r\n BrowserAuthError.createEmptyHashError = function (hashValue) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, BrowserAuthErrorMessage.hashEmptyError.desc + \" Given Url: \" + hashValue);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n BrowserAuthError.createHashDoesNotContainStateError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n BrowserAuthError.createHashDoesNotContainKnownPropertiesError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n BrowserAuthError.createUnableToParseStateError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\r\n */\r\n BrowserAuthError.createStateInteractionTypeMismatchError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n BrowserAuthError.createInteractionInProgressError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createPopupWindowError = function (errDetail) {\r\n var errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? errorMessage + \" Details: \" + errDetail : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\r\n };\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createEmptyWindowCreatedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n BrowserAuthError.createUserCancelledError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code, BrowserAuthErrorMessage.userCancelledError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n BrowserAuthError.createMonitorPopupTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code, BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n BrowserAuthError.createMonitorIframeTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code, BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe or brokered applications.\r\n * @param windowParentCheck\r\n */\r\n BrowserAuthError.createRedirectInIframeError = function (windowParentCheck) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, BrowserAuthErrorMessage.redirectInIframeError.desc + \" (window.parent !== window) => \" + windowParentCheck);\r\n };\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n BrowserAuthError.createBlockReloadInHiddenIframeError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code, BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns\r\n */\r\n BrowserAuthError.createBlockAcquireTokenInPopupsError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n BrowserAuthError.createIframeClosedPrematurelyError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\r\n */\r\n BrowserAuthError.createSilentLogoutUnsupportedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n BrowserAuthError.createNoAccountError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n BrowserAuthError.createSilentPromptValueError = function (givenPrompt) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, BrowserAuthErrorMessage.silentPromptValueError.desc + \" Given value: \" + givenPrompt);\r\n };\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createUnableToParseTokenRequestCacheError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code, BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createNoTokenRequestCacheError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code, BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n BrowserAuthError.createAuthRequestNotSetError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code, BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createNoCachedAuthorityError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code, BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n };\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n BrowserAuthError.createInvalidCacheTypeError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, \"\" + BrowserAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n BrowserAuthError.createNonBrowserEnvironmentError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n };\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n BrowserAuthError.createDatabaseNotOpenError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n };\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n BrowserAuthError.createNoNetworkConnectivityError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n };\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n BrowserAuthError.createPostRequestFailedError = function (errorDesc, endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, BrowserAuthErrorMessage.postRequestFailed.desc + \" | Network client threw: \" + errorDesc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n BrowserAuthError.createGetRequestFailedError = function (errorDesc, endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, BrowserAuthErrorMessage.getRequestFailed.desc + \" | Network client threw: \" + errorDesc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n BrowserAuthError.createFailedToParseNetworkResponseError = function (endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, BrowserAuthErrorMessage.failedToParseNetworkResponse.desc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when the necessary information is not available to sideload tokens\r\n */\r\n BrowserAuthError.createUnableToLoadTokenError = function (errorDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, BrowserAuthErrorMessage.unableToLoadTokenError.desc + \" | \" + errorDetail);\r\n };\r\n /**\r\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\r\n */\r\n BrowserAuthError.createSigningKeyNotFoundInStorageError = function (keyId) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc + \" | No match found for KeyId: \" + keyId);\r\n };\r\n /**\r\n * Create an error when an authorization code is required but not provided\r\n */\r\n BrowserAuthError.createAuthCodeRequiredError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\r\n };\r\n /**\r\n * Create an error when an authorization code or native account ID is required but not provided\r\n */\r\n BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\r\n };\r\n /**\r\n * Create an error when both authorization code and native account ID are provided\r\n */\r\n BrowserAuthError.createSpaCodeAndNativeAccountIdPresentError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.spaCodeAndNativeAccountPresent.code, BrowserAuthErrorMessage.spaCodeAndNativeAccountPresent.desc);\r\n };\r\n /**\r\n * Create an error when IndexedDB is unavailable\r\n */\r\n BrowserAuthError.createDatabaseUnavailableError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\r\n };\r\n /**\r\n * Create an error when native token acquisition is not possible\r\n */\r\n BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\r\n };\r\n /**\r\n * Create an error thrown when Handshake with browser extension times out\r\n */\r\n BrowserAuthError.createNativeHandshakeTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\r\n };\r\n /**\r\n * Create an error thrown when browser extension is not installed\r\n */\r\n BrowserAuthError.createNativeExtensionNotInstalledError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\r\n };\r\n /**\r\n * Create an error when native connection has not been established\r\n * @returns\r\n */\r\n BrowserAuthError.createNativeConnectionNotEstablishedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\r\n };\r\n /**\r\n * Create an error thrown when the initialize function hasn't been called\r\n */\r\n BrowserAuthError.createNativeBrokerCalledBeforeInitialize = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\r\n };\r\n /**\r\n * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\r\n * These requests must go through eSTS to ensure eSTS is aware of the new account\r\n */\r\n BrowserAuthError.createNativePromptParameterNotSupportedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\r\n };\r\n return BrowserAuthError;\r\n}(AuthError));\n\nexport { BrowserAuthError, BrowserAuthErrorMessage };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\r\n },\r\n entropyNotProvided: {\r\n code: \"entropy_not_provided\",\r\n desc: \"The available browser crypto interface requires entropy set via system.cryptoOptions.entropy configuration option.\"\r\n }\r\n};\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nvar BrowserConfigurationAuthError = /** @class */ (function (_super) {\r\n __extends(BrowserConfigurationAuthError, _super);\r\n function BrowserConfigurationAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"BrowserConfigurationAuthError\";\r\n Object.setPrototypeOf(_this, BrowserConfigurationAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n BrowserConfigurationAuthError.createRedirectUriEmptyError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code, BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n BrowserConfigurationAuthError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code, BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation\r\n */\r\n BrowserConfigurationAuthError.createStorageNotSupportedError = function (givenStorageLocation) {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc + \" Given Location: \" + givenStorageLocation);\r\n };\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n BrowserConfigurationAuthError.createRedirectCallbacksNotSetError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n };\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n BrowserConfigurationAuthError.createStubPcaInstanceCalledError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code, BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n };\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a crypto interface that requires entropy is initialized without entropy\r\n */\r\n BrowserConfigurationAuthError.createEntropyNotProvided = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.entropyNotProvided.code, BrowserConfigurationAuthErrorMessage.entropyNotProvided.desc);\r\n };\r\n return BrowserConfigurationAuthError;\r\n}(AuthError));\n\nexport { BrowserConfigurationAuthError, BrowserConfigurationAuthErrorMessage };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventType;\r\n(function (EventType) {\r\n EventType[\"INITIALIZE_START\"] = \"msal:initializeStart\";\r\n EventType[\"INITIALIZE_END\"] = \"msal:initializeEnd\";\r\n EventType[\"ACCOUNT_ADDED\"] = \"msal:accountAdded\";\r\n EventType[\"ACCOUNT_REMOVED\"] = \"msal:accountRemoved\";\r\n EventType[\"LOGIN_START\"] = \"msal:loginStart\";\r\n EventType[\"LOGIN_SUCCESS\"] = \"msal:loginSuccess\";\r\n EventType[\"LOGIN_FAILURE\"] = \"msal:loginFailure\";\r\n EventType[\"ACQUIRE_TOKEN_START\"] = \"msal:acquireTokenStart\";\r\n EventType[\"ACQUIRE_TOKEN_SUCCESS\"] = \"msal:acquireTokenSuccess\";\r\n EventType[\"ACQUIRE_TOKEN_FAILURE\"] = \"msal:acquireTokenFailure\";\r\n EventType[\"ACQUIRE_TOKEN_NETWORK_START\"] = \"msal:acquireTokenFromNetworkStart\";\r\n EventType[\"SSO_SILENT_START\"] = \"msal:ssoSilentStart\";\r\n EventType[\"SSO_SILENT_SUCCESS\"] = \"msal:ssoSilentSuccess\";\r\n EventType[\"SSO_SILENT_FAILURE\"] = \"msal:ssoSilentFailure\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_START\"] = \"msal:acquireTokenByCodeStart\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_SUCCESS\"] = \"msal:acquireTokenByCodeSuccess\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_FAILURE\"] = \"msal:acquireTokenByCodeFailure\";\r\n EventType[\"HANDLE_REDIRECT_START\"] = \"msal:handleRedirectStart\";\r\n EventType[\"HANDLE_REDIRECT_END\"] = \"msal:handleRedirectEnd\";\r\n EventType[\"POPUP_OPENED\"] = \"msal:popupOpened\";\r\n EventType[\"LOGOUT_START\"] = \"msal:logoutStart\";\r\n EventType[\"LOGOUT_SUCCESS\"] = \"msal:logoutSuccess\";\r\n EventType[\"LOGOUT_FAILURE\"] = \"msal:logoutFailure\";\r\n EventType[\"LOGOUT_END\"] = \"msal:logoutEnd\";\r\n EventType[\"RESTORE_FROM_BFCACHE\"] = \"msal:restoreFromBFCache\";\r\n})(EventType || (EventType = {}));\n\nexport { EventType };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { OIDC_DEFAULT_SCOPES } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Constants\r\n */\r\nvar BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n DEFAULT_POLL_INTERVAL_MS: 30,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\nvar NativeConstants = {\r\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\r\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\",\r\n MATS_TELEMETRY: \"MATS\"\r\n};\r\nvar NativeExtensionMethod;\r\n(function (NativeExtensionMethod) {\r\n NativeExtensionMethod[\"HandshakeRequest\"] = \"Handshake\";\r\n NativeExtensionMethod[\"HandshakeResponse\"] = \"HandshakeResponse\";\r\n NativeExtensionMethod[\"GetToken\"] = \"GetToken\";\r\n NativeExtensionMethod[\"Response\"] = \"Response\";\r\n})(NativeExtensionMethod || (NativeExtensionMethod = {}));\r\nvar BrowserCacheLocation;\r\n(function (BrowserCacheLocation) {\r\n BrowserCacheLocation[\"LocalStorage\"] = \"localStorage\";\r\n BrowserCacheLocation[\"SessionStorage\"] = \"sessionStorage\";\r\n BrowserCacheLocation[\"MemoryStorage\"] = \"memoryStorage\";\r\n})(BrowserCacheLocation || (BrowserCacheLocation = {}));\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nvar HTTP_REQUEST_TYPE;\r\n(function (HTTP_REQUEST_TYPE) {\r\n HTTP_REQUEST_TYPE[\"GET\"] = \"GET\";\r\n HTTP_REQUEST_TYPE[\"POST\"] = \"POST\";\r\n})(HTTP_REQUEST_TYPE || (HTTP_REQUEST_TYPE = {}));\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nvar TemporaryCacheKeys;\r\n(function (TemporaryCacheKeys) {\r\n TemporaryCacheKeys[\"AUTHORITY\"] = \"authority\";\r\n TemporaryCacheKeys[\"ACQUIRE_TOKEN_ACCOUNT\"] = \"acquireToken.account\";\r\n TemporaryCacheKeys[\"SESSION_STATE\"] = \"session.state\";\r\n TemporaryCacheKeys[\"REQUEST_STATE\"] = \"request.state\";\r\n TemporaryCacheKeys[\"NONCE_IDTOKEN\"] = \"nonce.id_token\";\r\n TemporaryCacheKeys[\"ORIGIN_URI\"] = \"request.origin\";\r\n TemporaryCacheKeys[\"RENEW_STATUS\"] = \"token.renew.status\";\r\n TemporaryCacheKeys[\"URL_HASH\"] = \"urlHash\";\r\n TemporaryCacheKeys[\"REQUEST_PARAMS\"] = \"request.params\";\r\n TemporaryCacheKeys[\"SCOPES\"] = \"scopes\";\r\n TemporaryCacheKeys[\"INTERACTION_STATUS_KEY\"] = \"interaction.status\";\r\n TemporaryCacheKeys[\"CCS_CREDENTIAL\"] = \"ccs.credential\";\r\n TemporaryCacheKeys[\"CORRELATION_ID\"] = \"request.correlationId\";\r\n TemporaryCacheKeys[\"NATIVE_REQUEST\"] = \"request.native\";\r\n TemporaryCacheKeys[\"REDIRECT_CONTEXT\"] = \"request.redirect.context\";\r\n})(TemporaryCacheKeys || (TemporaryCacheKeys = {}));\r\nvar StaticCacheKeys;\r\n(function (StaticCacheKeys) {\r\n StaticCacheKeys[\"ACCOUNT_KEYS\"] = \"msal.account.keys\";\r\n StaticCacheKeys[\"TOKEN_KEYS\"] = \"msal.token.keys\";\r\n})(StaticCacheKeys || (StaticCacheKeys = {}));\r\n/**\r\n * Cache keys stored in-memory\r\n */\r\nvar InMemoryCacheKeys;\r\n(function (InMemoryCacheKeys) {\r\n InMemoryCacheKeys[\"WRAPPER_SKU\"] = \"wrapper.sku\";\r\n InMemoryCacheKeys[\"WRAPPER_VER\"] = \"wrapper.version\";\r\n})(InMemoryCacheKeys || (InMemoryCacheKeys = {}));\r\n/**\r\n * API Codes for Telemetry purposes.\r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nvar ApiId;\r\n(function (ApiId) {\r\n ApiId[ApiId[\"acquireTokenRedirect\"] = 861] = \"acquireTokenRedirect\";\r\n ApiId[ApiId[\"acquireTokenPopup\"] = 862] = \"acquireTokenPopup\";\r\n ApiId[ApiId[\"ssoSilent\"] = 863] = \"ssoSilent\";\r\n ApiId[ApiId[\"acquireTokenSilent_authCode\"] = 864] = \"acquireTokenSilent_authCode\";\r\n ApiId[ApiId[\"handleRedirectPromise\"] = 865] = \"handleRedirectPromise\";\r\n ApiId[ApiId[\"acquireTokenByCode\"] = 866] = \"acquireTokenByCode\";\r\n ApiId[ApiId[\"acquireTokenSilent_silentFlow\"] = 61] = \"acquireTokenSilent_silentFlow\";\r\n ApiId[ApiId[\"logout\"] = 961] = \"logout\";\r\n ApiId[ApiId[\"logoutPopup\"] = 962] = \"logoutPopup\";\r\n})(ApiId || (ApiId = {}));\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nvar InteractionType;\r\n(function (InteractionType) {\r\n InteractionType[\"Redirect\"] = \"redirect\";\r\n InteractionType[\"Popup\"] = \"popup\";\r\n InteractionType[\"Silent\"] = \"silent\";\r\n InteractionType[\"None\"] = \"none\";\r\n})(InteractionType || (InteractionType = {}));\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nvar InteractionStatus;\r\n(function (InteractionStatus) {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n InteractionStatus[\"Startup\"] = \"startup\";\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n InteractionStatus[\"Login\"] = \"login\";\r\n /**\r\n * Status set when logout call occuring\r\n */\r\n InteractionStatus[\"Logout\"] = \"logout\";\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n InteractionStatus[\"AcquireToken\"] = \"acquireToken\";\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n InteractionStatus[\"SsoSilent\"] = \"ssoSilent\";\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n InteractionStatus[\"HandleRedirect\"] = \"handleRedirect\";\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n InteractionStatus[\"None\"] = \"none\";\r\n})(InteractionStatus || (InteractionStatus = {}));\r\nvar DEFAULT_REQUEST = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nvar KEY_FORMAT_JWK = \"jwk\";\r\n// Supported wrapper SKUs\r\nvar WrapperSKU;\r\n(function (WrapperSKU) {\r\n WrapperSKU[\"React\"] = \"@azure/msal-react\";\r\n WrapperSKU[\"Angular\"] = \"@azure/msal-angular\";\r\n})(WrapperSKU || (WrapperSKU = {}));\r\n// DatabaseStorage Constants\r\nvar DB_NAME = \"msal.db\";\r\nvar DB_VERSION = 1;\r\nvar DB_TABLE_NAME = DB_NAME + \".keys\";\r\nvar CacheLookupPolicy;\r\n(function (CacheLookupPolicy) {\r\n /*\r\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired\r\n * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token\r\n * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"Default\"] = 0] = \"Default\";\r\n /*\r\n * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or\r\n * refresh tokens.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"AccessToken\"] = 1] = \"AccessToken\";\r\n /*\r\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or\r\n * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it\r\n * will not be renewed and acquireTokenSilent will fail.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"AccessTokenAndRefreshToken\"] = 2] = \"AccessTokenAndRefreshToken\";\r\n /*\r\n * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to\r\n * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be\r\n * renewed and acquireTokenSilent will fail.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"RefreshToken\"] = 3] = \"RefreshToken\";\r\n /*\r\n * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the\r\n * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to\r\n * setting \"forceRefresh: true\".\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"RefreshTokenAndNetwork\"] = 4] = \"RefreshTokenAndNetwork\";\r\n /*\r\n * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will\r\n * always fail if 3rd party cookies are blocked by the browser.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"Skip\"] = 5] = \"Skip\";\r\n})(CacheLookupPolicy || (CacheLookupPolicy = {}));\n\nexport { ApiId, BrowserCacheLocation, BrowserConstants, CacheLookupPolicy, DB_NAME, DB_TABLE_NAME, DB_VERSION, DEFAULT_REQUEST, HTTP_REQUEST_TYPE, InMemoryCacheKeys, InteractionStatus, InteractionType, KEY_FORMAT_JWK, NativeConstants, NativeExtensionMethod, StaticCacheKeys, TemporaryCacheKeys, WrapperSKU };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\r\n */\r\nvar FetchClient = /** @class */ (function () {\r\n function FetchClient() {\r\n }\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n FetchClient.prototype.sendGetRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n })];\r\n case 1:\r\n response = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e_1, url);\r\n }\r\n else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n _a = {\r\n headers: this.getHeaderDict(response.headers)\r\n };\r\n return [4 /*yield*/, response.json()];\r\n case 4: return [2 /*return*/, (_a.body = (_b.sent()),\r\n _a.status = response.status,\r\n _a)];\r\n case 5:\r\n _b.sent();\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n FetchClient.prototype.sendPostRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqBody, response, e_3, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n reqBody = (options && options.body) || Constants.EMPTY_STRING;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n })];\r\n case 2:\r\n response = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _b.sent();\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e_3, url);\r\n }\r\n else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n case 4:\r\n _b.trys.push([4, 6, , 7]);\r\n _a = {\r\n headers: this.getHeaderDict(response.headers)\r\n };\r\n return [4 /*yield*/, response.json()];\r\n case 5: return [2 /*return*/, (_a.body = (_b.sent()),\r\n _a.status = response.status,\r\n _a)];\r\n case 6:\r\n _b.sent();\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders\r\n */\r\n FetchClient.prototype.getFetchHeaders = function (options) {\r\n var headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n var optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach(function (key) {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n };\r\n FetchClient.prototype.getHeaderDict = function (headers) {\r\n var headerDict = {};\r\n headers.forEach(function (value, key) {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n };\r\n return FetchClient;\r\n}());\n\nexport { FetchClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nvar XhrClient = /** @class */ (function () {\r\n function XhrClient() {\r\n }\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n XhrClient.prototype.sendGetRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options)];\r\n });\r\n });\r\n };\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n XhrClient.prototype.sendPostRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options)];\r\n });\r\n });\r\n };\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url\r\n * @param method\r\n * @param options\r\n */\r\n XhrClient.prototype.sendRequestAsync = function (url, method, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n _this.setXhrHeaders(xhr, options);\r\n xhr.onload = function () {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n else {\r\n reject(BrowserAuthError.createGetRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n }\r\n try {\r\n var jsonResponse = JSON.parse(xhr.responseText);\r\n var networkResponse = {\r\n headers: _this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n }\r\n catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n else {\r\n reject(BrowserAuthError.createGetRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n }\r\n else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n }\r\n else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n }\r\n else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n };\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr\r\n * @param options\r\n */\r\n XhrClient.prototype.setXhrHeaders = function (xhr, options) {\r\n if (options && options.headers) {\r\n var headers_1 = options.headers;\r\n Object.keys(headers_1).forEach(function (key) {\r\n xhr.setRequestHeader(key, headers_1[key]);\r\n });\r\n }\r\n };\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n *\r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr\r\n */\r\n XhrClient.prototype.getHeaderDict = function (xhr) {\r\n var headerString = xhr.getAllResponseHeaders();\r\n var headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n var headerDict = {};\r\n headerArr.forEach(function (value) {\r\n var parts = value.split(\": \");\r\n var headerName = parts.shift();\r\n var headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n return headerDict;\r\n };\r\n return XhrClient;\r\n}());\n\nexport { XhrClient };\n","/*! @azure/msal-browser v2.38.3 2023-10-27 */\n'use strict';\nimport { Constants, UrlString } from '@azure/msal-common';\nimport { FetchClient } from '../network/FetchClient.js';\nimport { XhrClient } from '../network/XhrClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserConstants, InteractionType } from './BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nvar BrowserUtils = /** @class */ (function () {\r\n function BrowserUtils() {\r\n }\r\n // #region Window Navigation and URL management\r\n /**\r\n * Clears hash from window url.\r\n */\r\n BrowserUtils.clearHash = function (contentWindow) {\r\n // Office.js sets history.replaceState to null\r\n contentWindow.location.hash = Constants.EMPTY_STRING;\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, \"\" + contentWindow.location.origin + contentWindow.location.pathname + contentWindow.location.search);\r\n }\r\n };\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n BrowserUtils.replaceHash = function (url) {\r\n var urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n BrowserUtils.isInIframe = function () {\r\n return window.parent !== window;\r\n };\r\n /**\r\n * Returns boolean of whether or not the current window is a popup opened by msal\r\n */\r\n BrowserUtils.isInPopup = function () {\r\n return typeof window !== \"undefined\" && !!window.opener &&\r\n window.opener !== window &&\r\n typeof window.name === \"string\" &&\r\n window.name.indexOf(BrowserConstants.POPUP_NAME_PREFIX + \".\") === 0;\r\n };\r\n // #endregion\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n BrowserUtils.getCurrentUri = function () {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n };\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n BrowserUtils.getHomepage = function () {\r\n var currentUrl = new UrlString(window.location.href);\r\n var urlComponents = currentUrl.getUrlComponents();\r\n return urlComponents.Protocol + \"//\" + urlComponents.HostNameAndPort + \"/\";\r\n };\r\n /**\r\n * Returns best compatible network client object.\r\n */\r\n BrowserUtils.getBrowserNetworkClient = function () {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n }\r\n else {\r\n return new XhrClient();\r\n }\r\n };\r\n /**\r\n * Throws error if we have completed an auth and are\r\n * attempting another auth request inside an iframe.\r\n */\r\n BrowserUtils.blockReloadInHiddenIframes = function () {\r\n var isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n };\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n BrowserUtils.blockRedirectInIframe = function (interactionType, allowRedirectInIframe) {\r\n var isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n };\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n BrowserUtils.blockAcquireTokenInPopups = function () {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (BrowserUtils.isInPopup()) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n };\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n BrowserUtils.blockNonBrowserEnvironment = function (isBrowserEnvironment) {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n };\r\n /**\r\n * Throws error if native brokering is enabled but initialize hasn't been called\r\n * @param allowNativeBroker\r\n * @param initialized\r\n */\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized = function (allowNativeBroker, initialized) {\r\n if (allowNativeBroker && !initialized) {\r\n throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\r\n }\r\n };\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n BrowserUtils.detectIEOrEdge = function () {\r\n var ua = window.navigator.userAgent;\r\n var msie = ua.indexOf(\"MSIE \");\r\n var msie11 = ua.indexOf(\"Trident/\");\r\n var msedge = ua.indexOf(\"Edge/\");\r\n var isIE = msie > 0 || msie11 > 0;\r\n var isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n };\r\n return BrowserUtils;\r\n}());\n\nexport { BrowserUtils };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __spreadArrays };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\"\r\n }\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nvar AuthError = /** @class */ (function (_super) {\r\n __extends(AuthError, _super);\r\n function AuthError(errorCode, errorMessage, suberror) {\r\n var _this = this;\r\n var errorString = errorMessage ? errorCode + \": \" + errorMessage : errorCode;\r\n _this = _super.call(this, errorString) || this;\r\n Object.setPrototypeOf(_this, AuthError.prototype);\r\n _this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n _this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n _this.subError = suberror || Constants.EMPTY_STRING;\r\n _this.name = \"AuthError\";\r\n return _this;\r\n }\r\n AuthError.prototype.setCorrelationId = function (correlationId) {\r\n this.correlationId = correlationId;\r\n };\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n AuthError.createUnexpectedError = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, AuthErrorMessage.unexpectedError.desc + \": \" + errDesc);\r\n };\r\n /**\r\n * Creates an error for post request failures.\r\n * @param errDesc\r\n * @returns\r\n */\r\n AuthError.createPostRequestFailed = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.postRequestFailed.code, AuthErrorMessage.postRequestFailed.desc + \": \" + errDesc);\r\n };\r\n return AuthError;\r\n}(Error));\n\nexport { AuthError, AuthErrorMessage };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n authTimeNotFoundError: {\r\n code: \"auth_time_not_found\",\r\n desc: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\"\r\n },\r\n maxAgeTranspiredError: {\r\n code: \"max_age_transpired\",\r\n desc: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n DeviceCodeUnknownError: {\r\n code: \"device_code_unknown_error\",\r\n desc: \"Device code stopped polling for unknown reasons.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Server response does not contain an authorization code to proceed\"\r\n },\r\n noAzureRegionDetected: {\r\n code: \"no_azure_region_detected\",\r\n desc: \"No azure region was detected and no fallback was made available\"\r\n },\r\n accessTokenEntityNullError: {\r\n code: \"access_token_entity_null\",\r\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: \"binding_key_not_removed\",\r\n desc: \"Could not remove the credential's binding key from storage.\"\r\n },\r\n logoutNotSupported: {\r\n code: \"end_session_endpoint_not_supported\",\r\n desc: \"Provided authority does not support logout.\"\r\n },\r\n keyIdMissing: {\r\n code: \"key_id_missing\",\r\n desc: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n userCanceledError: {\r\n code: \"user_canceled\",\r\n desc: \"User canceled the flow.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar ClientAuthError = /** @class */ (function (_super) {\r\n __extends(ClientAuthError, _super);\r\n function ClientAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(_this, ClientAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n ClientAuthError.createClientInfoDecodingError = function (caughtError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code, ClientAuthErrorMessage.clientInfoDecodingError.desc + \" Failed with error: \" + caughtError);\r\n };\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n ClientAuthError.createClientInfoEmptyError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code, \"\" + ClientAuthErrorMessage.clientInfoEmptyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n ClientAuthError.createTokenParsingError = function (caughtExtractionError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code, ClientAuthErrorMessage.tokenParsingError.desc + \" Failed with error: \" + caughtExtractionError);\r\n };\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n ClientAuthError.createTokenNullOrEmptyError = function (invalidRawTokenString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code, ClientAuthErrorMessage.nullOrEmptyToken.desc + \" Raw Token Value: \" + invalidRawTokenString);\r\n };\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n ClientAuthError.createEndpointDiscoveryIncompleteError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code, ClientAuthErrorMessage.endpointResolutionError.desc + \" Detail: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n ClientAuthError.createNetworkError = function (endpoint, errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code, ClientAuthErrorMessage.networkError.desc + \" | Fetch client threw: \" + errDetail + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n ClientAuthError.createUnableToGetOpenidConfigError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code, ClientAuthErrorMessage.unableToGetOpenidConfigError.desc + \" Attempted to retrieve endpoints from: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n ClientAuthError.createHashNotDeserializedError = function (hashParamObj) {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code, ClientAuthErrorMessage.hashNotDeserialized.desc + \" Given Object: \" + hashParamObj);\r\n };\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n ClientAuthError.createInvalidStateError = function (invalidState, errorString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code, ClientAuthErrorMessage.invalidStateError.desc + \" Invalid State: \" + invalidState + \", Root Err: \" + errorString);\r\n };\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n ClientAuthError.createStateMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code, ClientAuthErrorMessage.stateMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n ClientAuthError.createStateNotFoundError = function (missingState) {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code, ClientAuthErrorMessage.stateNotFoundError.desc + \": \" + missingState);\r\n };\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n ClientAuthError.createNonceMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code, ClientAuthErrorMessage.nonceMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when max_age was provided in the request, but auth_time is not in the token claims\r\n * @param missingNonce\r\n */\r\n ClientAuthError.createAuthTimeNotFoundError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.authTimeNotFoundError.code, ClientAuthErrorMessage.authTimeNotFoundError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when too much time has elapsed since the last end-user authentication\r\n */\r\n ClientAuthError.createMaxAgeTranspiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.maxAgeTranspiredError.code, ClientAuthErrorMessage.maxAgeTranspiredError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n ClientAuthError.createNonceNotFoundError = function (missingNonce) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code, ClientAuthErrorMessage.nonceNotFoundError.desc + \": \" + missingNonce);\r\n };\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n ClientAuthError.createMultipleMatchingTokensInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code, ClientAuthErrorMessage.multipleMatchingTokens.desc + \".\");\r\n };\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n ClientAuthError.createMultipleMatchingAccountsInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code, ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n };\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n ClientAuthError.createMultipleMatchingAppMetadataInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code, ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n };\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n ClientAuthError.createTokenRequestCannotBeMadeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createAppendEmptyScopeToSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, ClientAuthErrorMessage.appendEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createRemoveEmptyScopeFromSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, ClientAuthErrorMessage.removeEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n ClientAuthError.createAppendScopeSetError = function (appendError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, ClientAuthErrorMessage.appendScopeSetError.desc + \" Detail Error: \" + appendError);\r\n };\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n ClientAuthError.createEmptyInputScopeSetError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, \"\" + ClientAuthErrorMessage.emptyInputScopeSetError.desc);\r\n };\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n ClientAuthError.createDeviceCodeCancelledError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, \"\" + ClientAuthErrorMessage.DeviceCodePollingCancelled.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeExpiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, \"\" + ClientAuthErrorMessage.DeviceCodeExpired.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeUnknownError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, \"\" + ClientAuthErrorMessage.DeviceCodeUnknownError.desc);\r\n };\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n ClientAuthError.createNoAccountInSilentRequestError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, \"\" + ClientAuthErrorMessage.NoAccountInSilentRequest.desc);\r\n };\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n ClientAuthError.createNullOrUndefinedCacheRecord = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n };\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n ClientAuthError.createInvalidCacheEnvironmentError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n };\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n ClientAuthError.createNoAccountFoundError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n };\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n ClientAuthError.createCachePluginError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, \"\" + ClientAuthErrorMessage.CachePluginError.desc);\r\n };\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n ClientAuthError.createNoCryptoObjectError = function (operationName) {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, \"\" + ClientAuthErrorMessage.noCryptoObj.desc + operationName);\r\n };\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n ClientAuthError.createInvalidCacheTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, \"\" + ClientAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n ClientAuthError.createUnexpectedAccountTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, \"\" + ClientAuthErrorMessage.unexpectedAccountType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n ClientAuthError.createUnexpectedCredentialTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, \"\" + ClientAuthErrorMessage.unexpectedCredentialType.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidAssertionError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, \"\" + ClientAuthErrorMessage.invalidAssertion.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidCredentialError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, \"\" + ClientAuthErrorMessage.invalidClientCredential.desc);\r\n };\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n ClientAuthError.createRefreshRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n };\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n ClientAuthError.createUserTimeoutReachedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n };\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n ClientAuthError.createTokenClaimsRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n };\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n ClientAuthError.createNoAuthCodeInServerResponseError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n };\r\n ClientAuthError.createBindingKeyNotRemovedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\r\n };\r\n /**\r\n * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\r\n */\r\n ClientAuthError.createLogoutNotSupportedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\r\n };\r\n /**\r\n * Create an error when kid attribute is missing from a PoP token's cache record\r\n */\r\n ClientAuthError.createKeyIdMissingError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.keyIdMissing.code, ClientAuthErrorMessage.keyIdMissing.desc);\r\n };\r\n /**\r\n * Create an error when the client does not have network connectivity\r\n */\r\n ClientAuthError.createNoNetworkConnectivityError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noNetworkConnectivity.code, ClientAuthErrorMessage.noNetworkConnectivity.desc);\r\n };\r\n /**\r\n * Create an error when the user cancels the flow\r\n */\r\n ClientAuthError.createUserCanceledError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userCanceledError.code, ClientAuthErrorMessage.userCanceledError.desc);\r\n };\r\n return ClientAuthError;\r\n}(AuthError));\n\nexport { ClientAuthError, ClientAuthErrorMessage };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { ClientAuthError } from './ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create', 'none' and 'no_session'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n },\r\n invalidAzureCloudInstance: {\r\n code: \"invalid_azure_cloud_instance\",\r\n desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\r\n },\r\n missingSshJwk: {\r\n code: \"missing_ssh_jwk\",\r\n desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\r\n },\r\n missingSshKid: {\r\n code: \"missing_ssh_kid\",\r\n desc: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\"\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: \"missing_nonce_authentication_header\",\r\n desc: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\"\r\n },\r\n invalidAuthenticationHeader: {\r\n code: \"invalid_authentication_header\",\r\n desc: \"Invalid authentication header provided\"\r\n },\r\n authorityMismatch: {\r\n code: \"authority_mismatch\",\r\n desc: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nvar ClientConfigurationError = /** @class */ (function (_super) {\r\n __extends(ClientConfigurationError, _super);\r\n function ClientConfigurationError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(_this, ClientConfigurationError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code, ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code, ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n ClientConfigurationError.createClaimsRequestParsingError = function (claimsRequestParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code, ClientConfigurationErrorMessage.claimsRequestParsingError.desc + \" Given value: \" + claimsRequestParseError);\r\n };\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createInsecureAuthorityUriError = function (urlString) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code, ClientConfigurationErrorMessage.authorityUriInsecure.desc + \" Given URI: \" + urlString);\r\n };\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlParseError = function (urlParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code, ClientConfigurationErrorMessage.urlParseError.desc + \" Given Error: \" + urlParseError);\r\n };\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code, ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n };\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n ClientConfigurationError.createEmptyScopesArrayError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code, \"\" + ClientConfigurationErrorMessage.emptyScopesError.desc);\r\n };\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n ClientConfigurationError.createClientIdSingleScopeError = function (inputScopes) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code, ClientConfigurationErrorMessage.clientIdSingleScopeError.desc + \" Given Scopes: \" + inputScopes);\r\n };\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n ClientConfigurationError.createInvalidPromptError = function (promptValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code, ClientConfigurationErrorMessage.invalidPrompt.desc + \" Given value: \" + promptValue);\r\n };\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n ClientConfigurationError.createInvalidClaimsRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code, ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyLogoutRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.logoutRequestEmptyError.code, ClientConfigurationErrorMessage.logoutRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyTokenRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.tokenRequestEmptyError.code, ClientConfigurationErrorMessage.tokenRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeMethodError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code, ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc);\r\n };\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeParamsError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeParams.code, ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidCloudDiscoveryMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code, ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidAuthorityMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code, ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n };\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n ClientConfigurationError.createUntrustedAuthorityError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code, ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n };\r\n /**\r\n * Throws error when the AzureCloudInstance is set to an invalid value\r\n */\r\n ClientConfigurationError.createInvalidAzureCloudInstanceError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code, ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\r\n };\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\r\n */\r\n ClientConfigurationError.createMissingSshJwkError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code, ClientConfigurationErrorMessage.missingSshJwk.desc);\r\n };\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\r\n */\r\n ClientConfigurationError.createMissingSshKidError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code, ClientConfigurationErrorMessage.missingSshKid.desc);\r\n };\r\n /**\r\n * Throws error when provided headers don't contain a header that a server nonce can be extracted from\r\n */\r\n ClientConfigurationError.createMissingNonceAuthenticationHeadersError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code, ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\r\n };\r\n /**\r\n * Throws error when a provided header is invalid in any way\r\n */\r\n ClientConfigurationError.createInvalidAuthenticationHeaderError = function (invalidHeaderName, details) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code, ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc + \". Invalid header: \" + invalidHeaderName + \". Details: \" + details);\r\n };\r\n /**\r\n * Create an error when the authority provided in request does not match authority provided in account or MSAL.js configuration.\r\n */\r\n ClientConfigurationError.createAuthorityMismatchError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityMismatch.code, ClientConfigurationErrorMessage.authorityMismatch.desc);\r\n };\r\n return ClientConfigurationError;\r\n}(ClientAuthError));\n\nexport { ClientConfigurationError, ClientConfigurationErrorMessage };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { AADAuthorityConstants, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nvar UrlString = /** @class */ (function () {\r\n function UrlString(url) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n Object.defineProperty(UrlString.prototype, \"urlString\", {\r\n get: function () {\r\n return this._urlString;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n UrlString.canonicalizeUri = function (url) {\r\n if (url) {\r\n var lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n };\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n UrlString.prototype.validateAsUri = function () {\r\n // Attempts to parse url for uri components\r\n var components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n };\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n UrlString.appendQueryString = function (url, queryString) {\r\n if (StringUtils.isEmpty(queryString)) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0 ? url + \"?\" + queryString : url + \"&\" + queryString;\r\n };\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n UrlString.removeHashFromUrl = function (url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n };\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n UrlString.prototype.replaceTenantPath = function (tenantId) {\r\n var urlObject = this.getUrlComponents();\r\n var pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n };\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n UrlString.prototype.getHash = function () {\r\n return UrlString.parseHash(this.urlString);\r\n };\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n UrlString.prototype.getUrlComponents = function () {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n var regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n var match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Url component object\r\n var urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n };\r\n var pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter(function (val) { return val && val.length > 0; }); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n };\r\n UrlString.getDomainFromUrl = function (url) {\r\n var regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n var match = url.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + url);\r\n }\r\n return match[2];\r\n };\r\n UrlString.getAbsoluteUrl = function (relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n var url = new UrlString(baseUrl);\r\n var baseComponents = url.getUrlComponents();\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n return relativeUrl;\r\n };\r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\n UrlString.parseHash = function (hashString) {\r\n var hashIndex1 = hashString.indexOf(\"#\");\r\n var hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n }\r\n else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Parses query string from given string. Returns empty string if no query symbol is found.\r\n * @param queryString\r\n */\r\n UrlString.parseQueryString = function (queryString) {\r\n var queryIndex1 = queryString.indexOf(\"?\");\r\n var queryIndex2 = queryString.indexOf(\"/?\");\r\n if (queryIndex2 > -1) {\r\n return queryString.substring(queryIndex2 + 2);\r\n }\r\n else if (queryIndex1 > -1) {\r\n return queryString.substring(queryIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n UrlString.constructAuthorityUriFromObject = function (urlObject) {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n };\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n UrlString.getDeserializedHash = function (hash) {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n var parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n var deserializedHash = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n };\r\n /**\r\n * Returns URL query string as server auth code response object.\r\n */\r\n UrlString.getDeserializedQueryString = function (query) {\r\n // Check if given query is empty\r\n if (StringUtils.isEmpty(query)) {\r\n return {};\r\n }\r\n // Strip the ? symbol if present\r\n var parsedQueryString = UrlString.parseQueryString(query);\r\n // If ? symbol was not present, above will return empty string, so give original query value\r\n var deserializedQueryString = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedQueryString) ? query : parsedQueryString);\r\n // Check if deserialization didn't work\r\n if (!deserializedQueryString) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedQueryString));\r\n }\r\n return deserializedQueryString;\r\n };\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n UrlString.hashContainsKnownProperties = function (hash) {\r\n if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\r\n // Hash doesn't contain key/value pairs\r\n return false;\r\n }\r\n var parameters = UrlString.getDeserializedHash(hash);\r\n return !!(parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state);\r\n };\r\n return UrlString;\r\n}());\n\nexport { UrlString };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n REGIONAL_AUTH_NON_MSI_QUERY_STRING: \"allowestsrnonmsi=true\",\r\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nvar OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\nvar OIDC_SCOPES = __spreadArrays(OIDC_DEFAULT_SCOPES, [\r\n Constants.EMAIL_SCOPE\r\n]);\r\n/**\r\n * Request header names\r\n */\r\nvar HeaderNames;\r\n(function (HeaderNames) {\r\n HeaderNames[\"CONTENT_TYPE\"] = \"Content-Type\";\r\n HeaderNames[\"RETRY_AFTER\"] = \"Retry-After\";\r\n HeaderNames[\"CCS_HEADER\"] = \"X-AnchorMailbox\";\r\n HeaderNames[\"WWWAuthenticate\"] = \"WWW-Authenticate\";\r\n HeaderNames[\"AuthenticationInfo\"] = \"Authentication-Info\";\r\n HeaderNames[\"X_MS_REQUEST_ID\"] = \"x-ms-request-id\";\r\n HeaderNames[\"X_MS_HTTP_VERSION\"] = \"x-ms-httpver\";\r\n})(HeaderNames || (HeaderNames = {}));\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nvar PersistentCacheKeys;\r\n(function (PersistentCacheKeys) {\r\n PersistentCacheKeys[\"ID_TOKEN\"] = \"idtoken\";\r\n PersistentCacheKeys[\"CLIENT_INFO\"] = \"client.info\";\r\n PersistentCacheKeys[\"ADAL_ID_TOKEN\"] = \"adal.idtoken\";\r\n PersistentCacheKeys[\"ERROR\"] = \"error\";\r\n PersistentCacheKeys[\"ERROR_DESC\"] = \"error.description\";\r\n PersistentCacheKeys[\"ACTIVE_ACCOUNT\"] = \"active-account\";\r\n PersistentCacheKeys[\"ACTIVE_ACCOUNT_FILTERS\"] = \"active-account-filters\"; // new cache entry for active_account for a more robust version for browser\r\n})(PersistentCacheKeys || (PersistentCacheKeys = {}));\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nvar AADAuthorityConstants;\r\n(function (AADAuthorityConstants) {\r\n AADAuthorityConstants[\"COMMON\"] = \"common\";\r\n AADAuthorityConstants[\"ORGANIZATIONS\"] = \"organizations\";\r\n AADAuthorityConstants[\"CONSUMERS\"] = \"consumers\";\r\n})(AADAuthorityConstants || (AADAuthorityConstants = {}));\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nvar AADServerParamKeys;\r\n(function (AADServerParamKeys) {\r\n AADServerParamKeys[\"CLIENT_ID\"] = \"client_id\";\r\n AADServerParamKeys[\"REDIRECT_URI\"] = \"redirect_uri\";\r\n AADServerParamKeys[\"RESPONSE_TYPE\"] = \"response_type\";\r\n AADServerParamKeys[\"RESPONSE_MODE\"] = \"response_mode\";\r\n AADServerParamKeys[\"GRANT_TYPE\"] = \"grant_type\";\r\n AADServerParamKeys[\"CLAIMS\"] = \"claims\";\r\n AADServerParamKeys[\"SCOPE\"] = \"scope\";\r\n AADServerParamKeys[\"ERROR\"] = \"error\";\r\n AADServerParamKeys[\"ERROR_DESCRIPTION\"] = \"error_description\";\r\n AADServerParamKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n AADServerParamKeys[\"ID_TOKEN\"] = \"id_token\";\r\n AADServerParamKeys[\"REFRESH_TOKEN\"] = \"refresh_token\";\r\n AADServerParamKeys[\"EXPIRES_IN\"] = \"expires_in\";\r\n AADServerParamKeys[\"STATE\"] = \"state\";\r\n AADServerParamKeys[\"NONCE\"] = \"nonce\";\r\n AADServerParamKeys[\"PROMPT\"] = \"prompt\";\r\n AADServerParamKeys[\"SESSION_STATE\"] = \"session_state\";\r\n AADServerParamKeys[\"CLIENT_INFO\"] = \"client_info\";\r\n AADServerParamKeys[\"CODE\"] = \"code\";\r\n AADServerParamKeys[\"CODE_CHALLENGE\"] = \"code_challenge\";\r\n AADServerParamKeys[\"CODE_CHALLENGE_METHOD\"] = \"code_challenge_method\";\r\n AADServerParamKeys[\"CODE_VERIFIER\"] = \"code_verifier\";\r\n AADServerParamKeys[\"CLIENT_REQUEST_ID\"] = \"client-request-id\";\r\n AADServerParamKeys[\"X_CLIENT_SKU\"] = \"x-client-SKU\";\r\n AADServerParamKeys[\"X_CLIENT_VER\"] = \"x-client-VER\";\r\n AADServerParamKeys[\"X_CLIENT_OS\"] = \"x-client-OS\";\r\n AADServerParamKeys[\"X_CLIENT_CPU\"] = \"x-client-CPU\";\r\n AADServerParamKeys[\"X_CLIENT_CURR_TELEM\"] = \"x-client-current-telemetry\";\r\n AADServerParamKeys[\"X_CLIENT_LAST_TELEM\"] = \"x-client-last-telemetry\";\r\n AADServerParamKeys[\"X_MS_LIB_CAPABILITY\"] = \"x-ms-lib-capability\";\r\n AADServerParamKeys[\"X_APP_NAME\"] = \"x-app-name\";\r\n AADServerParamKeys[\"X_APP_VER\"] = \"x-app-ver\";\r\n AADServerParamKeys[\"POST_LOGOUT_URI\"] = \"post_logout_redirect_uri\";\r\n AADServerParamKeys[\"ID_TOKEN_HINT\"] = \"id_token_hint\";\r\n AADServerParamKeys[\"DEVICE_CODE\"] = \"device_code\";\r\n AADServerParamKeys[\"CLIENT_SECRET\"] = \"client_secret\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION\"] = \"client_assertion\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION_TYPE\"] = \"client_assertion_type\";\r\n AADServerParamKeys[\"TOKEN_TYPE\"] = \"token_type\";\r\n AADServerParamKeys[\"REQ_CNF\"] = \"req_cnf\";\r\n AADServerParamKeys[\"OBO_ASSERTION\"] = \"assertion\";\r\n AADServerParamKeys[\"REQUESTED_TOKEN_USE\"] = \"requested_token_use\";\r\n AADServerParamKeys[\"ON_BEHALF_OF\"] = \"on_behalf_of\";\r\n AADServerParamKeys[\"FOCI\"] = \"foci\";\r\n AADServerParamKeys[\"CCS_HEADER\"] = \"X-AnchorMailbox\";\r\n AADServerParamKeys[\"RETURN_SPA_CODE\"] = \"return_spa_code\";\r\n AADServerParamKeys[\"NATIVE_BROKER\"] = \"nativebroker\";\r\n AADServerParamKeys[\"LOGOUT_HINT\"] = \"logout_hint\";\r\n})(AADServerParamKeys || (AADServerParamKeys = {}));\r\n/**\r\n * Claims request keys\r\n */\r\nvar ClaimsRequestKeys;\r\n(function (ClaimsRequestKeys) {\r\n ClaimsRequestKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n ClaimsRequestKeys[\"XMS_CC\"] = \"xms_cc\";\r\n})(ClaimsRequestKeys || (ClaimsRequestKeys = {}));\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nvar PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\"\r\n};\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nvar SSOTypes;\r\n(function (SSOTypes) {\r\n SSOTypes[\"ACCOUNT\"] = \"account\";\r\n SSOTypes[\"SID\"] = \"sid\";\r\n SSOTypes[\"LOGIN_HINT\"] = \"login_hint\";\r\n SSOTypes[\"ID_TOKEN\"] = \"id_token\";\r\n SSOTypes[\"DOMAIN_HINT\"] = \"domain_hint\";\r\n SSOTypes[\"ORGANIZATIONS\"] = \"organizations\";\r\n SSOTypes[\"CONSUMERS\"] = \"consumers\";\r\n SSOTypes[\"ACCOUNT_ID\"] = \"accountIdentifier\";\r\n SSOTypes[\"HOMEACCOUNT_ID\"] = \"homeAccountIdentifier\";\r\n})(SSOTypes || (SSOTypes = {}));\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nvar CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nvar ResponseMode;\r\n(function (ResponseMode) {\r\n ResponseMode[\"QUERY\"] = \"query\";\r\n ResponseMode[\"FRAGMENT\"] = \"fragment\";\r\n ResponseMode[\"FORM_POST\"] = \"form_post\";\r\n})(ResponseMode || (ResponseMode = {}));\r\n/**\r\n * allowed grant_type\r\n */\r\nvar GrantType;\r\n(function (GrantType) {\r\n GrantType[\"IMPLICIT_GRANT\"] = \"implicit\";\r\n GrantType[\"AUTHORIZATION_CODE_GRANT\"] = \"authorization_code\";\r\n GrantType[\"CLIENT_CREDENTIALS_GRANT\"] = \"client_credentials\";\r\n GrantType[\"RESOURCE_OWNER_PASSWORD_GRANT\"] = \"password\";\r\n GrantType[\"REFRESH_TOKEN_GRANT\"] = \"refresh_token\";\r\n GrantType[\"DEVICE_CODE_GRANT\"] = \"device_code\";\r\n GrantType[\"JWT_BEARER\"] = \"urn:ietf:params:oauth:grant-type:jwt-bearer\";\r\n})(GrantType || (GrantType = {}));\r\n/**\r\n * Account types in Cache\r\n */\r\nvar CacheAccountType;\r\n(function (CacheAccountType) {\r\n CacheAccountType[\"MSSTS_ACCOUNT_TYPE\"] = \"MSSTS\";\r\n CacheAccountType[\"ADFS_ACCOUNT_TYPE\"] = \"ADFS\";\r\n CacheAccountType[\"MSAV1_ACCOUNT_TYPE\"] = \"MSA\";\r\n CacheAccountType[\"GENERIC_ACCOUNT_TYPE\"] = \"Generic\"; // NTLM, Kerberos, FBA, Basic etc\r\n})(CacheAccountType || (CacheAccountType = {}));\r\n/**\r\n * Separators used in cache\r\n */\r\nvar Separators;\r\n(function (Separators) {\r\n Separators[\"CACHE_KEY_SEPARATOR\"] = \"-\";\r\n Separators[\"CLIENT_INFO_SEPARATOR\"] = \".\";\r\n})(Separators || (Separators = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CredentialType;\r\n(function (CredentialType) {\r\n CredentialType[\"ID_TOKEN\"] = \"IdToken\";\r\n CredentialType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CredentialType[\"ACCESS_TOKEN_WITH_AUTH_SCHEME\"] = \"AccessToken_With_AuthScheme\";\r\n CredentialType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n})(CredentialType || (CredentialType = {}));\r\n/**\r\n * Combine all cache types\r\n */\r\nvar CacheType;\r\n(function (CacheType) {\r\n CacheType[CacheType[\"ADFS\"] = 1001] = \"ADFS\";\r\n CacheType[CacheType[\"MSA\"] = 1002] = \"MSA\";\r\n CacheType[CacheType[\"MSSTS\"] = 1003] = \"MSSTS\";\r\n CacheType[CacheType[\"GENERIC\"] = 1004] = \"GENERIC\";\r\n CacheType[CacheType[\"ACCESS_TOKEN\"] = 2001] = \"ACCESS_TOKEN\";\r\n CacheType[CacheType[\"REFRESH_TOKEN\"] = 2002] = \"REFRESH_TOKEN\";\r\n CacheType[CacheType[\"ID_TOKEN\"] = 2003] = \"ID_TOKEN\";\r\n CacheType[CacheType[\"APP_METADATA\"] = 3001] = \"APP_METADATA\";\r\n CacheType[CacheType[\"UNDEFINED\"] = 9999] = \"UNDEFINED\";\r\n})(CacheType || (CacheType = {}));\r\n/**\r\n * More Cache related constants\r\n */\r\nvar APP_METADATA = \"appmetadata\";\r\nvar CLIENT_INFO = \"client_info\";\r\nvar THE_FAMILY_ID = \"1\";\r\nvar AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\nvar AuthorityMetadataSource;\r\n(function (AuthorityMetadataSource) {\r\n AuthorityMetadataSource[\"CONFIG\"] = \"config\";\r\n AuthorityMetadataSource[\"CACHE\"] = \"cache\";\r\n AuthorityMetadataSource[\"NETWORK\"] = \"network\";\r\n AuthorityMetadataSource[\"HARDCODED_VALUES\"] = \"hardcoded_values\";\r\n})(AuthorityMetadataSource || (AuthorityMetadataSource = {}));\r\nvar SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nvar AuthenticationScheme;\r\n(function (AuthenticationScheme) {\r\n AuthenticationScheme[\"BEARER\"] = \"Bearer\";\r\n AuthenticationScheme[\"POP\"] = \"pop\";\r\n AuthenticationScheme[\"SSH\"] = \"ssh-cert\";\r\n})(AuthenticationScheme || (AuthenticationScheme = {}));\r\n/**\r\n * Constants related to throttling\r\n */\r\nvar ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\r\n};\r\nvar Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nvar PasswordGrantConstants;\r\n(function (PasswordGrantConstants) {\r\n PasswordGrantConstants[\"username\"] = \"username\";\r\n PasswordGrantConstants[\"password\"] = \"password\";\r\n})(PasswordGrantConstants || (PasswordGrantConstants = {}));\r\n/**\r\n * Response codes\r\n */\r\nvar ResponseCodes;\r\n(function (ResponseCodes) {\r\n ResponseCodes[ResponseCodes[\"httpSuccess\"] = 200] = \"httpSuccess\";\r\n ResponseCodes[ResponseCodes[\"httpBadRequest\"] = 400] = \"httpBadRequest\";\r\n})(ResponseCodes || (ResponseCodes = {}));\r\n/**\r\n * Region Discovery Sources\r\n */\r\nvar RegionDiscoverySources;\r\n(function (RegionDiscoverySources) {\r\n RegionDiscoverySources[\"FAILED_AUTO_DETECTION\"] = \"1\";\r\n RegionDiscoverySources[\"INTERNAL_CACHE\"] = \"2\";\r\n RegionDiscoverySources[\"ENVIRONMENT_VARIABLE\"] = \"3\";\r\n RegionDiscoverySources[\"IMDS\"] = \"4\";\r\n})(RegionDiscoverySources || (RegionDiscoverySources = {}));\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nvar RegionDiscoveryOutcomes;\r\n(function (RegionDiscoveryOutcomes) {\r\n RegionDiscoveryOutcomes[\"CONFIGURED_MATCHES_DETECTED\"] = \"1\";\r\n RegionDiscoveryOutcomes[\"CONFIGURED_NO_AUTO_DETECTION\"] = \"2\";\r\n RegionDiscoveryOutcomes[\"CONFIGURED_NOT_DETECTED\"] = \"3\";\r\n RegionDiscoveryOutcomes[\"AUTO_DETECTION_REQUESTED_SUCCESSFUL\"] = \"4\";\r\n RegionDiscoveryOutcomes[\"AUTO_DETECTION_REQUESTED_FAILED\"] = \"5\";\r\n})(RegionDiscoveryOutcomes || (RegionDiscoveryOutcomes = {}));\r\nvar CacheOutcome;\r\n(function (CacheOutcome) {\r\n CacheOutcome[\"NO_CACHE_HIT\"] = \"0\";\r\n CacheOutcome[\"FORCE_REFRESH\"] = \"1\";\r\n CacheOutcome[\"NO_CACHED_ACCESS_TOKEN\"] = \"2\";\r\n CacheOutcome[\"CACHED_ACCESS_TOKEN_EXPIRED\"] = \"3\";\r\n CacheOutcome[\"REFRESH_CACHED_ACCESS_TOKEN\"] = \"4\";\r\n CacheOutcome[\"CLAIMS_REQUESTED_CACHE_SKIPPED\"] = \"5\";\r\n})(CacheOutcome || (CacheOutcome = {}));\r\nvar JsonTypes;\r\n(function (JsonTypes) {\r\n JsonTypes[\"Jwt\"] = \"JWT\";\r\n JsonTypes[\"Jwk\"] = \"JWK\";\r\n JsonTypes[\"Pop\"] = \"pop\";\r\n})(JsonTypes || (JsonTypes = {}));\r\nvar ONE_DAY_IN_MS = 86400000;\n\nexport { AADAuthorityConstants, AADServerParamKeys, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, Errors, GrantType, HeaderNames, JsonTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, SSOTypes, Separators, THE_FAMILY_ID, ThrottlingConstants };\n","/*! @azure/msal-common v13.3.1 2023-10-27 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar StringUtils = /** @class */ (function () {\r\n function StringUtils() {\r\n }\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n StringUtils.decodeAuthToken = function (authToken) {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n var tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n var matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(\"Given token is malformed: \" + JSON.stringify(authToken));\r\n }\r\n var crackedToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n };\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n StringUtils.isEmpty = function (str) {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n };\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n StringUtils.isEmptyObj = function (strObj) {\r\n if (strObj && !StringUtils.isEmpty(strObj)) {\r\n try {\r\n var obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n };\r\n StringUtils.startsWith = function (str, search) {\r\n return str.indexOf(search) === 0;\r\n };\r\n StringUtils.endsWith = function (str, search) {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n };\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n StringUtils.queryStringToObject = function (query) {\r\n var obj = {};\r\n var params = query.split(\"&\");\r\n var decode = function (s) { return decodeURIComponent(s.replace(/\\+/g, \" \")); };\r\n params.forEach(function (pair) {\r\n if (pair.trim()) {\r\n var _a = pair.split(/=(.+)/g, 2), key = _a[0], value = _a[1]; // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n };\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n StringUtils.trimArrayEntries = function (arr) {\r\n return arr.map(function (entry) { return entry.trim(); });\r\n };\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n StringUtils.removeEmptyStringsFromArray = function (arr) {\r\n return arr.filter(function (entry) {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n };\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n StringUtils.jsonParseHelper = function (str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n StringUtils.matchPattern = function (pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n var regex = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\r\n return regex.test(input);\r\n };\r\n return StringUtils;\r\n}());\n\nexport { StringUtils };\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}(g.braintree || (g.braintree = {})).dropin = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i -1;\n}\nfunction isFacebook(ua) {\n return ua.indexOf(\"FBAN\") > -1;\n}\nmodule.exports = function isIosSafari(ua) {\n ua = ua || window.navigator.userAgent;\n return (isIos(ua) &&\n isWebkit(ua) &&\n !isIosChrome(ua) &&\n !isIosFirefox(ua) &&\n !isFacebook(ua));\n};\n\n},{\"./is-ios\":19,\"./is-ios-firefox\":14}],17:[function(require,module,exports){\n\"use strict\";\nvar isIos = require(\"./is-ios\");\nvar isIosGoogleSearchApp = require(\"./is-ios-google-search-app\");\nmodule.exports = function isIosWebview(ua) {\n ua = ua || window.navigator.userAgent;\n if (isIos(ua)) {\n // The Google Search iOS app is technically a webview and doesn't support popups.\n if (isIosGoogleSearchApp(ua)) {\n return true;\n }\n // Historically, a webview could be identified by the presence of AppleWebKit and _no_ presence of Safari after.\n return /.+AppleWebKit(?!.*Safari)/i.test(ua);\n }\n return false;\n};\n\n},{\"./is-ios\":19,\"./is-ios-google-search-app\":15}],18:[function(require,module,exports){\n\"use strict\";\nvar isIosWebview = require(\"./is-ios-webview\");\nmodule.exports = function isIosWKWebview(ua, statusBarVisible) {\n statusBarVisible =\n typeof statusBarVisible !== \"undefined\"\n ? statusBarVisible\n : window.statusbar.visible;\n return isIosWebview(ua) && statusBarVisible;\n};\n\n},{\"./is-ios-webview\":17}],19:[function(require,module,exports){\n\"use strict\";\nvar isIpadOS = require(\"./is-ipados\");\nmodule.exports = function isIos(ua, checkIpadOS, document) {\n if (checkIpadOS === void 0) { checkIpadOS = true; }\n ua = ua || window.navigator.userAgent;\n var iOsTest = /iPhone|iPod|iPad/i.test(ua);\n return checkIpadOS ? iOsTest || isIpadOS(ua, document) : iOsTest;\n};\n\n},{\"./is-ipados\":20}],20:[function(require,module,exports){\n\"use strict\";\nmodule.exports = function isIpadOS(ua, document) {\n ua = ua || window.navigator.userAgent;\n document = document || window.document;\n // \"ontouchend\" is used to determine if a browser is on an iPad, otherwise\n // user-agents for iPadOS behave/identify as a desktop browser\n return /Mac|iPad/i.test(ua) && \"ontouchend\" in document;\n};\n\n},{}],21:[function(require,module,exports){\n\"use strict\";\nmodule.exports = function isOpera(ua) {\n ua = ua || window.navigator.userAgent;\n return (ua.indexOf(\"OPR/\") !== -1 ||\n ua.indexOf(\"Opera/\") !== -1 ||\n ua.indexOf(\"OPT/\") !== -1);\n};\n\n},{}],22:[function(require,module,exports){\n\"use strict\";\nmodule.exports = function isSamsungBrowser(ua) {\n ua = ua || window.navigator.userAgent;\n return /SamsungBrowser/i.test(ua);\n};\n\n},{}],23:[function(require,module,exports){\n\"use strict\";\nmodule.exports = function isSilk(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"Silk/\") !== -1;\n};\n\n},{}],24:[function(require,module,exports){\n\"use strict\";\nvar MINIMUM_SUPPORTED_CHROME_IOS_VERSION = 48;\nvar isAndroid = require(\"./is-android\");\nvar isIosFirefox = require(\"./is-ios-firefox\");\nvar isIosWebview = require(\"./is-ios-webview\");\nvar isChrome = require(\"./is-chrome\");\nvar isSamsungBrowser = require(\"./is-samsung\");\nvar isDuckDuckGo = require(\"./is-duckduckgo\");\nfunction isUnsupportedIosChrome(ua) {\n ua = ua || window.navigator.userAgent;\n var match = ua.match(/CriOS\\/(\\d+)\\./);\n if (!match) {\n return false;\n }\n var version = parseInt(match[1], 10);\n return version < MINIMUM_SUPPORTED_CHROME_IOS_VERSION;\n}\nfunction isOperaMini(ua) {\n ua = ua || window.navigator.userAgent;\n return ua.indexOf(\"Opera Mini\") > -1;\n}\nfunction isAndroidWebview(ua) {\n var androidWebviewRegExp = /Version\\/[\\d.]+/i;\n ua = ua || window.navigator.userAgent;\n if (isAndroid(ua)) {\n return (androidWebviewRegExp.test(ua) && !isOperaMini(ua) && !isDuckDuckGo(ua));\n }\n return false;\n}\nfunction isOldSamsungBrowserOrSamsungWebview(ua) {\n return !isChrome(ua) && !isSamsungBrowser(ua) && /samsung/i.test(ua);\n}\nmodule.exports = function supportsPopups(ua) {\n ua = ua || window.navigator.userAgent;\n return !(isIosWebview(ua) ||\n isIosFirefox(ua) ||\n isAndroidWebview(ua) ||\n isOperaMini(ua) ||\n isUnsupportedIosChrome(ua) ||\n isOldSamsungBrowserOrSamsungWebview(ua));\n};\n\n},{\"./is-android\":6,\"./is-chrome\":8,\"./is-duckduckgo\":9,\"./is-ios-firefox\":14,\"./is-ios-webview\":17,\"./is-samsung\":22}],25:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-android\");\n\n},{\"./dist/is-android\":6}],26:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-chrome-os\");\n\n},{\"./dist/is-chrome-os\":7}],27:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-chrome\");\n\n},{\"./dist/is-chrome\":8}],28:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-firefox\");\n\n},{\"./dist/is-firefox\":11}],29:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-ie10\");\n\n},{\"./dist/is-ie10\":12}],30:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-ie9\");\n\n},{\"./dist/is-ie9\":13}],31:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-ios-safari\");\n\n},{\"./dist/is-ios-safari\":16}],32:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-ios-webview\");\n\n},{\"./dist/is-ios-webview\":17}],33:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-ios-wkwebview\");\n\n},{\"./dist/is-ios-wkwebview\":18}],34:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-ios\");\n\n},{\"./dist/is-ios\":19}],35:[function(require,module,exports){\nmodule.exports = require(\"./dist/is-samsung\");\n\n},{\"./dist/is-samsung\":22}],36:[function(require,module,exports){\nmodule.exports = require(\"./dist/supports-popups\");\n\n},{\"./dist/supports-popups\":24}],37:[function(require,module,exports){\n\"use strict\";\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n EventEmitter.prototype.on = function (event, callback) {\n if (this._events[event]) {\n this._events[event].push(callback);\n }\n else {\n this._events[event] = [callback];\n }\n };\n EventEmitter.prototype.off = function (event, callback) {\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return;\n }\n var indexOfCallback = eventCallbacks.indexOf(callback);\n eventCallbacks.splice(indexOfCallback, 1);\n };\n EventEmitter.prototype._emit = function (event) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return;\n }\n eventCallbacks.forEach(function (callback) {\n callback.apply(void 0, args);\n });\n };\n EventEmitter.prototype.hasListener = function (event) {\n var eventCallbacks = this._events[event];\n if (!eventCallbacks) {\n return false;\n }\n return eventCallbacks.length > 0;\n };\n EventEmitter.createChild = function (ChildObject) {\n ChildObject.prototype = Object.create(EventEmitter.prototype, {\n constructor: ChildObject,\n });\n };\n return EventEmitter;\n}());\nmodule.exports = EventEmitter;\n\n},{}],38:[function(require,module,exports){\n\"use strict\";\nvar GlobalPromise = (typeof Promise !== \"undefined\"\n ? Promise // eslint-disable-line no-undef\n : null);\nvar ExtendedPromise = /** @class */ (function () {\n function ExtendedPromise(options) {\n var _this = this;\n if (typeof options === \"function\") {\n this._promise = new ExtendedPromise.Promise(options);\n return;\n }\n this._promise = new ExtendedPromise.Promise(function (resolve, reject) {\n _this._resolveFunction = resolve;\n _this._rejectFunction = reject;\n });\n options = options || {};\n this._onResolve = options.onResolve || ExtendedPromise.defaultOnResolve;\n this._onReject = options.onReject || ExtendedPromise.defaultOnReject;\n if (ExtendedPromise.shouldCatchExceptions(options)) {\n this._promise.catch(function () {\n // prevents unhandled promise rejection warning\n // in the console for extended promises that\n // that catch the error in an asynchronous manner\n });\n }\n this._resetState();\n }\n ExtendedPromise.defaultOnResolve = function (result) {\n return ExtendedPromise.Promise.resolve(result);\n };\n ExtendedPromise.defaultOnReject = function (err) {\n return ExtendedPromise.Promise.reject(err);\n };\n ExtendedPromise.setPromise = function (PromiseClass) {\n ExtendedPromise.Promise = PromiseClass;\n };\n ExtendedPromise.shouldCatchExceptions = function (options) {\n if (options.hasOwnProperty(\"suppressUnhandledPromiseMessage\")) {\n return Boolean(options.suppressUnhandledPromiseMessage);\n }\n return Boolean(ExtendedPromise.suppressUnhandledPromiseMessage);\n };\n // start Promise methods documented in:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#Methods\n ExtendedPromise.all = function (args) {\n return ExtendedPromise.Promise.all(args);\n };\n ExtendedPromise.allSettled = function (args) {\n return ExtendedPromise.Promise.allSettled(args);\n };\n ExtendedPromise.race = function (args) {\n return ExtendedPromise.Promise.race(args);\n };\n ExtendedPromise.reject = function (arg) {\n return ExtendedPromise.Promise.reject(arg);\n };\n ExtendedPromise.resolve = function (arg) {\n return ExtendedPromise.Promise.resolve(arg);\n };\n ExtendedPromise.prototype.then = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = this._promise).then.apply(_a, args);\n };\n ExtendedPromise.prototype.catch = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = this._promise).catch.apply(_a, args);\n };\n ExtendedPromise.prototype.resolve = function (arg) {\n var _this = this;\n if (this.isFulfilled) {\n return this;\n }\n this._setResolved();\n ExtendedPromise.Promise.resolve()\n .then(function () {\n return _this._onResolve(arg);\n })\n .then(function (argForResolveFunction) {\n _this._resolveFunction(argForResolveFunction);\n })\n .catch(function (err) {\n _this._resetState();\n _this.reject(err);\n });\n return this;\n };\n ExtendedPromise.prototype.reject = function (arg) {\n var _this = this;\n if (this.isFulfilled) {\n return this;\n }\n this._setRejected();\n ExtendedPromise.Promise.resolve()\n .then(function () {\n return _this._onReject(arg);\n })\n .then(function (result) {\n _this._setResolved();\n _this._resolveFunction(result);\n })\n .catch(function (err) {\n return _this._rejectFunction(err);\n });\n return this;\n };\n ExtendedPromise.prototype._resetState = function () {\n this.isFulfilled = false;\n this.isResolved = false;\n this.isRejected = false;\n };\n ExtendedPromise.prototype._setResolved = function () {\n this.isFulfilled = true;\n this.isResolved = true;\n this.isRejected = false;\n };\n ExtendedPromise.prototype._setRejected = function () {\n this.isFulfilled = true;\n this.isResolved = false;\n this.isRejected = true;\n };\n ExtendedPromise.Promise = GlobalPromise;\n return ExtendedPromise;\n}());\nmodule.exports = ExtendedPromise;\n\n},{}],39:[function(require,module,exports){\n\"use strict\";\nvar set_attributes_1 = require(\"./lib/set-attributes\");\nvar default_attributes_1 = require(\"./lib/default-attributes\");\nvar assign_1 = require(\"./lib/assign\");\nmodule.exports = function createFrame(options) {\n if (options === void 0) { options = {}; }\n var iframe = document.createElement(\"iframe\");\n var config = assign_1.assign({}, default_attributes_1.defaultAttributes, options);\n if (config.style && typeof config.style !== \"string\") {\n assign_1.assign(iframe.style, config.style);\n delete config.style;\n }\n set_attributes_1.setAttributes(iframe, config);\n if (!iframe.getAttribute(\"id\")) {\n iframe.id = iframe.name;\n }\n return iframe;\n};\n\n},{\"./lib/assign\":40,\"./lib/default-attributes\":41,\"./lib/set-attributes\":42}],40:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assign = void 0;\nfunction assign(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntarget) {\n var objs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n objs[_i - 1] = arguments[_i];\n }\n objs.forEach(function (obj) {\n if (typeof obj !== \"object\") {\n return;\n }\n Object.keys(obj).forEach(function (key) {\n target[key] = obj[key];\n });\n });\n return target;\n}\nexports.assign = assign;\n\n},{}],41:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultAttributes = void 0;\nexports.defaultAttributes = {\n src: \"about:blank\",\n frameBorder: 0,\n allowtransparency: true,\n scrolling: \"no\",\n};\n\n},{}],42:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setAttributes = void 0;\nfunction setAttributes(element, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nattributes) {\n for (var key in attributes) {\n if (attributes.hasOwnProperty(key)) {\n var value = attributes[key];\n if (value == null) {\n element.removeAttribute(key);\n }\n else {\n element.setAttribute(key, value);\n }\n }\n }\n}\nexports.setAttributes = setAttributes;\n\n},{}],43:[function(require,module,exports){\n'use strict';\n\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;\n\n},{}],44:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deferred(fn) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n setTimeout(function () {\n try {\n fn.apply(void 0, args);\n }\n catch (err) {\n /* eslint-disable no-console */\n console.log(\"Error in callback function\");\n console.log(err);\n /* eslint-enable no-console */\n }\n }, 1);\n };\n}\nexports.deferred = deferred;\n\n},{}],45:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction once(fn) {\n var called = false;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n fn.apply(void 0, args);\n }\n };\n}\nexports.once = once;\n\n},{}],46:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable consistent-return */\nfunction promiseOrCallback(promise, callback) {\n if (!callback) {\n return promise;\n }\n promise.then(function (data) { return callback(null, data); }).catch(function (err) { return callback(err); });\n}\nexports.promiseOrCallback = promiseOrCallback;\n\n},{}],47:[function(require,module,exports){\n\"use strict\";\nvar deferred_1 = require(\"./lib/deferred\");\nvar once_1 = require(\"./lib/once\");\nvar promise_or_callback_1 = require(\"./lib/promise-or-callback\");\nfunction wrapPromise(fn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var callback;\n var lastArg = args[args.length - 1];\n if (typeof lastArg === \"function\") {\n callback = args.pop();\n callback = once_1.once(deferred_1.deferred(callback));\n }\n // I know, I know, this looks bad. But it's a quirk of the library that\n // we need to allow passing the this context to the original function\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore: this has an implicit any\n return promise_or_callback_1.promiseOrCallback(fn.apply(this, args), callback); // eslint-disable-line no-invalid-this\n };\n}\nwrapPromise.wrapPrototype = function (target, options) {\n if (options === void 0) { options = {}; }\n var ignoreMethods = options.ignoreMethods || [];\n var includePrivateMethods = options.transformPrivateMethods === true;\n var methods = Object.getOwnPropertyNames(target.prototype).filter(function (method) {\n var isNotPrivateMethod;\n var isNonConstructorFunction = method !== \"constructor\" &&\n typeof target.prototype[method] === \"function\";\n var isNotAnIgnoredMethod = ignoreMethods.indexOf(method) === -1;\n if (includePrivateMethods) {\n isNotPrivateMethod = true;\n }\n else {\n isNotPrivateMethod = method.charAt(0) !== \"_\";\n }\n return (isNonConstructorFunction && isNotPrivateMethod && isNotAnIgnoredMethod);\n });\n methods.forEach(function (method) {\n var original = target.prototype[method];\n target.prototype[method] = wrapPromise(original);\n });\n return target;\n};\nmodule.exports = wrapPromise;\n\n},{\"./lib/deferred\":44,\"./lib/once\":45,\"./lib/promise-or-callback\":46}],48:[function(require,module,exports){\n\"use strict\";\n\nvar BraintreeError = require(\"../lib/braintree-error\");\nvar analytics = require(\"../lib/analytics\");\nvar errors = require(\"./errors\");\nvar methods = require(\"../lib/methods\");\nvar convertMethodsToError = require(\"../lib/convert-methods-to-error\");\nvar wrapPromise = require(\"@braintree/wrap-promise\");\n\n/**\n * @typedef {object} ApplePay~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} details Additional details.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.cardHolderName The name of the card holder.\n * @property {string} details.dpanLastTwo Last two digits of card number.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, always `ApplePayCard`.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * An Apple Pay Payment Authorization Event object.\n * @typedef {object} ApplePayPaymentAuthorizedEvent\n * @external ApplePayPaymentAuthorizedEvent\n * @see {@link https://developer.apple.com/reference/applepayjs/applepaypaymentauthorizedevent ApplePayPaymentAuthorizedEvent}\n */\n\n/**\n * An Apple Pay Payment Request object.\n * @typedef {object} ApplePayPaymentRequest\n * @external ApplePayPaymentRequest\n * @see {@link https://developer.apple.com/reference/applepayjs/1916082-applepay_js_data_types/paymentrequest PaymentRequest}\n */\n\n/**\n * @class\n * @param {object} options Options\n * @description You cannot use this constructor directly. Use {@link module:braintree-web/apple-pay.create|braintree.applePay.create} instead.\n * @classdesc This class represents an Apple Pay component. Instances of this class have methods for validating the merchant server and tokenizing payments.\n */\nfunction ApplePay(options) {\n this._instantiatedWithClient = Boolean(!options.useDeferredClient);\n this._client = options.client;\n this._createPromise = options.createPromise;\n\n if (this._client) {\n this._setMerchantIdentifier();\n }\n}\n\nApplePay.prototype._waitForClient = function () {\n if (this._client) {\n return Promise.resolve();\n }\n\n return this._createPromise.then(\n function (client) {\n this._client = client;\n\n this._setMerchantIdentifier();\n }.bind(this)\n );\n};\n\nApplePay.prototype._setMerchantIdentifier = function () {\n var applePayConfig =\n this._client.getConfiguration().gatewayConfiguration.applePayWeb;\n\n if (!applePayConfig) {\n return;\n }\n /**\n * @name ApplePay#merchantIdentifier\n * @description A special merchant ID which represents the merchant association with Braintree. Required when using `ApplePaySession.canMakePaymentsWithActiveCard`.\n * @example\n * var promise = ApplePaySession.canMakePaymentsWithActiveCard(applePayInstance.merchantIdentifier);\n * promise.then(function (canMakePaymentsWithActiveCard) {\n * if (canMakePaymentsWithActiveCard) {\n * // Set up Apple Pay buttons\n * }\n * });\n */\n Object.defineProperty(this, \"merchantIdentifier\", {\n value: applePayConfig.merchantIdentifier,\n configurable: false,\n writable: false,\n });\n};\n\n/**\n * Merges a payment request with Braintree defaults to return an {external:ApplePayPaymentRequest}.\n *\n * The following properties are assigned to `paymentRequest` if not already defined. Their default values come from the Braintree gateway.\n * - `countryCode`\n * - `currencyCode`\n * - `merchantCapabilities`\n * - `supportedNetworks`\n * @public\n * @param {external:ApplePayPaymentRequest} paymentRequest The payment request details to apply on top of those from Braintree.\n * @returns {external:ApplePayPaymentRequest|Promise} The decorated `paymentRequest` object. If `useDeferredClient` is used along with an `authorization`, this method will return a promise that resolves with the `paymentRequest` object.\n * @example\n * var applePay = require('braintree-web/apple-pay');\n *\n * applePay.create({client: clientInstance}, function (applePayErr, applePayInstance) {\n * if (applePayErr) {\n * // Handle error here\n * return;\n * }\n *\n * var paymentRequest = applePayInstance.createPaymentRequest({\n * total: {\n * label: 'My Company',\n * amount: '19.99'\n * }\n * });\n *\n * var session = new ApplePaySession(3, paymentRequest);\n *\n * // ...\n * @example With deferred client\n * var applePay = require('braintree-web/apple-pay');\n *\n * applePay.create({\n * authorization: 'client-token-or-tokenization-key',\n * useDeferredClient: true\n * }, function (applePayErr, applePayInstance) {\n * if (applePayErr) {\n * // Handle error here\n * return;\n * }\n *\n * applePayInstance.createPaymentRequest({\n * total: {\n * label: 'My Company',\n * amount: '19.99'\n * }\n * }).then(function (paymentRequest) {\n * var session = new ApplePaySession(3, paymentRequest);\n *\n * // ...\n * });\n */\nApplePay.prototype.createPaymentRequest = function (paymentRequest) {\n if (this._instantiatedWithClient) {\n return this._createPaymentRequestSynchronously(paymentRequest);\n }\n\n return this._waitForClient().then(\n function () {\n return this._createPaymentRequestSynchronously(paymentRequest);\n }.bind(this)\n );\n};\n\nApplePay.prototype._createPaymentRequestSynchronously = function (\n paymentRequest\n) {\n var applePay =\n this._client.getConfiguration().gatewayConfiguration.applePayWeb;\n var defaults = {\n countryCode: applePay.countryCode,\n currencyCode: applePay.currencyCode,\n merchantCapabilities: applePay.merchantCapabilities || [\"supports3DS\"],\n supportedNetworks: applePay.supportedNetworks.map(function (network) {\n return network === \"mastercard\" ? \"masterCard\" : network;\n }),\n };\n\n return Object.assign({}, defaults, paymentRequest);\n};\n\n/**\n * Validates your merchant website, as required by `ApplePaySession` before payment can be authorized.\n * @public\n * @param {object} options Options\n * @param {string} options.validationURL The validationURL from an `ApplePayValidateMerchantEvent`.\n * @param {string} options.displayName The canonical name for your store. Use a non-localized name. This parameter should be a UTF-8 string that is a maximum of 64 characters. The system may display this name to the user.\n * @param {callback} [callback] The second argument, data, is the Apple Pay merchant session object. If no callback is provided, `performValidation` returns a promise.\n * Pass the merchant session to your Apple Pay session's `completeMerchantValidation` method.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var applePay = require('braintree-web/apple-pay');\n *\n * applePay.create({client: clientInstance}, function (applePayErr, applePayInstance) {\n * if (applePayErr) {\n * // Handle error here\n * return;\n * }\n *\n * var paymentRequest = applePayInstance.createPaymentRequest({\n * total: {\n * label: 'My Company',\n * amount: '19.99'\n * }\n * });\n * var session = new ApplePaySession(3, paymentRequest);\n *\n * session.onvalidatemerchant = function (event) {\n * applePayInstance.performValidation({\n * validationURL: event.validationURL,\n * displayName: 'My Great Store'\n * }, function (validationErr, validationData) {\n * if (validationErr) {\n * console.error(validationErr);\n * session.abort();\n * return;\n * }\n *\n * session.completeMerchantValidation(validationData);\n * });\n * };\n * });\n */\nApplePay.prototype.performValidation = function (options) {\n var self = this;\n\n if (!options || !options.validationURL) {\n return Promise.reject(\n new BraintreeError(errors.APPLE_PAY_VALIDATION_URL_REQUIRED)\n );\n }\n\n return this._waitForClient()\n .then(function () {\n var applePayWebSession = {\n validationUrl: options.validationURL,\n domainName: options.domainName || window.location.hostname,\n merchantIdentifier:\n options.merchantIdentifier || self.merchantIdentifier,\n };\n\n if (options.displayName != null) {\n applePayWebSession.displayName = options.displayName;\n }\n\n return self._client.request({\n method: \"post\",\n endpoint: \"apple_pay_web/sessions\",\n data: {\n _meta: { source: \"apple-pay\" },\n applePayWebSession: applePayWebSession,\n },\n });\n })\n .then(function (response) {\n analytics.sendEvent(self._client, \"applepay.performValidation.succeeded\");\n\n return Promise.resolve(response);\n })\n .catch(function (err) {\n analytics.sendEvent(self._client, \"applepay.performValidation.failed\");\n\n if (err.code === \"CLIENT_REQUEST_ERROR\") {\n return Promise.reject(\n new BraintreeError({\n type: errors.APPLE_PAY_MERCHANT_VALIDATION_FAILED.type,\n code: errors.APPLE_PAY_MERCHANT_VALIDATION_FAILED.code,\n message: errors.APPLE_PAY_MERCHANT_VALIDATION_FAILED.message,\n details: {\n originalError: err.details.originalError,\n },\n })\n );\n }\n\n return Promise.reject(\n new BraintreeError({\n type: errors.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.type,\n code: errors.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.code,\n message: errors.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n};\n\n/**\n * Tokenizes an Apple Pay payment. This will likely be called in your `ApplePaySession`'s `onpaymentauthorized` callback.\n * @public\n * @param {object} options Options\n * @param {object} options.token The `payment.token` property of an {@link external:ApplePayPaymentAuthorizedEvent}.\n * @param {callback} [callback] The second argument, data, is a {@link ApplePay~tokenizePayload|tokenizePayload}. If no callback is provided, `tokenize` returns a promise that resolves with a {@link ApplePay~tokenizePayload|tokenizePayload}.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var applePay = require('braintree-web/apple-pay');\n *\n * applePay.create({client: clientInstance}, function (applePayErr, applePayInstance) {\n * if (applePayErr) {\n * // Handle error here\n * return;\n * }\n *\n * var paymentRequest = applePayInstance.createPaymentRequest({\n * total: {\n * label: 'My Company',\n * amount: '19.99'\n * }\n * });\n * var session = new ApplePaySession(3, paymentRequest);\n *\n * session.onpaymentauthorized = function (event) {\n * applePayInstance.tokenize({\n * token: event.payment.token\n * }, function (tokenizeErr, tokenizedPayload) {\n * if (tokenizeErr) {\n * session.completePayment(ApplePaySession.STATUS_FAILURE);\n * return;\n * }\n * // Send the tokenizedPayload to your server here!\n *\n * // Once the transaction is complete, call completePayment\n * // to close the Apple Pay sheet\n * session.completePayment(ApplePaySession.STATUS_SUCCESS);\n * });\n * };\n *\n * // ...\n * });\n */\nApplePay.prototype.tokenize = function (options) {\n var self = this;\n\n if (!options.token) {\n return Promise.reject(\n new BraintreeError(errors.APPLE_PAY_PAYMENT_TOKEN_REQUIRED)\n );\n }\n\n return this._waitForClient()\n .then(function () {\n return self._client.request({\n method: \"post\",\n endpoint: \"payment_methods/apple_payment_tokens\",\n data: {\n _meta: {\n source: \"apple-pay\",\n },\n applePaymentToken: Object.assign({}, options.token, {\n // The gateway requires this key to be base64-encoded.\n paymentData: btoa(JSON.stringify(options.token.paymentData)),\n }),\n },\n });\n })\n .then(function (response) {\n analytics.sendEvent(self._client, \"applepay.tokenize.succeeded\");\n\n return Promise.resolve(response.applePayCards[0]);\n })\n .catch(function (err) {\n analytics.sendEvent(self._client, \"applepay.tokenize.failed\");\n\n return Promise.reject(\n new BraintreeError({\n type: errors.APPLE_PAY_TOKENIZATION.type,\n code: errors.APPLE_PAY_TOKENIZATION.code,\n message: errors.APPLE_PAY_TOKENIZATION.message,\n details: {\n originalError: err,\n },\n })\n );\n });\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/apple-pay.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * applePayInstance.teardown();\n * @example With callback\n * applePayInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nApplePay.prototype.teardown = function () {\n convertMethodsToError(this, methods(ApplePay.prototype));\n\n return Promise.resolve();\n};\n\nmodule.exports = wrapPromise.wrapPrototype(ApplePay);\n\n},{\"../lib/analytics\":86,\"../lib/braintree-error\":91,\"../lib/convert-methods-to-error\":93,\"../lib/methods\":121,\"./errors\":49,\"@braintree/wrap-promise\":47}],49:[function(require,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Apple Pay - Creation Error Codes\n * @description Errors that occur when [creating the Apple Pay component](./module-braintree-web_apple-pay.html#.create).\n * @property {MERCHANT} APPLE_PAY_NOT_ENABLED Occurs when the authorization used is not authorized to process Apple Pay.\n */\n\n/**\n * @name BraintreeError.Apple Pay - performValidation Error Codes\n * @description Errors that occur when [validating](./ApplePay.html#performValidation).\n * @property {MERCHANT} APPLE_PAY_VALIDATION_URL_REQUIRED Occurs when the `validationURL` option is not passed in.\n * @property {MERCHANT} APPLE_PAY_MERCHANT_VALIDATION_FAILED Occurs when the website domain has not been registered in the Braintree control panel.\n * @property {NETWORK} APPLE_PAY_MERCHANT_VALIDATION_NETWORK Occurs when an unknown network error occurs.\n */\n\n/**\n * @name BraintreeError.Apple Pay - tokenize Error Codes\n * @description Errors that occur when [tokenizing](./ApplePay.html#tokenize).\n * @property {MERCHANT} APPLE_PAY_PAYMENT_TOKEN_REQUIRED Occurs when the `token` option is not passed in.\n * @property {NETWORK} APPLE_PAY_TOKENIZATION Occurs when an unknown network error occurs.\n */\n\nvar BraintreeError = require(\"../lib/braintree-error\");\n\nmodule.exports = {\n APPLE_PAY_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"APPLE_PAY_NOT_ENABLED\",\n message: \"Apple Pay is not enabled for this merchant.\",\n },\n APPLE_PAY_VALIDATION_URL_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"APPLE_PAY_VALIDATION_URL_REQUIRED\",\n message: \"performValidation must be called with a validationURL.\",\n },\n APPLE_PAY_MERCHANT_VALIDATION_NETWORK: {\n type: BraintreeError.types.NETWORK,\n code: \"APPLE_PAY_MERCHANT_VALIDATION_NETWORK\",\n message: \"A network error occurred when validating the Apple Pay merchant.\",\n },\n APPLE_PAY_MERCHANT_VALIDATION_FAILED: {\n type: BraintreeError.types.MERCHANT,\n code: \"APPLE_PAY_MERCHANT_VALIDATION_FAILED\",\n message:\n \"Make sure you have registered your domain name in the Braintree Control Panel.\",\n },\n APPLE_PAY_PAYMENT_TOKEN_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"APPLE_PAY_PAYMENT_TOKEN_REQUIRED\",\n message: \"tokenize must be called with a payment token.\",\n },\n APPLE_PAY_TOKENIZATION: {\n type: BraintreeError.types.NETWORK,\n code: \"APPLE_PAY_TOKENIZATION\",\n message: \"A network error occurred when processing the Apple Pay payment.\",\n },\n};\n\n},{\"../lib/braintree-error\":91}],50:[function(require,module,exports){\n\"use strict\";\n\n/**\n * @module braintree-web/apple-pay\n * @description Accept Apple Pay on the Web. *This component is currently in beta and is subject to change.*\n */\n\nvar ApplePay = require(\"./apple-pay\");\nvar analytics = require(\"../lib/analytics\");\nvar BraintreeError = require(\"../lib/braintree-error\");\nvar basicComponentVerification = require(\"../lib/basic-component-verification\");\nvar createAssetsUrl = require(\"../lib/create-assets-url\");\nvar createDeferredClient = require(\"../lib/create-deferred-client\");\nvar errors = require(\"./errors\");\nvar VERSION = \"3.99.0\";\nvar wrapPromise = require(\"@braintree/wrap-promise\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {boolean} [options.useDeferredClient] Used in conjunction with `authorization`, allows the Apple Pay instance to be available right away by fetching the client configuration in the background. When this option is used, {@link ApplePay#createPaymentRequest} will return a promise that resolves with the configuration instead of returning synchronously.\n * @param {callback} [callback] The second argument, `data`, is the {@link ApplePay} instance. If no callback is provided, `create` returns a promise that resolves with the {@link ApplePay} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"Apple Pay\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n var applePayInstance;\n var createPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n })\n .then(function (client) {\n if (!client.getConfiguration().gatewayConfiguration.applePayWeb) {\n return Promise.reject(\n new BraintreeError(errors.APPLE_PAY_NOT_ENABLED)\n );\n }\n\n analytics.sendEvent(client, \"applepay.initialized\");\n\n return client;\n });\n\n options.createPromise = createPromise;\n applePayInstance = new ApplePay(options);\n\n if (!options.useDeferredClient) {\n return createPromise.then(function (client) {\n applePayInstance._client = client;\n\n return applePayInstance;\n });\n }\n\n return applePayInstance;\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `1.42.0`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/analytics\":86,\"../lib/basic-component-verification\":89,\"../lib/braintree-error\":91,\"../lib/create-assets-url\":95,\"../lib/create-deferred-client\":97,\"./apple-pay\":48,\"./errors\":49,\"@braintree/wrap-promise\":47}],51:[function(require,module,exports){\n\"use strict\";\n\nvar BRAINTREE_VERSION = require(\"./constants\").BRAINTREE_VERSION;\n\nvar GraphQL = require(\"./request/graphql\");\nvar request = require(\"./request\");\nvar isVerifiedDomain = require(\"../lib/is-verified-domain\");\nvar BraintreeError = require(\"../lib/braintree-error\");\nvar convertToBraintreeError = require(\"../lib/convert-to-braintree-error\");\nvar getGatewayConfiguration = require(\"./get-configuration\").getConfiguration;\nvar createAuthorizationData = require(\"../lib/create-authorization-data\");\nvar addMetadata = require(\"../lib/add-metadata\");\nvar wrapPromise = require(\"@braintree/wrap-promise\");\nvar once = require(\"../lib/once\");\nvar deferred = require(\"../lib/deferred\");\nvar assign = require(\"../lib/assign\").assign;\nvar analytics = require(\"../lib/analytics\");\nvar errors = require(\"./errors\");\nvar VERSION = require(\"../lib/constants\").VERSION;\nvar GRAPHQL_URLS = require(\"../lib/constants\").GRAPHQL_URLS;\nvar methods = require(\"../lib/methods\");\nvar convertMethodsToError = require(\"../lib/convert-methods-to-error\");\nvar assets = require(\"../lib/assets\");\nvar FRAUDNET_FNCLS = require(\"../lib/constants\").FRAUDNET_FNCLS;\nvar FRAUDNET_SOURCE = require(\"../lib/constants\").FRAUDNET_SOURCE;\nvar FRAUDNET_URL = require(\"../lib/constants\").FRAUDNET_URL;\n\nvar cachedClients = {};\n\n/**\n * This object is returned by {@link Client#getConfiguration|getConfiguration}. This information is used extensively by other Braintree modules to properly configure themselves.\n * @typedef {object} Client~configuration\n * @property {object} client The braintree-web/client parameters.\n * @property {string} client.authorization A tokenizationKey or clientToken.\n * @property {object} gatewayConfiguration Gateway-supplied configuration.\n * @property {object} analyticsMetadata Analytics-specific data.\n * @property {string} analyticsMetadata.sessionId Uniquely identifies a browsing session.\n * @property {string} analyticsMetadata.sdkVersion The braintree.js version.\n * @property {string} analyticsMetadata.merchantAppId Identifies the merchant's web app.\n */\n\n/**\n * @class\n * @param {Client~configuration} configuration Options\n * @description Do not use this constructor directly. Use {@link module:braintree-web/client.create|braintree.client.create} instead.\n * @classdesc This class is required by many other Braintree components. It serves as the base API layer that communicates with our servers. It is also capable of being used to formulate direct calls to our servers, such as direct credit card tokenization. See {@link Client#request}.\n */\nfunction Client(configuration) {\n var configurationJSON, gatewayConfiguration;\n\n configuration = configuration || {};\n\n configurationJSON = JSON.stringify(configuration);\n gatewayConfiguration = configuration.gatewayConfiguration;\n\n if (!gatewayConfiguration) {\n throw new BraintreeError(errors.CLIENT_MISSING_GATEWAY_CONFIGURATION);\n }\n\n [\"assetsUrl\", \"clientApiUrl\", \"configUrl\"].forEach(function (property) {\n if (\n property in gatewayConfiguration &&\n !isVerifiedDomain(gatewayConfiguration[property])\n ) {\n throw new BraintreeError({\n type: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.type,\n code: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.code,\n message: property + \" property is on an invalid domain.\",\n });\n }\n });\n\n /**\n * Returns a copy of the configuration values.\n * @public\n * @returns {Client~configuration} configuration\n */\n this.getConfiguration = function () {\n return JSON.parse(configurationJSON);\n };\n\n this._request = request;\n this._configuration = this.getConfiguration();\n\n this._clientApiBaseUrl = gatewayConfiguration.clientApiUrl + \"/v1/\";\n\n if (gatewayConfiguration.graphQL) {\n if (!isVerifiedDomain(gatewayConfiguration.graphQL.url)) {\n throw new BraintreeError({\n type: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.type,\n code: errors.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.code,\n message: \"graphQL.url property is on an invalid domain.\",\n });\n }\n\n this._graphQL = new GraphQL({\n graphQL: gatewayConfiguration.graphQL,\n });\n }\n}\n\nClient.initialize = function (options) {\n var clientInstance, authData;\n var promise = cachedClients[options.authorization];\n\n if (promise) {\n analytics.sendEvent(promise, \"custom.client.load.cached\");\n\n return promise;\n }\n\n try {\n authData = createAuthorizationData(options.authorization);\n } catch (err) {\n return Promise.reject(\n new BraintreeError(errors.CLIENT_INVALID_AUTHORIZATION)\n );\n }\n\n promise = getGatewayConfiguration(authData).then(function (configuration) {\n if (options.debug) {\n configuration.isDebug = true;\n }\n\n configuration.authorization = options.authorization;\n\n clientInstance = new Client(configuration);\n\n return clientInstance;\n });\n\n cachedClients[options.authorization] = promise;\n\n analytics.sendEvent(promise, \"custom.client.load.initialized\");\n\n return promise\n .then(function (client) {\n analytics.sendEvent(clientInstance, \"custom.client.load.succeeded\");\n\n return client;\n })\n .catch(function (err) {\n delete cachedClients[options.authorization];\n\n return Promise.reject(err);\n });\n};\n\n// Primarily used for testing the client initalization call\nClient.clearCache = function () {\n cachedClients = {};\n};\n\nClient.prototype._findOrCreateFraudnetJSON = function (clientMetadataId) {\n var el = document.querySelector('script[fncls=\"' + FRAUDNET_FNCLS + '\"]');\n var config, additionalData, authorizationFingerprint, parameters;\n\n if (!el) {\n el = document.body.appendChild(document.createElement(\"script\"));\n el.type = \"application/json\";\n el.setAttribute(\"fncls\", FRAUDNET_FNCLS);\n }\n\n config = this.getConfiguration();\n additionalData = {\n rda_tenant: \"bt_card\", // eslint-disable-line camelcase\n mid: config.gatewayConfiguration.merchantId,\n };\n authorizationFingerprint = config.authorizationFingerprint;\n\n if (authorizationFingerprint) {\n authorizationFingerprint.split(\"&\").forEach(function (pieces) {\n var component = pieces.split(\"=\");\n\n if (component[0] === \"customer_id\" && component.length > 1) {\n additionalData.cid = component[1];\n }\n });\n }\n\n parameters = {\n f: clientMetadataId.substr(0, 32),\n fp: additionalData,\n bu: false,\n s: FRAUDNET_SOURCE,\n };\n el.text = JSON.stringify(parameters);\n};\n\n/**\n * Used by other modules to formulate all network requests to the Braintree gateway. It is also capable of being used directly from your own form to tokenize credit card information. However, be sure to satisfy PCI compliance if you use direct card tokenization.\n * @public\n * @param {object} options Request options:\n * @param {string} options.method HTTP method, e.g. \"get\" or \"post\".\n * @param {string} options.endpoint Endpoint path, e.g. \"payment_methods\".\n * @param {object} options.data Data to send with the request.\n * @param {number} [options.timeout=60000] Set a timeout (in milliseconds) for the request.\n * @param {callback} [callback] The second argument, data, is the returned server data.\n * @example\n * Direct Credit Card Tokenization\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * var form = document.getElementById('my-form-id');\n * var data = {\n * creditCard: {\n * number: form['cc-number'].value,\n * cvv: form['cc-cvv'].value,\n * expirationDate: form['cc-expiration-date'].value,\n * billingAddress: {\n * postalCode: form['cc-postal-code'].value\n * },\n * options: {\n * validate: false\n * }\n * }\n * };\n *\n * // Warning: For a merchant to be eligible for the easiest level of PCI compliance (SAQ A),\n * // payment fields cannot be hosted on your checkout page.\n * // For an alternative to the following, use Hosted Fields.\n * clientInstance.request({\n * endpoint: 'payment_methods/credit_cards',\n * method: 'post',\n * data: data\n * }, function (requestErr, response) {\n * // More detailed example of handling API errors: https://codepen.io/braintree/pen/MbwjdM\n * if (requestErr) { throw new Error(requestErr); }\n *\n * console.log('Got nonce:', response.creditCards[0].nonce);\n * });\n * });\n * @example\n * Tokenizing Fields for AVS Checks\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * var form = document.getElementById('my-form-id');\n * var data = {\n * creditCard: {\n * number: form['cc-number'].value,\n * cvv: form['cc-cvv'].value,\n * expirationDate: form['cc-date'].value,\n * // The billing address can be checked with AVS rules.\n * // See: https://articles.braintreepayments.com/support/guides/fraud-tools/basic/avs-cvv-rules\n * billingAddress: {\n * postalCode: form['cc-postal-code'].value,\n * streetAddress: form['cc-street-address'].value,\n * countryName: form['cc-country-name'].value,\n * countryCodeAlpha2: form['cc-country-alpha2'].value,\n * countryCodeAlpha3: form['cc-country-alpha3'].value,\n * countryCodeNumeric: form['cc-country-numeric'].value\n * },\n * options: {\n * validate: false\n * }\n * }\n * };\n *\n * // Warning: For a merchant to be eligible for the easiest level of PCI compliance (SAQ A),\n * // payment fields cannot be hosted on your checkout page.\n * // For an alternative to the following, use Hosted Fields.\n * clientInstance.request({\n * endpoint: 'payment_methods/credit_cards',\n * method: 'post',\n * data: data\n * }, function (requestErr, response) {\n * // More detailed example of handling API errors: https://codepen.io/braintree/pen/MbwjdM\n * if (requestErr) { throw new Error(requestErr); }\n *\n * console.log('Got nonce:', response.creditCards[0].nonce);\n * });\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nClient.prototype.request = function (options, callback) {\n var self = this; // eslint-disable-line no-invalid-this\n var requestPromise = new Promise(function (resolve, reject) {\n var optionName, api, baseUrl, requestOptions;\n var shouldCollectData = Boolean(\n options.endpoint === \"payment_methods/credit_cards\" &&\n self.getConfiguration().gatewayConfiguration.creditCards\n .collectDeviceData\n );\n\n if (options.api !== \"graphQLApi\") {\n if (!options.method) {\n optionName = \"options.method\";\n } else if (!options.endpoint) {\n optionName = \"options.endpoint\";\n }\n }\n\n if (optionName) {\n throw new BraintreeError({\n type: errors.CLIENT_OPTION_REQUIRED.type,\n code: errors.CLIENT_OPTION_REQUIRED.code,\n message: optionName + \" is required when making a request.\",\n });\n }\n\n if (\"api\" in options) {\n api = options.api;\n } else {\n api = \"clientApi\";\n }\n\n requestOptions = {\n method: options.method,\n graphQL: self._graphQL,\n timeout: options.timeout,\n metadata: self._configuration.analyticsMetadata,\n };\n\n if (api === \"clientApi\") {\n baseUrl = self._clientApiBaseUrl;\n\n requestOptions.data = addMetadata(self._configuration, options.data);\n } else if (api === \"graphQLApi\") {\n baseUrl =\n GRAPHQL_URLS[self._configuration.gatewayConfiguration.environment];\n options.endpoint = \"\";\n requestOptions.method = \"post\";\n requestOptions.data = assign(\n {\n clientSdkMetadata: {\n platform: self._configuration.analyticsMetadata.platform,\n source: self._configuration.analyticsMetadata.source,\n integration: self._configuration.analyticsMetadata.integration,\n sessionId: self._configuration.analyticsMetadata.sessionId,\n version: VERSION,\n },\n },\n options.data\n );\n\n requestOptions.headers = getAuthorizationHeadersForGraphQL(\n self._configuration\n );\n } else {\n throw new BraintreeError({\n type: errors.CLIENT_OPTION_INVALID.type,\n code: errors.CLIENT_OPTION_INVALID.code,\n message: \"options.api is invalid.\",\n });\n }\n\n requestOptions.url = baseUrl + options.endpoint;\n requestOptions.sendAnalyticsEvent = function (kind) {\n analytics.sendEvent(self, kind);\n };\n\n self._request(requestOptions, function (err, data, status) {\n var resolvedData, requestError;\n\n requestError = formatRequestError(status, err);\n\n if (requestError) {\n reject(requestError);\n\n return;\n }\n\n if (api === \"graphQLApi\" && data.errors) {\n reject(\n convertToBraintreeError(data.errors, {\n type: errors.CLIENT_GRAPHQL_REQUEST_ERROR.type,\n code: errors.CLIENT_GRAPHQL_REQUEST_ERROR.code,\n message: errors.CLIENT_GRAPHQL_REQUEST_ERROR.message,\n })\n );\n\n return;\n }\n\n resolvedData = assign({ _httpStatus: status }, data);\n\n if (\n shouldCollectData &&\n resolvedData.creditCards &&\n resolvedData.creditCards.length > 0\n ) {\n self._findOrCreateFraudnetJSON(resolvedData.creditCards[0].nonce);\n\n assets.loadScript({\n src: FRAUDNET_URL,\n forceScriptReload: true,\n });\n }\n resolve(resolvedData);\n });\n });\n\n if (typeof callback === \"function\") {\n callback = once(deferred(callback));\n\n requestPromise\n .then(function (response) {\n callback(null, response, response._httpStatus);\n })\n .catch(function (err) {\n var status = err && err.details && err.details.httpStatus;\n\n callback(err, null, status);\n });\n\n return;\n }\n\n return requestPromise; // eslint-disable-line consistent-return\n};\n\n// eslint-disable-next-line consistent-return\nfunction formatRequestError(status, err) {\n var requestError;\n\n if (status === -1) {\n requestError = new BraintreeError(errors.CLIENT_REQUEST_TIMEOUT);\n } else if (status === 401) {\n requestError = new BraintreeError(errors.CLIENT_AUTHORIZATION_INVALID);\n } else if (status === 403) {\n requestError = new BraintreeError(errors.CLIENT_AUTHORIZATION_INSUFFICIENT);\n } else if (status === 429) {\n requestError = new BraintreeError(errors.CLIENT_RATE_LIMITED);\n } else if (status >= 500) {\n requestError = new BraintreeError(errors.CLIENT_GATEWAY_NETWORK);\n } else if (status < 200 || status >= 400) {\n requestError = convertToBraintreeError(err, {\n type: errors.CLIENT_REQUEST_ERROR.type,\n code: errors.CLIENT_REQUEST_ERROR.code,\n message: errors.CLIENT_REQUEST_ERROR.message,\n });\n }\n\n if (requestError) {\n requestError.details = requestError.details || {};\n requestError.details.httpStatus = status;\n\n return requestError;\n }\n}\n\nClient.prototype.toJSON = function () {\n return this.getConfiguration();\n};\n\n/**\n * Returns the Client version.\n * @public\n * @returns {String} The created client's version.\n * @example\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * console.log(clientInstance.getVersion()); // Ex: 1.0.0\n * });\n * @returns {void}\n */\nClient.prototype.getVersion = function () {\n return VERSION;\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/client.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * clientInstance.teardown();\n * @example With callback\n * clientInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nClient.prototype.teardown = wrapPromise(function () {\n var self = this; // eslint-disable-line no-invalid-this\n\n delete cachedClients[self.getConfiguration().authorization];\n convertMethodsToError(self, methods(Client.prototype));\n\n return Promise.resolve();\n});\n\nfunction getAuthorizationHeadersForGraphQL(configuration) {\n var token =\n configuration.authorizationFingerprint || configuration.authorization;\n\n return {\n Authorization: \"Bearer \" + token,\n \"Braintree-Version\": BRAINTREE_VERSION,\n };\n}\n\nmodule.exports = Client;\n\n},{\"../lib/add-metadata\":85,\"../lib/analytics\":86,\"../lib/assets\":87,\"../lib/assign\":88,\"../lib/braintree-error\":91,\"../lib/constants\":92,\"../lib/convert-methods-to-error\":93,\"../lib/convert-to-braintree-error\":94,\"../lib/create-authorization-data\":96,\"../lib/deferred\":98,\"../lib/is-verified-domain\":119,\"../lib/methods\":121,\"../lib/once\":122,\"./constants\":52,\"./errors\":53,\"./get-configuration\":54,\"./request\":65,\"./request/graphql\":63,\"@braintree/wrap-promise\":47}],52:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = {\n BRAINTREE_VERSION: \"2018-05-10\",\n};\n\n},{}],53:[function(require,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Client - Internal Error Codes\n * @ignore\n * @description These codes should never be experienced by the merchant directly.\n * @property {MERCHANT} CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN An error to prevent client creation for domains that are not allowed in the JS.\n * @property {INTERNAL} CLIENT_MISSING_GATEWAY_CONFIGURATION Occurs when the client is created without a gateway configuration. Should never happen.\n */\n\n/**\n * @name BraintreeError.Client - Create Error Codes\n * @description Errors that may occur when [creating the client](./module-braintree-web_client.html#.create)\n * @property {MERCHANT} CLIENT_INVALID_AUTHORIZATION Occurs when client token cannot be parsed.\n */\n\n/**\n * @name BraintreeError.Client - Request Error Codes\n * @description Errors that may occur when [using the request method](./Client.html#request)\n * @property {MERCHANT} CLIENT_OPTION_REQUIRED An option required in the request method was not provided. Usually `options.method` or `options.endpoint`\n * @property {MERCHANT} CLIENT_OPTION_INVALID The request option provided is invalid.\n * @property {MERCHANT} CLIENT_GATEWAY_NETWORK The Braintree gateway could not be contacted.\n * @property {NETWORK} CLIENT_REQUEST_TIMEOUT The request took too long to complete and timed out.\n * @property {NETWORK} CLIENT_REQUEST_ERROR The response from a request had status 400 or greater.\n * @property {NETWORK} CLIENT_GRAPHQL_REQUEST_ERROR The response from a request to GraphQL contained an error.\n * @property {MERCHANT} CLIENT_RATE_LIMITED The response from a request had a status of 429, indicating rate limiting.\n * @property {MERCHANT} CLIENT_AUTHORIZATION_INSUFFICIENT The user associated with the client token or tokenization key does not have permissions to make the request.\n * @property {MERCHANT} CLIENT_AUTHORIZATION_INVALID The provided authorization could not be found. Either the client token has expired and a new client token must be generated or the tokenization key used is set to be inactive or has been deleted.\n */\n\nvar BraintreeError = require(\"../lib/braintree-error\");\n\nmodule.exports = {\n CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN\",\n },\n CLIENT_OPTION_REQUIRED: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_OPTION_REQUIRED\",\n },\n CLIENT_OPTION_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_OPTION_INVALID\",\n },\n CLIENT_MISSING_GATEWAY_CONFIGURATION: {\n type: BraintreeError.types.INTERNAL,\n code: \"CLIENT_MISSING_GATEWAY_CONFIGURATION\",\n message: \"Missing gatewayConfiguration.\",\n },\n CLIENT_INVALID_AUTHORIZATION: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_INVALID_AUTHORIZATION\",\n message:\n \"Authorization is invalid. Make sure your client token or tokenization key is valid.\",\n },\n CLIENT_GATEWAY_NETWORK: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_GATEWAY_NETWORK\",\n message: \"Cannot contact the gateway at this time.\",\n },\n CLIENT_REQUEST_TIMEOUT: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_REQUEST_TIMEOUT\",\n message: \"Request timed out waiting for a reply.\",\n },\n CLIENT_REQUEST_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_REQUEST_ERROR\",\n message: \"There was a problem with your request.\",\n },\n CLIENT_GRAPHQL_REQUEST_ERROR: {\n type: BraintreeError.types.NETWORK,\n code: \"CLIENT_GRAPHQL_REQUEST_ERROR\",\n message: \"There was a problem with your request.\",\n },\n CLIENT_RATE_LIMITED: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_RATE_LIMITED\",\n message: \"You are being rate-limited; please try again in a few minutes.\",\n },\n CLIENT_AUTHORIZATION_INSUFFICIENT: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_AUTHORIZATION_INSUFFICIENT\",\n message: \"The authorization used has insufficient privileges.\",\n },\n CLIENT_AUTHORIZATION_INVALID: {\n type: BraintreeError.types.MERCHANT,\n code: \"CLIENT_AUTHORIZATION_INVALID\",\n message:\n \"Either the client token has expired and a new one should be generated or the tokenization key has been deactivated or deleted.\",\n },\n};\n\n},{\"../lib/braintree-error\":91}],54:[function(require,module,exports){\n\"use strict\";\n\nvar BraintreeError = require(\"../lib/braintree-error\");\nvar wrapPromise = require(\"@braintree/wrap-promise\");\nvar request = require(\"./request\");\nvar uuid = require(\"@braintree/uuid\");\nvar constants = require(\"../lib/constants\");\nvar errors = require(\"./errors\");\nvar GraphQL = require(\"./request/graphql\");\nvar GRAPHQL_URLS = require(\"../lib/constants\").GRAPHQL_URLS;\nvar isDateStringBeforeOrOn = require(\"../lib/is-date-string-before-or-on\");\n\nvar BRAINTREE_VERSION = require(\"./constants\").BRAINTREE_VERSION;\n\nfunction getConfiguration(authData) {\n return new Promise(function (resolve, reject) {\n var configuration, attrs, configUrl, reqOptions;\n var sessionId = uuid();\n var analyticsMetadata = {\n merchantAppId: window.location.host,\n platform: constants.PLATFORM,\n sdkVersion: constants.VERSION,\n source: constants.SOURCE,\n // NEXT_MAJOR_VERSION remove one of these to not duplicate data. Target parity with mobile platforms approach.\n integration: constants.INTEGRATION,\n integrationType: constants.INTEGRATION,\n sessionId: sessionId,\n };\n\n attrs = authData.attrs;\n configUrl = authData.configUrl;\n\n attrs._meta = analyticsMetadata;\n attrs.braintreeLibraryVersion = constants.BRAINTREE_LIBRARY_VERSION;\n attrs.configVersion = \"3\";\n\n reqOptions = {\n url: configUrl,\n method: \"GET\",\n data: attrs,\n };\n\n if (attrs.authorizationFingerprint && authData.graphQL) {\n if (isDateStringBeforeOrOn(authData.graphQL.date, BRAINTREE_VERSION)) {\n reqOptions.graphQL = new GraphQL({\n graphQL: {\n url: authData.graphQL.url,\n features: [\"configuration\"],\n },\n });\n }\n\n reqOptions.metadata = analyticsMetadata;\n } else if (attrs.tokenizationKey) {\n reqOptions.graphQL = new GraphQL({\n graphQL: {\n url: GRAPHQL_URLS[authData.environment],\n features: [\"configuration\"],\n },\n });\n\n reqOptions.metadata = analyticsMetadata;\n }\n\n // NEXT_MAJOR_VERSION\n // there are various issues with the config endpoint where the values returned\n // do not match the values from the merchant account id passed into a client token\n // we need to update the configuration request endpoint to be able to pass the\n // correct values. The following ones are incorrect\n // * applePayWeb - definitely supportedNetworks, which compiles all the card\n // networks from all the merchant accounts instead of providing just the\n // ones from the specified one. The same is probably true for ios apple pay\n // Also the merchantidentifier\n // NEXT_MAJOR_VERSION Allow passing in merchant account id when creating the component\n // to fetch the config for that merchant account id (particularly helpful when using\n // a tokenization key for authorization)\n request(reqOptions, function (err, response, status) {\n var errorTemplate;\n\n if (err) {\n if (status === 403) {\n errorTemplate = errors.CLIENT_AUTHORIZATION_INSUFFICIENT;\n } else if (status === 401) {\n errorTemplate = errors.CLIENT_AUTHORIZATION_INVALID;\n } else {\n errorTemplate = errors.CLIENT_GATEWAY_NETWORK;\n }\n\n reject(\n new BraintreeError({\n type: errorTemplate.type,\n code: errorTemplate.code,\n message: errorTemplate.message,\n details: {\n originalError: err,\n },\n })\n );\n\n return;\n }\n\n configuration = {\n authorizationType: attrs.tokenizationKey\n ? \"TOKENIZATION_KEY\"\n : \"CLIENT_TOKEN\",\n authorizationFingerprint: attrs.authorizationFingerprint,\n analyticsMetadata: analyticsMetadata,\n gatewayConfiguration: response,\n };\n\n resolve(configuration);\n });\n });\n}\n\nmodule.exports = {\n getConfiguration: wrapPromise(getConfiguration),\n};\n\n},{\"../lib/braintree-error\":91,\"../lib/constants\":92,\"../lib/is-date-string-before-or-on\":117,\"./constants\":52,\"./errors\":53,\"./request\":65,\"./request/graphql\":63,\"@braintree/uuid\":43,\"@braintree/wrap-promise\":47}],55:[function(require,module,exports){\n\"use strict\";\n\nvar BraintreeError = require(\"../lib/braintree-error\");\nvar Client = require(\"./client\");\nvar VERSION = \"3.99.0\";\nvar wrapPromise = require(\"@braintree/wrap-promise\");\nvar sharedErrors = require(\"../lib/errors\");\n\n/** @module braintree-web/client */\n\n/**\n * @function create\n * @description This function is the entry point for the braintree.client module. It is used for creating {@link Client} instances that service communication to Braintree servers.\n * @param {object} options Object containing all {@link Client} options:\n * @param {string} options.authorization A tokenizationKey or clientToken.\n * @param {callback} [callback] The second argument, data, is the {@link Client} instance.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * var createClient = require('braintree-web/client').create;\n *\n * createClient({\n * authorization: CLIENT_AUTHORIZATION\n * }, function (createErr, clientInstance) {\n * if (createErr) {\n * if (createErr.code === 'CLIENT_AUTHORIZATION_INVALID') {\n * // either the client token has expired, and a new one should be generated\n * // or the tokenization key was deactivated or deleted\n * } else {\n * console.log('something went wrong creating the client instance', createErr);\n * }\n * return;\n * }\n *\n * // set up other components\n * });\n * @static\n */\nfunction create(options) {\n if (!options.authorization) {\n return Promise.reject(\n new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n message:\n \"options.authorization is required when instantiating a client.\",\n })\n );\n }\n\n return Client.initialize(options);\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `1.42.0`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/braintree-error\":91,\"../lib/errors\":101,\"./client\":51,\"@braintree/wrap-promise\":47}],56:[function(require,module,exports){\n\"use strict\";\n\nvar querystring = require(\"../../lib/querystring\");\nvar assign = require(\"../../lib/assign\").assign;\nvar prepBody = require(\"./prep-body\");\nvar parseBody = require(\"./parse-body\");\nvar xhr = require(\"./xhr\");\nvar isXHRAvailable = xhr.isAvailable;\nvar GraphQLRequest = require(\"./graphql/request\");\nvar DefaultRequest = require(\"./default-request\");\n\nvar MAX_TCP_RETRYCOUNT = 1;\nvar TCP_PRECONNECT_BUG_STATUS_CODE = 408;\n\nfunction requestShouldRetry(status) {\n return !status || status === TCP_PRECONNECT_BUG_STATUS_CODE;\n}\n\nfunction graphQLRequestShouldRetryWithClientApi(body) {\n var errorClass =\n !body.data &&\n body.errors &&\n body.errors[0] &&\n body.errors[0].extensions &&\n body.errors[0].extensions.errorClass;\n\n return errorClass === \"UNKNOWN\" || errorClass === \"INTERNAL\";\n}\n\nfunction _requestWithRetry(options, tcpRetryCount, cb) {\n var status, resBody, ajaxRequest, body, method, headers, parsedBody;\n var url = options.url;\n var graphQL = options.graphQL;\n var timeout = options.timeout;\n var req = xhr.getRequestObject();\n var callback = cb;\n var isGraphQLRequest = Boolean(\n graphQL && graphQL.isGraphQLRequest(url, options.data)\n );\n\n options.headers = assign(\n { \"Content-Type\": \"application/json\" },\n options.headers\n );\n\n if (isGraphQLRequest) {\n ajaxRequest = new GraphQLRequest(options);\n } else {\n ajaxRequest = new DefaultRequest(options);\n }\n\n url = ajaxRequest.getUrl();\n body = ajaxRequest.getBody();\n method = ajaxRequest.getMethod();\n headers = ajaxRequest.getHeaders();\n\n if (method === \"GET\") {\n url = querystring.queryify(url, body);\n body = null;\n }\n\n if (isXHRAvailable) {\n req.onreadystatechange = function () {\n if (req.readyState !== 4) {\n return;\n }\n\n if (req.status === 0 && isGraphQLRequest) {\n // If a merchant experiences a connection\n // issue to the GraphQL endpoint (possibly\n // due to a Content Security Policy), retry\n // the request against the old client API.\n delete options.graphQL;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n parsedBody = parseBody(req.responseText);\n resBody = ajaxRequest.adaptResponseBody(parsedBody);\n status = ajaxRequest.determineStatus(req.status, parsedBody);\n\n if (status >= 400 || status < 200) {\n if (\n isGraphQLRequest &&\n graphQLRequestShouldRetryWithClientApi(parsedBody)\n ) {\n delete options.graphQL;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n if (tcpRetryCount < MAX_TCP_RETRYCOUNT && requestShouldRetry(status)) {\n tcpRetryCount++;\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n callback(resBody || \"error\", null, status || 500);\n } else {\n callback(null, resBody, status);\n }\n };\n } else {\n if (options.headers) {\n url = querystring.queryify(url, headers);\n }\n\n req.onload = function () {\n callback(null, parseBody(req.responseText), req.status);\n };\n\n req.onerror = function () {\n // XDomainRequest does not report a body or status for errors, so\n // hardcode to 'error' and 500, respectively\n callback(\"error\", null, 500);\n };\n\n // This must remain for IE9 to work\n req.onprogress = function () {};\n\n req.ontimeout = function () {\n callback(\"timeout\", null, -1);\n };\n }\n\n try {\n req.open(method, url, true);\n } catch (requestOpenError) {\n // If a merchant has a Content Security Policy and they have\n // not allowed our endpoints, some browsers may\n // synchronously throw an error. If it is not a GraphQL\n // request, we throw the error. If it is a GraphQL request\n // we remove the GraphQL option and try the request against\n // the old client API.\n if (!isGraphQLRequest) {\n throw requestOpenError;\n }\n\n delete options.graphQL;\n\n _requestWithRetry(options, tcpRetryCount, cb);\n\n return;\n }\n\n req.timeout = timeout;\n\n if (isXHRAvailable) {\n Object.keys(headers).forEach(function (headerKey) {\n req.setRequestHeader(headerKey, headers[headerKey]);\n });\n }\n\n try {\n req.send(prepBody(method, body));\n } catch (e) {\n /* ignored */\n }\n}\n\nfunction request(options, cb) {\n _requestWithRetry(options, 0, cb);\n}\n\nmodule.exports = {\n request: request,\n};\n\n},{\"../../lib/assign\":88,\"../../lib/querystring\":123,\"./default-request\":57,\"./graphql/request\":64,\"./parse-body\":66,\"./prep-body\":67,\"./xhr\":68}],57:[function(require,module,exports){\n\"use strict\";\n\nfunction DefaultRequest(options) {\n this._url = options.url;\n this._data = options.data;\n this._method = options.method;\n this._headers = options.headers;\n}\n\nDefaultRequest.prototype.getUrl = function () {\n return this._url;\n};\n\nDefaultRequest.prototype.getBody = function () {\n return this._data;\n};\n\nDefaultRequest.prototype.getMethod = function () {\n return this._method;\n};\n\nDefaultRequest.prototype.getHeaders = function () {\n return this._headers;\n};\n\nDefaultRequest.prototype.adaptResponseBody = function (parsedBody) {\n return parsedBody;\n};\n\nDefaultRequest.prototype.determineStatus = function (status) {\n return status;\n};\n\nmodule.exports = DefaultRequest;\n\n},{}],58:[function(require,module,exports){\n\"use strict\";\n\nvar errorResponseAdapter = require(\"./error\");\nvar assign = require(\"../../../../lib/assign\").assign;\n\n/* eslint-disable camelcase */\nvar cardTypeTransforms = {\n creditCard: {\n AMERICAN_EXPRESS: \"American Express\",\n DISCOVER: \"Discover\",\n INTERNATIONAL_MAESTRO: \"Maestro\",\n JCB: \"JCB\",\n MASTERCARD: \"MasterCard\",\n SOLO: \"Solo\",\n UK_MAESTRO: \"UK Maestro\",\n UNION_PAY: \"UnionPay\",\n VISA: \"Visa\",\n ELO: \"Elo\",\n HIPER: \"Hiper\",\n HIPERCARD: \"Hipercard\",\n },\n applePayWeb: {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n ELO: \"elo\",\n },\n visaCheckout: {\n VISA: \"Visa\",\n MASTERCARD: \"MasterCard\",\n DISCOVER: \"Discover\",\n AMERICAN_EXPRESS: \"American Express\",\n },\n googlePay: {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n ELO: \"elo\",\n },\n masterpass: {\n VISA: \"visa\",\n MASTERCARD: \"master\",\n DISCOVER: \"discover\",\n AMERICAN_EXPRESS: \"amex\",\n DINERS: \"diners\",\n INTERNATIONAL_MAESTRO: \"maestro\",\n JCB: \"jcb\",\n },\n};\n/* eslint-enable camelcase */\n\nfunction configurationResponseAdapter(responseBody, ctx) {\n var adaptedResponse;\n\n if (responseBody.data && !responseBody.errors) {\n adaptedResponse = adaptConfigurationResponseBody(responseBody, ctx);\n } else {\n adaptedResponse = errorResponseAdapter(responseBody);\n }\n\n return adaptedResponse;\n}\n\nfunction adaptConfigurationResponseBody(body, ctx) {\n var configuration = body.data.clientConfiguration;\n var response;\n\n response = {\n environment: configuration.environment.toLowerCase(),\n clientApiUrl: configuration.clientApiUrl,\n assetsUrl: configuration.assetsUrl,\n analytics: {\n url: configuration.analyticsUrl,\n },\n merchantId: configuration.merchantId,\n venmo: \"off\",\n };\n\n if (configuration.supportedFeatures) {\n response.graphQL = {\n url: ctx._graphQL._config.url,\n features: configuration.supportedFeatures.map(function (feature) {\n return feature.toLowerCase();\n }),\n };\n }\n\n if (configuration.braintreeApi) {\n response.braintreeApi = configuration.braintreeApi;\n }\n\n if (configuration.applePayWeb) {\n response.applePayWeb = configuration.applePayWeb;\n response.applePayWeb.supportedNetworks = mapCardTypes(\n configuration.applePayWeb.supportedCardBrands,\n cardTypeTransforms.applePayWeb\n );\n\n delete response.applePayWeb.supportedCardBrands;\n }\n\n if (configuration.ideal) {\n response.ideal = configuration.ideal;\n }\n\n if (configuration.kount) {\n response.kount = {\n kountMerchantId: configuration.kount.merchantId,\n };\n }\n\n if (configuration.creditCard) {\n response.challenges = configuration.creditCard.challenges.map(function (\n challenge\n ) {\n return challenge.toLowerCase();\n });\n\n response.creditCards = {\n supportedCardTypes: mapCardTypes(\n configuration.creditCard.supportedCardBrands,\n cardTypeTransforms.creditCard\n ),\n };\n response.threeDSecureEnabled = configuration.creditCard.threeDSecureEnabled;\n response.threeDSecure = configuration.creditCard.threeDSecure;\n } else {\n response.challenges = [];\n response.creditCards = {\n supportedCardTypes: [],\n };\n response.threeDSecureEnabled = false;\n }\n\n if (configuration.googlePay) {\n response.androidPay = {\n displayName: configuration.googlePay.displayName,\n enabled: true,\n environment: configuration.googlePay.environment.toLowerCase(),\n googleAuthorizationFingerprint:\n configuration.googlePay.googleAuthorization,\n paypalClientId: configuration.googlePay.paypalClientId,\n supportedNetworks: mapCardTypes(\n configuration.googlePay.supportedCardBrands,\n cardTypeTransforms.googlePay\n ),\n };\n }\n\n if (configuration.venmo) {\n response.payWithVenmo = {\n merchantId: configuration.venmo.merchantId,\n accessToken: configuration.venmo.accessToken,\n environment: configuration.venmo.environment.toLowerCase(),\n enrichedCustomerDataEnabled:\n configuration.venmo.enrichedCustomerDataEnabled,\n };\n }\n\n if (configuration.paypal) {\n response.paypalEnabled = true;\n response.paypal = assign({}, configuration.paypal);\n response.paypal.currencyIsoCode = response.paypal.currencyCode;\n response.paypal.environment = response.paypal.environment.toLowerCase();\n\n delete response.paypal.currencyCode;\n } else {\n response.paypalEnabled = false;\n }\n\n if (configuration.unionPay) {\n response.unionPay = {\n enabled: true,\n merchantAccountId: configuration.unionPay.merchantAccountId,\n };\n }\n\n if (configuration.visaCheckout) {\n response.visaCheckout = {\n apikey: configuration.visaCheckout.apiKey,\n encryptionKey: configuration.visaCheckout.encryptionKey,\n externalClientId: configuration.visaCheckout.externalClientId,\n supportedCardTypes: mapCardTypes(\n configuration.visaCheckout.supportedCardBrands,\n cardTypeTransforms.visaCheckout\n ),\n };\n }\n\n if (configuration.masterpass) {\n response.masterpass = {\n merchantCheckoutId: configuration.masterpass.merchantCheckoutId,\n supportedNetworks: mapCardTypes(\n configuration.masterpass.supportedCardBrands,\n cardTypeTransforms.masterpass\n ),\n };\n }\n\n if (configuration.usBankAccount) {\n response.usBankAccount = {\n routeId: configuration.usBankAccount.routeId,\n plaid: {\n publicKey: configuration.usBankAccount.plaidPublicKey,\n },\n };\n }\n\n return response;\n}\n\nfunction mapCardTypes(cardTypes, cardTypeTransformMap) {\n return cardTypes.reduce(function (acc, type) {\n if (cardTypeTransformMap.hasOwnProperty(type)) {\n return acc.concat(cardTypeTransformMap[type]);\n }\n\n return acc;\n }, []);\n}\n\nmodule.exports = configurationResponseAdapter;\n\n},{\"../../../../lib/assign\":88,\"./error\":60}],59:[function(require,module,exports){\n\"use strict\";\n\nvar errorResponseAdapter = require(\"./error\");\n\nvar CARD_BRAND_MAP = {\n /* eslint-disable camelcase */\n AMERICAN_EXPRESS: \"American Express\",\n DINERS: \"Discover\",\n DISCOVER: \"Discover\",\n ELO: \"Elo\",\n HIPER: \"Hiper\",\n HIPERCARD: \"Hipercard\",\n INTERNATIONAL_MAESTRO: \"Maestro\",\n JCB: \"JCB\",\n MASTERCARD: \"MasterCard\",\n UK_MAESTRO: \"Maestro\",\n UNION_PAY: \"UnionPay\",\n VISA: \"Visa\",\n /* eslint-enable camelcase */\n};\n\nvar BIN_DATA_MAP = {\n YES: \"Yes\",\n NO: \"No\",\n UNKNOWN: \"Unknown\",\n};\n\nvar AUTHENTICATION_INSIGHT_MAP = {\n PSDTWO: \"psd2\",\n};\n\nfunction creditCardTokenizationResponseAdapter(responseBody) {\n var adaptedResponse;\n\n if (responseBody.data && !responseBody.errors) {\n adaptedResponse = adaptTokenizeCreditCardResponseBody(responseBody);\n } else {\n adaptedResponse = errorResponseAdapter(responseBody);\n }\n\n return adaptedResponse;\n}\n\nfunction adaptTokenizeCreditCardResponseBody(body) {\n var data = body.data.tokenizeCreditCard;\n var creditCard = data.creditCard;\n var lastTwo = creditCard.last4 ? creditCard.last4.substr(2, 4) : \"\";\n var binData = creditCard.binData;\n var response, regulationEnvironment;\n\n if (binData) {\n [\n \"commercial\",\n \"debit\",\n \"durbinRegulated\",\n \"healthcare\",\n \"payroll\",\n \"prepaid\",\n ].forEach(function (key) {\n if (binData[key]) {\n binData[key] = BIN_DATA_MAP[binData[key]];\n } else {\n binData[key] = \"Unknown\";\n }\n });\n\n [\"issuingBank\", \"countryOfIssuance\", \"productId\"].forEach(function (key) {\n if (!binData[key]) {\n binData[key] = \"Unknown\";\n }\n });\n }\n\n response = {\n creditCards: [\n {\n binData: binData,\n consumed: false,\n description: lastTwo ? \"ending in \" + lastTwo : \"\",\n nonce: data.token,\n details: {\n cardholderName: creditCard.cardholderName,\n expirationMonth: creditCard.expirationMonth,\n expirationYear: creditCard.expirationYear,\n bin: creditCard.bin || \"\",\n cardType: CARD_BRAND_MAP[creditCard.brandCode] || \"Unknown\",\n lastFour: creditCard.last4 || \"\",\n lastTwo: lastTwo,\n },\n type: \"CreditCard\",\n threeDSecureInfo: null,\n },\n ],\n };\n\n if (data.authenticationInsight) {\n regulationEnvironment =\n data.authenticationInsight.customerAuthenticationRegulationEnvironment;\n response.creditCards[0].authenticationInsight = {\n regulationEnvironment:\n AUTHENTICATION_INSIGHT_MAP[regulationEnvironment] ||\n regulationEnvironment.toLowerCase(),\n };\n }\n\n return response;\n}\n\nmodule.exports = creditCardTokenizationResponseAdapter;\n\n},{\"./error\":60}],60:[function(require,module,exports){\n\"use strict\";\n\nfunction errorResponseAdapter(responseBody) {\n var response;\n var errorClass =\n responseBody.errors &&\n responseBody.errors[0] &&\n responseBody.errors[0].extensions &&\n responseBody.errors[0].extensions.errorClass;\n\n if (errorClass === \"VALIDATION\") {\n response = userErrorResponseAdapter(responseBody);\n } else if (errorClass) {\n response = errorWithClassResponseAdapter(responseBody);\n } else {\n response = {\n error: { message: \"There was a problem serving your request\" },\n fieldErrors: [],\n };\n }\n\n return response;\n}\n\nfunction errorWithClassResponseAdapter(responseBody) {\n return {\n error: { message: responseBody.errors[0].message },\n fieldErrors: [],\n };\n}\n\nfunction userErrorResponseAdapter(responseBody) {\n var fieldErrors = buildFieldErrors(responseBody.errors);\n\n if (fieldErrors.length === 0) {\n return { error: { message: responseBody.errors[0].message } };\n }\n\n return {\n error: { message: getLegacyMessage(fieldErrors) },\n fieldErrors: fieldErrors,\n };\n}\n\nfunction buildFieldErrors(errors) {\n var fieldErrors = [];\n\n errors.forEach(function (error) {\n if (!(error.extensions && error.extensions.inputPath)) {\n return;\n }\n addFieldError(error.extensions.inputPath.slice(1), error, fieldErrors);\n });\n\n return fieldErrors;\n}\n\nfunction addFieldError(inputPath, errorDetail, fieldErrors) {\n var fieldError;\n var legacyCode = errorDetail.extensions.legacyCode;\n var inputField = inputPath[0];\n\n if (inputPath.length === 1) {\n fieldErrors.push({\n code: legacyCode,\n field: inputField,\n message: errorDetail.message,\n });\n\n return;\n }\n\n fieldErrors.forEach(function (candidate) {\n if (candidate.field === inputField) {\n fieldError = candidate;\n }\n });\n\n if (!fieldError) {\n fieldError = { field: inputField, fieldErrors: [] };\n fieldErrors.push(fieldError);\n }\n\n addFieldError(inputPath.slice(1), errorDetail, fieldError.fieldErrors);\n}\n\nfunction getLegacyMessage(errors) {\n var legacyMessages = {\n creditCard: \"Credit card is invalid\",\n };\n\n var field = errors[0].field;\n\n return legacyMessages[field];\n}\n\nmodule.exports = errorResponseAdapter;\n\n},{}],61:[function(require,module,exports){\n\"use strict\";\n\nvar CONFIGURATION_QUERY =\n \"query ClientConfiguration { \" +\n \" clientConfiguration { \" +\n \" analyticsUrl \" +\n \" environment \" +\n \" merchantId \" +\n \" assetsUrl \" +\n \" clientApiUrl \" +\n \" creditCard { \" +\n \" supportedCardBrands \" +\n \" challenges \" +\n \" threeDSecureEnabled \" +\n \" threeDSecure { \" +\n \" cardinalAuthenticationJWT \" +\n \" } \" +\n \" } \" +\n \" applePayWeb { \" +\n \" countryCode \" +\n \" currencyCode \" +\n \" merchantIdentifier \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" googlePay { \" +\n \" displayName \" +\n \" supportedCardBrands \" +\n \" environment \" +\n \" googleAuthorization \" +\n \" paypalClientId \" +\n \" } \" +\n \" ideal { \" +\n \" routeId \" +\n \" assetsUrl \" +\n \" } \" +\n \" kount { \" +\n \" merchantId \" +\n \" } \" +\n \" masterpass { \" +\n \" merchantCheckoutId \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" paypal { \" +\n \" displayName \" +\n \" clientId \" +\n \" assetsUrl \" +\n \" environment \" +\n \" environmentNoNetwork \" +\n \" unvettedMerchant \" +\n \" braintreeClientId \" +\n \" billingAgreementsEnabled \" +\n \" merchantAccountId \" +\n \" currencyCode \" +\n \" payeeEmail \" +\n \" } \" +\n \" unionPay { \" +\n \" merchantAccountId \" +\n \" } \" +\n \" usBankAccount { \" +\n \" routeId \" +\n \" plaidPublicKey \" +\n \" } \" +\n \" venmo { \" +\n \" merchantId \" +\n \" accessToken \" +\n \" environment \" +\n \" enrichedCustomerDataEnabled\" +\n \" } \" +\n \" visaCheckout { \" +\n \" apiKey \" +\n \" externalClientId \" +\n \" supportedCardBrands \" +\n \" } \" +\n \" braintreeApi { \" +\n \" accessToken \" +\n \" url \" +\n \" } \" +\n \" supportedFeatures \" +\n \" } \" +\n \"}\";\n\nfunction configuration() {\n return {\n query: CONFIGURATION_QUERY,\n operationName: \"ClientConfiguration\",\n };\n}\n\nmodule.exports = configuration;\n\n},{}],62:[function(require,module,exports){\n\"use strict\";\n\nvar assign = require(\"../../../../lib/assign\").assign;\n\nfunction createMutation(config) {\n var hasAuthenticationInsight = config.hasAuthenticationInsight;\n var mutation = \"mutation TokenizeCreditCard($input: TokenizeCreditCardInput!\";\n\n if (hasAuthenticationInsight) {\n mutation += \", $authenticationInsightInput: AuthenticationInsightInput!\";\n }\n\n mutation +=\n \") { \" +\n \" tokenizeCreditCard(input: $input) { \" +\n \" token \" +\n \" creditCard { \" +\n \" bin \" +\n \" brandCode \" +\n \" last4 \" +\n \" cardholderName \" +\n \" expirationMonth\" +\n \" expirationYear\" +\n \" binData { \" +\n \" prepaid \" +\n \" healthcare \" +\n \" debit \" +\n \" durbinRegulated \" +\n \" commercial \" +\n \" payroll \" +\n \" issuingBank \" +\n \" countryOfIssuance \" +\n \" productId \" +\n \" } \" +\n \" } \";\n\n if (hasAuthenticationInsight) {\n mutation +=\n \" authenticationInsight(input: $authenticationInsightInput) {\" +\n \" customerAuthenticationRegulationEnvironment\" +\n \" }\";\n }\n\n mutation += \" } }\";\n\n return mutation;\n}\n\nfunction createCreditCardTokenizationBody(body, options) {\n var cc = body.creditCard;\n var billingAddress = cc && cc.billingAddress;\n var expDate = cc && cc.expirationDate;\n var expirationMonth =\n cc && (cc.expirationMonth || (expDate && expDate.split(\"/\")[0].trim()));\n var expirationYear =\n cc && (cc.expirationYear || (expDate && expDate.split(\"/\")[1].trim()));\n var variables = {\n input: {\n creditCard: {\n number: cc && cc.number,\n expirationMonth: expirationMonth,\n expirationYear: expirationYear,\n cvv: cc && cc.cvv,\n cardholderName: cc && cc.cardholderName,\n },\n options: {},\n },\n };\n\n if (options.hasAuthenticationInsight) {\n variables.authenticationInsightInput = {\n merchantAccountId: body.merchantAccountId,\n };\n }\n\n if (billingAddress) {\n variables.input.creditCard.billingAddress = billingAddress;\n }\n\n variables.input = addValidationRule(body, variables.input);\n\n return variables;\n}\n\nfunction addValidationRule(body, input) {\n var validate;\n\n if (\n body.creditCard &&\n body.creditCard.options &&\n typeof body.creditCard.options.validate === \"boolean\"\n ) {\n validate = body.creditCard.options.validate;\n } else if (\n (body.authorizationFingerprint && body.tokenizationKey) ||\n body.authorizationFingerprint\n ) {\n validate = true;\n } else if (body.tokenizationKey) {\n validate = false;\n }\n\n if (typeof validate === \"boolean\") {\n input.options = assign(\n {\n validate: validate,\n },\n input.options\n );\n }\n\n return input;\n}\n\nfunction creditCardTokenization(body) {\n var options = {\n hasAuthenticationInsight: Boolean(\n body.authenticationInsight && body.merchantAccountId\n ),\n };\n\n return {\n query: createMutation(options),\n variables: createCreditCardTokenizationBody(body, options),\n operationName: \"TokenizeCreditCard\",\n };\n}\n\nmodule.exports = creditCardTokenization;\n\n},{\"../../../../lib/assign\":88}],63:[function(require,module,exports){\n\"use strict\";\n\nvar features = {\n tokenize_credit_cards: \"payment_methods/credit_cards\", // eslint-disable-line camelcase\n configuration: \"configuration\",\n};\n\nvar disallowedInputPaths = [\"creditCard.options.unionPayEnrollment\"];\n\nfunction GraphQL(config) {\n this._config = config.graphQL;\n}\n\nGraphQL.prototype.getGraphQLEndpoint = function () {\n return this._config.url;\n};\n\nGraphQL.prototype.isGraphQLRequest = function (url, body) {\n var featureEnabled;\n var path = this.getClientApiPath(url);\n\n if (!this._isGraphQLEnabled() || !path) {\n return false;\n }\n\n featureEnabled = this._config.features.some(function (feature) {\n return features[feature] === path;\n });\n\n if (containsDisallowedlistedKeys(body)) {\n return false;\n }\n\n return featureEnabled;\n};\n\nGraphQL.prototype.getClientApiPath = function (url) {\n var path;\n var clientApiPrefix = \"/client_api/v1/\";\n var pathParts = url.split(clientApiPrefix);\n\n if (pathParts.length > 1) {\n path = pathParts[1].split(\"?\")[0];\n }\n\n return path;\n};\n\nGraphQL.prototype._isGraphQLEnabled = function () {\n return Boolean(this._config);\n};\n\nfunction containsDisallowedlistedKeys(body) {\n return disallowedInputPaths.some(function (keys) {\n var value = keys.split(\".\").reduce(function (accumulator, key) {\n return accumulator && accumulator[key];\n }, body);\n\n return value !== undefined; // eslint-disable-line no-undefined\n });\n}\n\nmodule.exports = GraphQL;\n\n},{}],64:[function(require,module,exports){\n\"use strict\";\n\nvar BRAINTREE_VERSION = require(\"../../constants\").BRAINTREE_VERSION;\n\nvar assign = require(\"../../../lib/assign\").assign;\nvar snakeCaseToCamelCase = require(\"../../../lib/snake-case-to-camel-case\");\n\nvar creditCardTokenizationBodyGenerator = require(\"./generators/credit-card-tokenization\");\nvar creditCardTokenizationResponseAdapter = require(\"./adapters/credit-card-tokenization\");\n\nvar configurationBodyGenerator = require(\"./generators/configuration\");\nvar configurationResponseAdapter = require(\"./adapters/configuration\");\n\nvar generators = {\n \"payment_methods/credit_cards\": creditCardTokenizationBodyGenerator,\n configuration: configurationBodyGenerator,\n};\nvar adapters = {\n \"payment_methods/credit_cards\": creditCardTokenizationResponseAdapter,\n configuration: configurationResponseAdapter,\n};\n\nfunction GraphQLRequest(options) {\n var clientApiPath = options.graphQL.getClientApiPath(options.url);\n\n this._graphQL = options.graphQL;\n this._data = options.data;\n this._method = options.method;\n this._headers = options.headers;\n this._clientSdkMetadata = {\n source: options.metadata.source,\n integration: options.metadata.integration,\n sessionId: options.metadata.sessionId,\n };\n this._sendAnalyticsEvent = options.sendAnalyticsEvent || Function.prototype;\n\n this._generator = generators[clientApiPath];\n this._adapter = adapters[clientApiPath];\n\n this._sendAnalyticsEvent(\"graphql.init\");\n}\n\nGraphQLRequest.prototype.getUrl = function () {\n return this._graphQL.getGraphQLEndpoint();\n};\n\nGraphQLRequest.prototype.getBody = function () {\n var formattedBody = formatBodyKeys(this._data);\n var generatedBody = this._generator(formattedBody);\n var body = assign(\n { clientSdkMetadata: this._clientSdkMetadata },\n generatedBody\n );\n\n return JSON.stringify(body);\n};\n\nGraphQLRequest.prototype.getMethod = function () {\n return \"POST\";\n};\n\nGraphQLRequest.prototype.getHeaders = function () {\n var authorization, headers;\n\n if (this._data.authorizationFingerprint) {\n this._sendAnalyticsEvent(\"graphql.authorization-fingerprint\");\n authorization = this._data.authorizationFingerprint;\n } else {\n this._sendAnalyticsEvent(\"graphql.tokenization-key\");\n authorization = this._data.tokenizationKey;\n }\n\n headers = {\n Authorization: \"Bearer \" + authorization,\n \"Braintree-Version\": BRAINTREE_VERSION,\n };\n\n return assign({}, this._headers, headers);\n};\n\nGraphQLRequest.prototype.adaptResponseBody = function (parsedBody) {\n return this._adapter(parsedBody, this);\n};\n\nGraphQLRequest.prototype.determineStatus = function (\n httpStatus,\n parsedResponse\n) {\n var status, errorClass;\n\n if (httpStatus === 200) {\n errorClass =\n parsedResponse.errors &&\n parsedResponse.errors[0] &&\n parsedResponse.errors[0].extensions &&\n parsedResponse.errors[0].extensions.errorClass;\n\n if (parsedResponse.data && !parsedResponse.errors) {\n status = 200;\n } else if (errorClass === \"VALIDATION\") {\n status = 422;\n } else if (errorClass === \"AUTHORIZATION\") {\n status = 403;\n } else if (errorClass === \"AUTHENTICATION\") {\n status = 401;\n } else if (isGraphQLError(errorClass, parsedResponse)) {\n status = 403;\n } else {\n status = 500;\n }\n } else if (!httpStatus) {\n status = 500;\n } else {\n status = httpStatus;\n }\n\n this._sendAnalyticsEvent(\"graphql.status.\" + httpStatus);\n this._sendAnalyticsEvent(\"graphql.determinedStatus.\" + status);\n\n return status;\n};\n\nfunction isGraphQLError(errorClass, parsedResponse) {\n return !errorClass && parsedResponse.errors[0].message;\n}\n\nfunction formatBodyKeys(originalBody) {\n var body = {};\n\n Object.keys(originalBody).forEach(function (key) {\n var camelCaseKey = snakeCaseToCamelCase(key);\n\n if (typeof originalBody[key] === \"object\") {\n body[camelCaseKey] = formatBodyKeys(originalBody[key]);\n } else if (typeof originalBody[key] === \"number\") {\n body[camelCaseKey] = String(originalBody[key]);\n } else {\n body[camelCaseKey] = originalBody[key];\n }\n });\n\n return body;\n}\n\nmodule.exports = GraphQLRequest;\n\n},{\"../../../lib/assign\":88,\"../../../lib/snake-case-to-camel-case\":125,\"../../constants\":52,\"./adapters/configuration\":58,\"./adapters/credit-card-tokenization\":59,\"./generators/configuration\":61,\"./generators/credit-card-tokenization\":62}],65:[function(require,module,exports){\n\"use strict\";\n\nvar once = require(\"../../lib/once\");\nvar AJAXDriver = require(\"./ajax-driver\");\n\nmodule.exports = function (options, cb) {\n cb = once(cb || Function.prototype);\n options.method = (options.method || \"GET\").toUpperCase();\n options.timeout = options.timeout == null ? 60000 : options.timeout;\n options.data = options.data || {};\n\n AJAXDriver.request(options, cb);\n};\n\n},{\"../../lib/once\":122,\"./ajax-driver\":56}],66:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function (body) {\n try {\n body = JSON.parse(body);\n } catch (e) {\n /* ignored */\n }\n\n return body;\n};\n\n},{}],67:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function (method, body) {\n if (typeof method !== \"string\") {\n throw new Error(\"Method must be a string\");\n }\n\n if (method.toLowerCase() !== \"get\" && body != null) {\n body = typeof body === \"string\" ? body : JSON.stringify(body);\n }\n\n return body;\n};\n\n},{}],68:[function(require,module,exports){\n\"use strict\";\n\nvar isXHRAvailable =\n typeof window !== \"undefined\" &&\n window.XMLHttpRequest &&\n \"withCredentials\" in new window.XMLHttpRequest();\n\nfunction getRequestObject() {\n return isXHRAvailable\n ? new window.XMLHttpRequest()\n : new window.XDomainRequest();\n}\n\nmodule.exports = {\n isAvailable: isXHRAvailable,\n getRequestObject: getRequestObject,\n};\n\n},{}],69:[function(require,module,exports){\n\"use strict\";\n\n/**\n * @name BraintreeError.Google Payment - Creation Error Codes\n * @description Errors that occur when [creating the Google Payment component](./module-braintree-web_google-payment.html#.create).\n * @property {MERCHANT} GOOGLE_PAYMENT_NOT_ENABLED Occurs when Google Pay is not enabled on the Braintree control panel.\n * @property {MERCHANT} GOOGLE_PAYMENT_UNSUPPORTED_VERSION Occurs when a Google Pay version is used that is not supported by the Braintree SDK.\n */\n\n/**\n * @name BraintreeError.Google Payment - parseResponse Error Codes\n * @description Errors that occur when [parsing the response from Google](./GooglePayment.html#parseResponse).\n * @property {UNKNOWN} GOOGLE_PAYMENT_GATEWAY_ERROR Occurs when Google Pay could not be tokenized.\n */\n\nvar BraintreeError = require(\"../lib/braintree-error\");\n\nmodule.exports = {\n GOOGLE_PAYMENT_NOT_ENABLED: {\n type: BraintreeError.types.MERCHANT,\n code: \"GOOGLE_PAYMENT_NOT_ENABLED\",\n message: \"Google Pay is not enabled for this merchant.\",\n },\n GOOGLE_PAYMENT_GATEWAY_ERROR: {\n code: \"GOOGLE_PAYMENT_GATEWAY_ERROR\",\n message:\n \"There was an error when tokenizing the Google Pay payment method.\",\n type: BraintreeError.types.UNKNOWN,\n },\n GOOGLE_PAYMENT_UNSUPPORTED_VERSION: {\n code: \"GOOGLE_PAYMENT_UNSUPPORTED_VERSION\",\n type: BraintreeError.types.MERCHANT,\n },\n};\n\n},{\"../lib/braintree-error\":91}],70:[function(require,module,exports){\n\"use strict\";\n\nvar analytics = require(\"../lib/analytics\");\nvar assign = require(\"../lib/assign\").assign;\nvar convertMethodsToError = require(\"../lib/convert-methods-to-error\");\nvar find = require(\"../lib/find\");\nvar generateGooglePayConfiguration = require(\"../lib/generate-google-pay-configuration\");\nvar BraintreeError = require(\"../lib/braintree-error\");\nvar errors = require(\"./errors\");\nvar methods = require(\"../lib/methods\");\nvar wrapPromise = require(\"@braintree/wrap-promise\");\n\nvar CREATE_PAYMENT_DATA_REQUEST_METHODS = {\n 1: \"_createV1PaymentDataRequest\",\n 2: \"_createV2PaymentDataRequest\",\n};\n\n/**\n * @typedef {object} GooglePayment~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} details Additional account details.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {boolean} details.isNetworkTokenized True if the card is network tokenized.\n * @property {string} details.bin First six digits of card number.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, `CreditCard` or `AndroidPayCard`.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * @class GooglePayment\n * @param {object} options Google Payment {@link module:braintree-web/google-payment.create create} options.\n * @description Do not use this constructor directly. Use {@link module:braintree-web/google-payment.create|braintree-web.google-payment.create} instead.\n * @classdesc This class represents a Google Payment component produced by {@link module:braintree-web/google-payment.create|braintree-web/google-payment.create}. Instances of this class have methods for initializing the Google Pay flow.\n */\nfunction GooglePayment(options) {\n this._createPromise = options.createPromise;\n this._client = options.client;\n this._useDeferredClient = options.useDeferredClient;\n // NEXT_MAJOR_VERSION this should be updated to 2 (or whatever the current latest version is)\n this._googlePayVersion = options.googlePayVersion || 1;\n this._googleMerchantId = options.googleMerchantId;\n\n if (this._isUnsupportedGooglePayAPIVersion()) {\n throw new BraintreeError({\n code: errors.GOOGLE_PAYMENT_UNSUPPORTED_VERSION.code,\n message:\n \"The Braintree SDK does not support Google Pay version \" +\n this._googlePayVersion +\n \". Please upgrade the version of your Braintree SDK and contact support if this error persists.\",\n type: errors.GOOGLE_PAYMENT_UNSUPPORTED_VERSION.type,\n });\n }\n}\n\nGooglePayment.prototype._waitForClient = function () {\n if (this._client) {\n return Promise.resolve();\n }\n\n return this._createPromise.then(\n function (client) {\n this._client = client;\n }.bind(this)\n );\n};\n\nGooglePayment.prototype._isUnsupportedGooglePayAPIVersion = function () {\n // if we don't have createPaymentDatqRequest method for the specific\n // API version, then the version is not supported\n return !(this._googlePayVersion in CREATE_PAYMENT_DATA_REQUEST_METHODS);\n};\n\nGooglePayment.prototype._getDefaultConfig = function () {\n if (!this._defaultConfig) {\n this._defaultConfig = generateGooglePayConfiguration(\n this._client.getConfiguration(),\n this._googlePayVersion,\n this._googleMerchantId\n );\n }\n\n return this._defaultConfig;\n};\n\nGooglePayment.prototype._createV1PaymentDataRequest = function (\n paymentDataRequest\n) {\n var defaultConfig = this._getDefaultConfig();\n var overrideCardNetworks =\n paymentDataRequest.cardRequirements &&\n paymentDataRequest.cardRequirements.allowedCardNetworks;\n var defaultConfigCardNetworks =\n defaultConfig.cardRequirements.allowedCardNetworks;\n var allowedCardNetworks = overrideCardNetworks || defaultConfigCardNetworks;\n\n paymentDataRequest = assign({}, defaultConfig, paymentDataRequest);\n\n // this way we can preserve allowedCardNetworks from default integration\n // if merchant did not pass any in `cardRequirements`\n paymentDataRequest.cardRequirements.allowedCardNetworks = allowedCardNetworks;\n\n return paymentDataRequest;\n};\n\nGooglePayment.prototype._createV2PaymentDataRequest = function (\n paymentDataRequest\n) {\n var defaultConfig = this._getDefaultConfig();\n\n if (paymentDataRequest.allowedPaymentMethods) {\n paymentDataRequest.allowedPaymentMethods.forEach(function (paymentMethod) {\n var defaultPaymentMethod = find(\n defaultConfig.allowedPaymentMethods,\n \"type\",\n paymentMethod.type\n );\n\n if (defaultPaymentMethod) {\n applyDefaultsToPaymentMethodConfiguration(\n paymentMethod,\n defaultPaymentMethod\n );\n }\n });\n }\n\n paymentDataRequest = assign({}, defaultConfig, paymentDataRequest);\n\n return paymentDataRequest;\n};\n\n/**\n * Create a configuration object for use in the `loadPaymentData` method.\n *\n * **Note**: Version 1 of the Google Pay Api is deprecated and will become unsupported in a future version. Until then, version 1 will continue to be used by default, and version 1 schema parameters and overrides will remain functional on existing integrations. However, new integrations and all following examples will be presented in the GooglePay version 2 schema. See [Google Pay's upgrade guide](https://developers.google.com/pay/api/web/guides/resources/update-to-latest-version) to see how to update your integration.\n *\n * If `options.googlePayVersion === 2` was set during the initial {@link module:braintree-web/google-payment.create|create} call, overrides must match the Google Pay v2 schema to be valid.\n *\n * @public\n * @param {object} overrides The supplied parameters for creating the PaymentDataRequest object. Required parameters are:\n * @param {object} overrides.transactionInfo Object according to the [Google Pay Transaction Info](https://developers.google.com/pay/api/web/reference/object#TransactionInfo) spec.\n * Optionally, any of the parameters in the [PaymentDataRequest](https://developers.google.com/pay/api/web/reference/object#PaymentDataRequest) parameters can be overridden, but note that it is recommended only to override top level parameters to avoid squashing deeply nested configuration objects. An example can be found below showing how to safely edit these deeply nested objects.\n * @example\n * var paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({\n * merchantInfo: {\n * merchantId: 'my-merchant-id-from-google'\n * },\n * transactionInfo: {\n * currencyCode: 'USD',\n * totalPriceStatus: 'FINAL',\n * totalPrice: '100.00'\n * }\n * });\n *\n * // Update card payment methods to require billing address\n * var cardPaymentMethod = paymentDataRequest.allowedPaymentMethods;\n * cardPaymentMethod.parameters.billingAddressRequired = true;\n * cardPaymentMethod.parameters.billingAddressParameters = {\n * format: 'FULL',\n * phoneNumberRequired: true\n * };\n *\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * })\n *\n * paymentsClient.loadPaymentData(paymentDataRequest).then(function (response) {\n * // handle response with googlePaymentInstance.parseResponse\n * // (see below)\n * });\n * @example With deferred client\n * googlePaymentInstance.createPaymentDataRequest({\n * merchantInfo: {\n * merchantId: 'my-merchant-id-from-google'\n * },\n * transactionInfo: {\n * currencyCode: 'USD',\n * totalPriceStatus: 'FINAL',\n * totalPrice: '100.00'\n * }\n * }).then(function (paymentDataRequest) {\n * // Update card payment methods to require billing address\n * var cardPaymentMethod = paymentDataRequest.allowedPaymentMethods;\n * cardPaymentMethod.parameters.billingAddressRequired = true;\n * cardPaymentMethod.parameters.billingAddressParameters = {\n * format: 'FULL',\n * phoneNumberRequired: true\n * };\n *\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * })\n *\n * return paymentsClient.loadPaymentData(paymentDataRequest);\n * }).then(function (response) {\n * // handle response with googlePaymentInstance.parseResponse\n * // (see below)\n * });\n * @returns {object|Promise} Returns a configuration object for Google PaymentDataRequest. If instantiated with `useDeferredClient` and an `authorization` it will return a promise that resolves with the configuration.\n */\nGooglePayment.prototype.createPaymentDataRequest = function (overrides) {\n if (!this._useDeferredClient) {\n return this._createPaymentDataRequestSyncronously(overrides);\n }\n\n return this._waitForClient().then(\n function () {\n return this._createPaymentDataRequestSyncronously(overrides);\n }.bind(this)\n );\n};\n\nGooglePayment.prototype._createPaymentDataRequestSyncronously = function (\n overrides\n) {\n var paymentDataRequest = assign({}, overrides);\n var version = this._googlePayVersion;\n var createPaymentDataRequestMethod =\n CREATE_PAYMENT_DATA_REQUEST_METHODS[version];\n\n analytics.sendEvent(\n this._createPromise,\n \"google-payment.v\" + version + \".createPaymentDataRequest\"\n );\n\n return this[createPaymentDataRequestMethod](paymentDataRequest);\n};\n\n/**\n * Parse the response from the tokenization.\n * @public\n * @param {object} response The response back from the Google Pay tokenization.\n * @param {callback} [callback] The second argument, data, is a {@link GooglePay~tokenizePayload|tokenizePayload}. If no callback is provided, `parseResponse` returns a promise that resolves with a {@link GooglePayment~tokenizePayload|tokenizePayload}.\n * @example with callback\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * })\n *\n * paymentsClient.loadPaymentData(paymentDataRequestFromCreatePaymentDataRequest).then(function (response) {\n * googlePaymentInstance.parseResponse(response, function (err, data) {\n * if (err) {\n * // handle errors\n * }\n * // send parsedResponse.nonce to your server\n * });\n * });\n * @example with promise\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * })\n *\n * paymentsClient.loadPaymentData(paymentDataRequestFromCreatePaymentDataRequest).then(function (response) {\n * return googlePaymentInstance.parseResponse(response);\n * }).then(function (parsedResponse) {\n * // send parsedResponse.nonce to your server\n * }).catch(function (err) {\n * // handle errors\n * });\n * @returns {(Promise|void)} Returns a promise that resolves the parsed response if no callback is provided.\n */\nGooglePayment.prototype.parseResponse = function (response) {\n var self = this;\n\n return Promise.resolve()\n .then(function () {\n var payload;\n var rawResponse =\n response.apiVersion === 2\n ? response.paymentMethodData.tokenizationData.token\n : response.paymentMethodToken.token;\n var parsedResponse = JSON.parse(rawResponse);\n var error = parsedResponse.error;\n\n if (error) {\n return Promise.reject(error);\n }\n\n analytics.sendEvent(\n self._createPromise,\n \"google-payment.parseResponse.succeeded\"\n );\n\n if (parsedResponse.paypalAccounts) {\n payload = parsedResponse.paypalAccounts[0];\n analytics.sendEvent(\n self._createPromise,\n \"google-payment.parseResponse.succeeded.paypal\"\n );\n\n return Promise.resolve({\n nonce: payload.nonce,\n type: payload.type,\n description: payload.description,\n });\n }\n payload = parsedResponse.androidPayCards[0];\n analytics.sendEvent(\n self._createPromise,\n \"google-payment.parseResponse.succeeded.google-payment\"\n );\n\n return Promise.resolve({\n nonce: payload.nonce,\n type: payload.type,\n description: payload.description,\n details: {\n cardType: payload.details.cardType,\n lastFour: payload.details.lastFour,\n lastTwo: payload.details.lastTwo,\n isNetworkTokenized: payload.details.isNetworkTokenized,\n bin: payload.details.bin,\n },\n binData: payload.binData,\n });\n })\n .catch(function (error) {\n analytics.sendEvent(\n self._createPromise,\n \"google-payment.parseResponse.failed\"\n );\n\n return Promise.reject(\n new BraintreeError({\n code: errors.GOOGLE_PAYMENT_GATEWAY_ERROR.code,\n message: errors.GOOGLE_PAYMENT_GATEWAY_ERROR.message,\n type: errors.GOOGLE_PAYMENT_GATEWAY_ERROR.type,\n details: {\n originalError: error,\n },\n })\n );\n });\n};\n\n/**\n * Cleanly tear down anything set up by {@link module:braintree-web/google-payment.create|create}.\n * @public\n * @param {callback} [callback] Called once teardown is complete. No data is returned if teardown completes successfully.\n * @example\n * googlePaymentInstance.teardown();\n * @example With callback\n * googlePaymentInstance.teardown(function () {\n * // teardown is complete\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nGooglePayment.prototype.teardown = function () {\n convertMethodsToError(this, methods(GooglePayment.prototype));\n\n return Promise.resolve();\n};\n\nfunction applyDefaultsToPaymentMethodConfiguration(\n merchantSubmittedPaymentMethod,\n defaultPaymentMethod\n) {\n Object.keys(defaultPaymentMethod).forEach(function (parameter) {\n if (typeof defaultPaymentMethod[parameter] === \"object\") {\n merchantSubmittedPaymentMethod[parameter] = assign(\n {},\n defaultPaymentMethod[parameter],\n merchantSubmittedPaymentMethod[parameter]\n );\n } else {\n merchantSubmittedPaymentMethod[parameter] =\n merchantSubmittedPaymentMethod[parameter] ||\n defaultPaymentMethod[parameter];\n }\n });\n}\n\nmodule.exports = wrapPromise.wrapPrototype(GooglePayment);\n\n},{\"../lib/analytics\":86,\"../lib/assign\":88,\"../lib/braintree-error\":91,\"../lib/convert-methods-to-error\":93,\"../lib/find\":103,\"../lib/generate-google-pay-configuration\":115,\"../lib/methods\":121,\"./errors\":69,\"@braintree/wrap-promise\":47}],71:[function(require,module,exports){\n\"use strict\";\n/**\n * @module braintree-web/google-payment\n * @description A component to integrate with Google Pay. The majority of the integration uses [Google's pay.js JavaScript file](https://pay.google.com/gp/p/js/pay.js). The Braintree component generates the configuration object necessary for Google Pay to initiate the Payment Request and parse the returned data to retrieve the payment method nonce which is used to process the transaction on the server.\n */\n\nvar GooglePayment = require(\"./google-payment\");\nvar BraintreeError = require(\"../lib/braintree-error\");\nvar createAssetsUrl = require(\"../lib/create-assets-url\");\nvar createDeferredClient = require(\"../lib/create-deferred-client\");\nvar basicComponentVerification = require(\"../lib/basic-component-verification\");\nvar wrapPromise = require(\"@braintree/wrap-promise\");\nvar VERSION = \"3.99.0\";\nvar errors = require(\"./errors\");\n\n/**\n * @static\n * @function create\n * @param {object} options Creation options:\n * @param {Client} [options.client] A {@link Client} instance.\n * @param {string} [options.authorization] A tokenizationKey or clientToken. Can be used in place of `options.client`.\n * @param {boolean} [options.useDeferredClient] Used in conjunction with `authorization`, allows the Google Payment instance to be available right away by fetching the client configuration in the background. When this option is used, {@link GooglePayment#createPaymentDataRequest} will return a promise that resolves with the configuration instead of returning synchronously.\n * @param {number} [options.googlePayVersion] The version of the Google Pay API to use. Value of 2 is required to accept parameters documented [by Google](https://developers.google.com/pay/api/web/reference/object). Omit this parameter to use the deprecated Google Pay Version 1.\n * @param {string} [options.googleMerchantId] A Google merchant identifier issued after your website is approved by Google. Required when PaymentsClient is initialized with an environment property of PRODUCTION, but may be omitted in TEST environment.\n * @param {callback} [callback] The second argument, `data`, is the {@link GooglePayment} instance. If no callback is provided, `create` returns a promise that resolves with the {@link GooglePayment} instance.\n * @example Simple Example\n * // include https://pay.google.com/gp/p/js/pay.js in a script tag\n * // on your page to load the `google.payments.api.PaymentsClient` global object.\n *\n * var paymentButton = document.querySelector('#google-pay-button');\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * });\n *\n * braintree.client.create({\n * authorization: 'tokenization-key-or-client-token'\n * }).then(function (clientInstance) {\n * return braintree.googlePayment.create({\n * client: clientInstance,\n * googlePayVersion: 2,\n * googleMerchantId: 'your-merchant-id-from-google'\n * });\n * }).then(function (googlePaymentInstance) {\n * paymentButton.addEventListener('click', function (event) {\n * var paymentDataRequest;\n *\n * event.preventDefault();\n *\n * paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({\n * transactionInfo: {\n * currencyCode: 'USD',\n * totalPriceStatus: 'FINAL',\n * totalPrice: '100.00'\n * }\n * });\n *\n * paymentsClient.loadPaymentData(paymentDataRequest).then(function (paymentData) {\n * return googlePaymentInstance.parseResponse(paymentData);\n * }).then(function (result) {\n * // send result.nonce to your server\n * }).catch(function (err) {\n * // handle err\n * });\n * });\n * });\n * @example Check Browser and Customer Compatibility\n * var paymentsClient = new google.payments.api.PaymentsClient({\n * environment: 'TEST' // or 'PRODUCTION'\n * });\n *\n * function setupGooglePayButton(googlePaymentInstance) {\n * var button = document.createElement('button');\n *\n * button.id = 'google-pay';\n * button.appendChild(document.createTextNode('Google Pay'));\n * button.addEventListener('click', function (event) {\n * var paymentRequestData;\n *\n * event.preventDefault();\n *\n * paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({\n * transactionInfo: {\n * currencyCode: 'USD',\n * totalPriceStatus: 'FINAL',\n * totalPrice: '100.00' // your amount\n * }\n * });\n *\n * paymentsClient.loadPaymentData(paymentDataRequest).then(function (paymentData) {\n * return googlePaymentInstance.parseResponse(paymentData);\n * }).then(function (result) {\n * // send result.nonce to your server\n * }).catch(function (err) {\n * // handle errors\n * });\n * });\n *\n * document.getElementById('container').appendChild(button);\n * }\n *\n * braintree.client.create({\n * authorization: 'tokenization-key-or-client-token'\n * }).then(function (clientInstance) {\n * return braintree.googlePayment.create({\n * client: clientInstance,\n * googlePayVersion: 2,\n * googleMerchantId: 'your-merchant-id-from-google'\n * });\n * }).then(function (googlePaymentInstance) {\n *\n * return paymentsClient.isReadyToPay({\n * // see https://developers.google.com/pay/api/web/reference/object#IsReadyToPayRequest for all options\n * apiVersion: 2,\n * apiVersionMinor: 0,\n * allowedPaymentMethods: googlePaymentInstance.createPaymentDataRequest().allowedPaymentMethods,\n * existingPaymentMethodRequired: true\n * });\n * }).then(function (response) {\n * if (response.result) {\n * setupGooglePayButton(googlePaymentInstance);\n * }\n * }).catch(function (err) {\n * // handle setup errors\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nfunction create(options) {\n var name = \"Google Pay\";\n\n return basicComponentVerification\n .verify({\n name: name,\n client: options.client,\n authorization: options.authorization,\n })\n .then(function () {\n var createPromise, instance;\n\n createPromise = createDeferredClient\n .create({\n authorization: options.authorization,\n client: options.client,\n debug: options.debug,\n assetsUrl: createAssetsUrl.create(options.authorization),\n name: name,\n })\n .then(function (client) {\n var configuration = client.getConfiguration();\n\n options.client = client;\n if (!configuration.gatewayConfiguration.androidPay) {\n return Promise.reject(\n new BraintreeError(errors.GOOGLE_PAYMENT_NOT_ENABLED)\n );\n }\n\n return client;\n });\n\n options.createPromise = createPromise;\n instance = new GooglePayment(options);\n\n if (!options.useDeferredClient) {\n return createPromise.then(function (client) {\n instance._client = client;\n\n return instance;\n });\n }\n\n return instance;\n });\n}\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of the SDK, i.e. `1.42.0`.\n * @type {string}\n */\n VERSION: VERSION,\n};\n\n},{\"../lib/basic-component-verification\":89,\"../lib/braintree-error\":91,\"../lib/create-assets-url\":95,\"../lib/create-deferred-client\":97,\"./errors\":69,\"./google-payment\":70,\"@braintree/wrap-promise\":47}],72:[function(require,module,exports){\n\"use strict\";\n\nvar BraintreeError = require(\"../../lib/braintree-error\");\nvar errors = require(\"../shared/errors\");\nvar allowedAttributes = require(\"../shared/constants\").allowedAttributes;\n\nfunction attributeValidationError(attribute, value) {\n var err;\n\n if (!allowedAttributes.hasOwnProperty(attribute)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED.type,\n code: errors.HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED.code,\n message:\n 'The \"' + attribute + '\" attribute is not supported in Hosted Fields.',\n });\n } else if (value != null && !_isValid(attribute, value)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED.type,\n code: errors.HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED.code,\n message:\n 'Value \"' +\n value +\n '\" is not allowed for \"' +\n attribute +\n '\" attribute.',\n });\n }\n\n return err;\n}\n\nfunction _isValid(attribute, value) {\n if (allowedAttributes[attribute] === \"string\") {\n return typeof value === \"string\" || typeof value === \"number\";\n } else if (allowedAttributes[attribute] === \"boolean\") {\n return String(value) === \"true\" || String(value) === \"false\";\n }\n\n return false;\n}\n\nmodule.exports = attributeValidationError;\n\n},{\"../../lib/braintree-error\":91,\"../shared/constants\":80,\"../shared/errors\":81}],73:[function(require,module,exports){\n\"use strict\";\n\nvar constants = require(\"../shared/constants\");\nvar useMin = require(\"../../lib/use-min\");\n\nmodule.exports = function composeUrl(assetsUrl, componentId, isDebug) {\n return (\n assetsUrl +\n \"/web/\" +\n constants.VERSION +\n \"/html/hosted-fields-frame\" +\n useMin(isDebug) +\n \".html#\" +\n componentId\n );\n};\n\n},{\"../../lib/use-min\":126,\"../shared/constants\":80}],74:[function(require,module,exports){\n\"use strict\";\n\nvar directions = require(\"../shared/constants\").navigationDirections;\nvar browserDetection = require(\"../shared/browser-detection\");\nvar focusIntercept = require(\"../shared/focus-intercept\");\nvar findParentTags = require(\"../shared/find-parent-tags\");\nvar userFocusableTagNames = [\"INPUT\", \"SELECT\", \"TEXTAREA\"];\n// Devices with software keyboards do not or cannot focus on input types\n// that do not require keyboard-based interaction.\nvar unfocusedInputTypes = [\n \"hidden\",\n \"button\",\n \"reset\",\n \"submit\",\n \"checkbox\",\n \"radio\",\n \"file\",\n];\n\nfunction _isUserFocusableElement(element) {\n if (!browserDetection.hasSoftwareKeyboard()) {\n // on desktop browsers, the only input type that isn't focusable\n // is the hidden input\n return element.type !== \"hidden\";\n }\n\n return (\n userFocusableTagNames.indexOf(element.tagName) > -1 &&\n unfocusedInputTypes.indexOf(element.type) < 0\n );\n}\n\nfunction _createNavigationHelper(direction, numberOfElementsInForm) {\n switch (direction) {\n case directions.BACK:\n return {\n checkIndexBounds: function (index) {\n return index < 0;\n },\n indexChange: -1,\n };\n case directions.FORWARD:\n return {\n checkIndexBounds: function (index) {\n return index > numberOfElementsInForm - 1;\n },\n indexChange: 1,\n };\n default:\n }\n\n return {};\n}\n\nfunction _findFirstFocusableElement(elementsInForm) {\n var elementsIndex, element;\n\n for (\n elementsIndex = 0;\n elementsIndex < elementsInForm.length;\n elementsIndex++\n ) {\n element = elementsInForm[elementsIndex];\n\n if (_isUserFocusableElement(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nmodule.exports = {\n removeExtraFocusElements: function (checkoutForm, onRemoveFocusIntercepts) {\n var elements = Array.prototype.slice.call(checkoutForm.elements);\n var firstFocusableInput = _findFirstFocusableElement(elements);\n var lastFocusableInput = _findFirstFocusableElement(elements.reverse());\n\n // these should never be identical, because there will at least be the\n // before and the after input\n [firstFocusableInput, lastFocusableInput].forEach(function (input) {\n if (!input) {\n return;\n }\n\n if (focusIntercept.matchFocusElement(input.getAttribute(\"id\"))) {\n onRemoveFocusIntercepts(input.getAttribute(\"id\"));\n }\n });\n },\n\n createFocusChangeHandler: function (hostedFieldsId, callbacks) {\n return function (data) {\n var currentIndex, targetElement, checkoutForm, navHelper;\n var sourceElement = document.getElementById(\n \"bt-\" + data.field + \"-\" + data.direction + \"-\" + hostedFieldsId\n );\n\n if (!sourceElement) {\n return;\n }\n\n checkoutForm = findParentTags(sourceElement, \"form\")[0];\n\n if (document.forms.length < 1 || !checkoutForm) {\n callbacks.onRemoveFocusIntercepts();\n\n return;\n }\n\n checkoutForm = [].slice.call(checkoutForm.elements);\n currentIndex = checkoutForm.indexOf(sourceElement);\n navHelper = _createNavigationHelper(data.direction, checkoutForm.length);\n\n do {\n currentIndex += navHelper.indexChange;\n if (navHelper.checkIndexBounds(currentIndex)) {\n return;\n }\n targetElement = checkoutForm[currentIndex];\n } while (!_isUserFocusableElement(targetElement));\n\n if (focusIntercept.matchFocusElement(targetElement.getAttribute(\"id\"))) {\n callbacks.onTriggerInputFocus(\n targetElement.getAttribute(\"data-braintree-type\")\n );\n } else {\n targetElement.focus();\n }\n };\n },\n};\n\n},{\"../shared/browser-detection\":79,\"../shared/constants\":80,\"../shared/find-parent-tags\":82,\"../shared/focus-intercept\":83}],75:[function(require,module,exports){\n\"use strict\";\n\nvar allowedStyles = require(\"../shared/constants\").allowedStyles;\n\nmodule.exports = function getStylesFromClass(cssClass) {\n var element = document.createElement(\"input\");\n var styles = {};\n var computedStyles;\n\n if (cssClass[0] === \".\") {\n cssClass = cssClass.substring(1);\n }\n\n element.className = cssClass;\n element.style.display = \"none !important\";\n element.style.position = \"fixed !important\";\n element.style.left = \"-99999px !important\";\n element.style.top = \"-99999px !important\";\n document.body.appendChild(element);\n\n computedStyles = window.getComputedStyle(element);\n\n allowedStyles.forEach(function (style) {\n var value = computedStyles[style];\n\n if (value) {\n styles[style] = value;\n }\n });\n\n document.body.removeChild(element);\n\n return styles;\n};\n\n},{\"../shared/constants\":80}],76:[function(require,module,exports){\n\"use strict\";\n\nvar assign = require(\"../../lib/assign\").assign;\nvar createAssetsUrl = require(\"../../lib/create-assets-url\");\nvar isVerifiedDomain = require(\"../../lib/is-verified-domain\");\nvar Destructor = require(\"../../lib/destructor\");\nvar iFramer = require(\"@braintree/iframer\");\nvar Bus = require(\"framebus\");\nvar createDeferredClient = require(\"../../lib/create-deferred-client\");\nvar BraintreeError = require(\"../../lib/braintree-error\");\nvar composeUrl = require(\"./compose-url\");\nvar getStylesFromClass = require(\"./get-styles-from-class\");\nvar constants = require(\"../shared/constants\");\nvar errors = require(\"../shared/errors\");\nvar INTEGRATION_TIMEOUT_MS =\n require(\"../../lib/constants\").INTEGRATION_TIMEOUT_MS;\nvar uuid = require(\"@braintree/uuid\");\nvar findParentTags = require(\"../shared/find-parent-tags\");\nvar browserDetection = require(\"../shared/browser-detection\");\nvar events = constants.events;\nvar EventEmitter = require(\"@braintree/event-emitter\");\nvar injectFrame = require(\"./inject-frame\");\nvar analytics = require(\"../../lib/analytics\");\nvar allowedFields = constants.allowedFields;\nvar methods = require(\"../../lib/methods\");\nvar shadow = require(\"../../lib/shadow\");\nvar findRootNode = require(\"../../lib/find-root-node\");\nvar convertMethodsToError = require(\"../../lib/convert-methods-to-error\");\nvar sharedErrors = require(\"../../lib/errors\");\nvar getCardTypes = require(\"../shared/get-card-types\");\nvar attributeValidationError = require(\"./attribute-validation-error\");\nvar wrapPromise = require(\"@braintree/wrap-promise\");\nvar focusChange = require(\"./focus-change\");\nvar destroyFocusIntercept = require(\"../shared/focus-intercept\").destroy;\n\nvar SAFARI_FOCUS_TIMEOUT = 5;\n\n/**\n * @typedef {object} HostedFields~tokenizePayload\n * @property {string} nonce The payment method nonce.\n * @property {object} authenticationInsight Info about the [regulatory environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) of the tokenized card. Only available if `authenticationInsight.merchantAccountId` is passed in the `tokenize` method options.\n * @property {string} authenticationInsight.regulationEnvironment The [regulation environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) for the tokenized card.\n * @property {object} details Additional account details.\n * @property {string} details.bin The BIN number of the card.\n * @property {string} details.cardType Type of card, ex: Visa, MasterCard.\n * @property {string} details.expirationMonth The expiration month of the card.\n * @property {string} details.expirationYear The expiration year of the card.\n * @property {string} details.cardholderName The cardholder name tokenized with the card.\n * @property {string} details.lastFour Last four digits of card number.\n * @property {string} details.lastTwo Last two digits of card number.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, always `CreditCard`.\n * @property {object} binData Information about the card based on the bin.\n * @property {string} binData.commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.countryOfIssuance The country of issuance.\n * @property {string} binData.debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.issuingBank The issuing bank.\n * @property {string} binData.payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} binData.productId The product id.\n */\n\n/**\n * @typedef {object} HostedFields~stateObject\n * @description The event payload sent from {@link HostedFields#on|on} or {@link HostedFields#getState|getState}.\n * @property {HostedFields~hostedFieldsCard[]} cards\n * This will return an array of potential {@link HostedFields~hostedFieldsCard|cards}. If the card type has been determined, the array will contain only one card.\n * Internally, Hosted Fields uses credit-card-type,\n * an open-source card detection library.\n * @property {string} emittedBy\n * The name of the field associated with an event. This will not be included if returned by {@link HostedFields#getState|getState}. It will be one of the following strings:
    \n * - `\"number\"`\n * - `\"cvv\"`\n * - `\"expirationDate\"`\n * - `\"expirationMonth\"`\n * - `\"expirationYear\"`\n * - `\"postalCode\"`\n * - `\"cardholderName\"`\n * @property {object} fields\n * @property {?HostedFields~hostedFieldsFieldData} fields.number {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the number field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.cvv {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the CVV field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationDate {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration date field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationMonth {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration month field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.expirationYear {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the expiration year field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.postalCode {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the postal code field, if it is present.\n * @property {?HostedFields~hostedFieldsFieldData} fields.cardholderName {@link HostedFields~hostedFieldsFieldData|hostedFieldsFieldData} for the cardholder name field, if it is present.\n */\n\n/**\n * @typedef {object} HostedFields~binPayload\n * @description The event payload sent from {@link HostedFields#on|on} when the {@link HostedFields#event:binAvailable|binAvailable} event is emitted.\n * @property {string} bin The first 6 digits of the card number.\n */\n\n/**\n * @typedef {object} HostedFields~hostedFieldsFieldData\n * @description Data about Hosted Fields fields, sent in {@link HostedFields~stateObject|stateObjects}.\n * @property {HTMLElement} container Reference to the container DOM element on your page associated with the current event.\n * @property {boolean} isFocused Whether or not the input is currently focused.\n * @property {boolean} isEmpty Whether or not the user has entered a value in the input.\n * @property {boolean} isPotentiallyValid\n * A determination based on the future validity of the input value.\n * This is helpful when a user is entering a card number and types \"41\".\n * While that value is not valid for submission, it is still possible for\n * it to become a fully qualified entry. However, if the user enters \"4x\"\n * it is clear that the card number can never become valid and isPotentiallyValid will\n * return false.\n * @property {boolean} isValid Whether or not the value of the associated input is fully qualified for submission.\n */\n\n/**\n * @typedef {object} HostedFields~hostedFieldsCard\n * @description Information about the card type, sent in {@link HostedFields~stateObject|stateObjects}.\n * @property {string} type The code-friendly representation of the card type. It will be one of the following strings:\n * - `american-express`\n * - `diners-club`\n * - `discover`\n * - `jcb`\n * - `maestro`\n * - `master-card`\n * - `unionpay`\n * - `visa`\n * @property {string} niceType The pretty-printed card type. It will be one of the following strings:\n * - `American Express`\n * - `Diners Club`\n * - `Discover`\n * - `JCB`\n * - `Maestro`\n * - `MasterCard`\n * - `UnionPay`\n * - `Visa`\n * @property {object} code\n * This object contains data relevant to the security code requirements of the card brand.\n * For example, on a Visa card there will be a CVV of 3 digits, whereas an\n * American Express card requires a 4-digit CID.\n * @property {string} code.name \"CVV\" \"CID\" \"CVC\"\n * @property {number} code.size The expected length of the security code. Typically, this is 3 or 4.\n */\n\n/**\n * @name HostedFields#on\n * @function\n * @param {string} event The name of the event to which you are subscribing.\n * @param {function} handler A callback to handle the event.\n * @description Subscribes a handler function to a named event.\n *\n * **Events that emit a {@link HostedFields~stateObject|stateObject}.**\n * * {@link HostedFields#event:blur|blur}\n * * {@link HostedFields#event:focus|focus}\n * * {@link HostedFields#event:empty|empty}\n * * {@link HostedFields#event:notEmpty|notEmpty}\n * * {@link HostedFields#event:cardTypeChange|cardTypeChange}\n * * {@link HostedFields#event:validityChange|validityChange}\n * * {@link HostedFields#event:inputSubmitRequest|inputSubmitRequest}\n *\n * **Other Events**\n * * {@link HostedFields#event:binAvailable|binAvailable} - emits a {@link HostedFields~binPayload|bin payload}. Note: If you are using a [Referrer-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) header that prevents the origin from being sent, this event will not fire.\n * @example\n * Listening to a Hosted Field event, in this case 'focus'\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('focus', function (event) {\n * console.log(event.emittedBy, 'has been focused');\n * });\n * });\n * @returns {void}\n */\n\n/**\n * @name HostedFields#off\n * @function\n * @param {string} event The name of the event to which you are unsubscribing.\n * @param {function} handler The callback for the event you are unsubscribing from.\n * @description Unsubscribes the handler function to a named event.\n * @example\n * Subscribing and then unsubscribing from a Hosted Field event, in this case 'focus'\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * var callback = function (event) {\n * console.log(event.emittedBy, 'has been focused');\n * };\n * hostedFieldsInstance.on('focus', callback);\n *\n * // later on\n * hostedFieldsInstance.off('focus', callback);\n * });\n * @returns {void}\n */\n\n/**\n * This event is emitted when the user requests submission of an input field, such as by pressing the Enter or Return key on their keyboard, or mobile equivalent.\n * @event HostedFields#inputSubmitRequest\n * @type {HostedFields~stateObject}\n * @example\n * Clicking a submit button upon hitting Enter (or equivalent) within a Hosted Field\n * var hostedFields = require('braintree-web/hosted-fields');\n * var submitButton = document.querySelector('input[type=\"submit\"]');\n *\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('inputSubmitRequest', function () {\n * // User requested submission, e.g. by pressing Enter or equivalent\n * submitButton.click();\n * });\n * });\n */\n\n/**\n * This event is emitted when a field transitions from having data to being empty.\n * @event HostedFields#empty\n * @type {HostedFields~stateObject}\n * @example\n * Listening to an empty event\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('empty', function (event) {\n * console.log(event.emittedBy, 'is now empty');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field transitions from being empty to having data.\n * @event HostedFields#notEmpty\n * @type {HostedFields~stateObject}\n * @example\n * Listening to an notEmpty event\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('notEmpty', function (event) {\n * console.log(event.emittedBy, 'is now not empty');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field loses focus.\n * @event HostedFields#blur\n * @type {HostedFields~stateObject}\n * @example\n * Listening to a blur event\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('blur', function (event) {\n * console.log(event.emittedBy, 'lost focus');\n * });\n * });\n */\n\n/**\n * This event is emitted when a field gains focus.\n * @event HostedFields#focus\n * @type {HostedFields~stateObject}\n * @example\n * Listening to a focus event\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('focus', function (event) {\n * console.log(event.emittedBy, 'gained focus');\n * });\n * });\n */\n\n/**\n * This event is emitted when activity within the number field has changed such that the possible card type has changed.\n * @event HostedFields#cardTypeChange\n * @type {HostedFields~stateObject}\n * @example\n * Listening to a cardTypeChange event\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('cardTypeChange', function (event) {\n * if (event.cards.length === 1) {\n * console.log(event.cards[0].type);\n * } else {\n * console.log('Type of card not yet known');\n * }\n * });\n * });\n */\n\n/**\n * This event is emitted when the validity of a field has changed. Validity is represented in the {@link HostedFields~stateObject|stateObject} as two booleans: `isValid` and `isPotentiallyValid`.\n * @event HostedFields#validityChange\n * @type {HostedFields~stateObject}\n * @example\n * Listening to a validityChange event\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('validityChange', function (event) {\n * var field = event.fields[event.emittedBy];\n *\n * if (field.isValid) {\n * console.log(event.emittedBy, 'is fully valid');\n * } else if (field.isPotentiallyValid) {\n * console.log(event.emittedBy, 'is potentially valid');\n * } else {\n * console.log(event.emittedBy, 'is not valid');\n * }\n * });\n * });\n */\n\n/**\n * This event is emitted when the first 6 digits of the card number have been entered by the customer.\n * @event HostedFields#binAvailable\n * @type {string}\n * @example\n * Listening to a `binAvailable` event\n * hostedFields.create({ ... }, function (createErr, hostedFieldsInstance) {\n * hostedFieldsInstance.on('binAvailable', function (event) {\n * event.bin // send bin to 3rd party bin service\n * });\n * });\n */\n\nfunction createInputEventHandler(fields) {\n return function (eventData) {\n var field;\n var merchantPayload = eventData.merchantPayload;\n var emittedBy = merchantPayload.emittedBy;\n var container = fields[emittedBy].containerElement;\n\n Object.keys(merchantPayload.fields).forEach(function (key) {\n merchantPayload.fields[key].container = fields[key].containerElement;\n });\n\n field = merchantPayload.fields[emittedBy];\n\n container.classList.toggle(\n constants.externalClasses.FOCUSED,\n field.isFocused\n );\n container.classList.toggle(constants.externalClasses.VALID, field.isValid);\n\n container.classList.toggle(\n constants.externalClasses.INVALID,\n !field.isPotentiallyValid\n );\n\n // eslint-disable-next-line no-invalid-this\n this._state = {\n cards: merchantPayload.cards,\n fields: merchantPayload.fields,\n };\n\n this._emit(eventData.type, merchantPayload); // eslint-disable-line no-invalid-this\n };\n}\n\nfunction isVisibleEnough(node) {\n var boundingBox = node.getBoundingClientRect();\n var verticalMidpoint = Math.floor(boundingBox.height / 2);\n var horizontalMidpoint = Math.floor(boundingBox.width / 2);\n\n return (\n boundingBox.top <\n (window.innerHeight - verticalMidpoint ||\n document.documentElement.clientHeight - verticalMidpoint) &&\n boundingBox.right > horizontalMidpoint &&\n boundingBox.bottom > verticalMidpoint &&\n boundingBox.left <\n (window.innerWidth - horizontalMidpoint ||\n document.documentElement.clientWidth - horizontalMidpoint)\n );\n}\n\n/**\n * @class HostedFields\n * @param {object} options The Hosted Fields {@link module:braintree-web/hosted-fields.create create} options.\n * @description Do not use this constructor directly. Use {@link module:braintree-web/hosted-fields.create|braintree-web.hosted-fields.create} instead.\n * @classdesc This class represents a Hosted Fields component produced by {@link module:braintree-web/hosted-fields.create|braintree-web/hosted-fields.create}. Instances of this class have methods for interacting with the input fields within Hosted Fields' iframes.\n */\nfunction HostedFields(options) {\n var failureTimeout, clientConfig, assetsUrl, isDebug, hostedFieldsUrl;\n var self = this;\n var fields = {};\n var frameReadyPromiseResolveFunctions = {};\n var frameReadyPromises = [];\n var componentId = uuid();\n\n this._merchantConfigurationOptions = assign({}, options);\n\n if (options.client) {\n clientConfig = options.client.getConfiguration();\n assetsUrl = clientConfig.gatewayConfiguration.assetsUrl;\n isDebug = clientConfig.isDebug;\n } else {\n assetsUrl = createAssetsUrl.create(options.authorization);\n isDebug = Boolean(options.isDebug);\n }\n\n this._clientPromise = createDeferredClient.create({\n client: options.client,\n authorization: options.authorization,\n debug: isDebug,\n assetsUrl: assetsUrl,\n name: \"Hosted Fields\",\n });\n\n hostedFieldsUrl = composeUrl(assetsUrl, componentId, isDebug);\n\n if (!options.fields || Object.keys(options.fields).length === 0) {\n throw new BraintreeError({\n type: sharedErrors.INSTANTIATION_OPTION_REQUIRED.type,\n code: sharedErrors.INSTANTIATION_OPTION_REQUIRED.code,\n message: \"options.fields is required when instantiating Hosted Fields.\",\n });\n }\n\n EventEmitter.call(this);\n\n this._injectedNodes = [];\n this._destructor = new Destructor();\n this._fields = fields;\n this._state = {\n fields: {},\n cards: getCardTypes(\"\"),\n };\n\n this._bus = new Bus({\n channel: componentId,\n verifyDomain: isVerifiedDomain,\n targetFrames: [window],\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n self._bus.teardown();\n });\n\n // NEXT_MAJOR_VERSION analytics events should have present tense verbs\n if (!options.client) {\n analytics.sendEvent(\n this._clientPromise,\n \"custom.hosted-fields.initialized.deferred-client\"\n );\n } else {\n analytics.sendEvent(\n this._clientPromise,\n \"custom.hosted-fields.initialized\"\n );\n }\n\n Object.keys(options.fields).forEach(\n function (key) {\n var field, externalContainer, internalContainer, frame, frameReadyPromise;\n\n if (!constants.allowedFields.hasOwnProperty(key)) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_INVALID_FIELD_KEY.type,\n code: errors.HOSTED_FIELDS_INVALID_FIELD_KEY.code,\n message: '\"' + key + '\" is not a valid field.',\n });\n }\n\n field = options.fields[key];\n // NEXT_MAJOR_VERSION remove selector as an option\n // and simply make the API take a container\n externalContainer = field.container || field.selector;\n\n if (typeof externalContainer === \"string\") {\n externalContainer = document.querySelector(externalContainer);\n }\n\n if (!externalContainer || externalContainer.nodeType !== 1) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.type,\n code: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.code,\n message: errors.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.message,\n details: {\n fieldSelector: field.selector,\n fieldContainer: field.container,\n fieldKey: key,\n },\n });\n } else if (\n externalContainer.querySelector('iframe[name^=\"braintree-\"]')\n ) {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.type,\n code: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.code,\n message: errors.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.message,\n details: {\n fieldSelector: field.selector,\n fieldContainer: field.container,\n fieldKey: key,\n },\n });\n }\n\n internalContainer = externalContainer;\n\n if (shadow.isShadowElement(internalContainer)) {\n internalContainer = shadow.transformToSlot(\n internalContainer,\n \"height: 100%\"\n );\n }\n\n if (field.maxlength && typeof field.maxlength !== \"number\") {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: \"The value for maxlength must be a number.\",\n details: {\n fieldKey: key,\n },\n });\n }\n\n if (field.minlength && typeof field.minlength !== \"number\") {\n throw new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: \"The value for minlength must be a number.\",\n details: {\n fieldKey: key,\n },\n });\n }\n\n frame = iFramer({\n type: key,\n name: \"braintree-hosted-field-\" + key,\n style: constants.defaultIFrameStyle,\n title:\n field.iframeTitle ||\n \"Secure Credit Card Frame - \" + constants.allowedFields[key].label,\n });\n this._bus.addTargetFrame(frame);\n\n this._injectedNodes.push.apply(\n this._injectedNodes,\n injectFrame(componentId, frame, internalContainer, function () {\n self.focus(key);\n })\n );\n\n this._setupLabelFocus(key, externalContainer);\n fields[key] = {\n frameElement: frame,\n containerElement: externalContainer,\n };\n frameReadyPromise = new Promise(function (resolve) {\n frameReadyPromiseResolveFunctions[key] = resolve;\n });\n frameReadyPromises.push(frameReadyPromise);\n\n this._state.fields[key] = {\n isEmpty: true,\n isValid: false,\n isPotentiallyValid: true,\n isFocused: false,\n container: externalContainer,\n };\n\n // prevents loading the iframe from blocking the code\n setTimeout(function () {\n frame.src = hostedFieldsUrl;\n }, 0);\n }.bind(this)\n );\n\n if (this._merchantConfigurationOptions.styles) {\n Object.keys(this._merchantConfigurationOptions.styles).forEach(function (\n selector\n ) {\n var className = self._merchantConfigurationOptions.styles[selector];\n\n if (typeof className === \"string\") {\n self._merchantConfigurationOptions.styles[selector] =\n getStylesFromClass(className);\n }\n });\n }\n\n this._bus.on(events.REMOVE_FOCUS_INTERCEPTS, function (data) {\n destroyFocusIntercept(data && data.id);\n });\n\n this._bus.on(\n events.TRIGGER_FOCUS_CHANGE,\n focusChange.createFocusChangeHandler(componentId, {\n onRemoveFocusIntercepts: function (element) {\n self._bus.emit(events.REMOVE_FOCUS_INTERCEPTS, {\n id: element,\n });\n },\n onTriggerInputFocus: function (targetType) {\n self.focus(targetType);\n },\n })\n );\n\n this._bus.on(events.READY_FOR_CLIENT, function (reply) {\n self._clientPromise.then(function (client) {\n reply(client);\n });\n });\n\n this._bus.on(events.CARD_FORM_ENTRY_HAS_BEGUN, function () {\n analytics.sendEvent(self._clientPromise, \"hosted-fields.input.started\");\n });\n\n this._bus.on(events.BIN_AVAILABLE, function (bin) {\n self._emit(\"binAvailable\", {\n bin: bin,\n });\n });\n\n failureTimeout = setTimeout(function () {\n analytics.sendEvent(\n self._clientPromise,\n \"custom.hosted-fields.load.timed-out\"\n );\n self._emit(\"timeout\");\n }, INTEGRATION_TIMEOUT_MS);\n\n Promise.all(frameReadyPromises).then(function (results) {\n var reply = results[0];\n\n clearTimeout(failureTimeout);\n reply(\n formatMerchantConfigurationForIframes(self._merchantConfigurationOptions)\n );\n\n self._cleanUpFocusIntercepts();\n\n self._emit(\"ready\");\n });\n\n this._bus.on(events.FRAME_READY, function (data, reply) {\n frameReadyPromiseResolveFunctions[data.field](reply);\n });\n\n this._bus.on(events.INPUT_EVENT, createInputEventHandler(fields).bind(this));\n\n this._destructor.registerFunctionForTeardown(function () {\n var j, node, parent;\n\n for (j = 0; j < self._injectedNodes.length; j++) {\n node = self._injectedNodes[j];\n parent = node.parentNode;\n\n parent.removeChild(node);\n\n parent.classList.remove(\n constants.externalClasses.FOCUSED,\n constants.externalClasses.INVALID,\n constants.externalClasses.VALID\n );\n }\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n destroyFocusIntercept();\n });\n\n this._destructor.registerFunctionForTeardown(function () {\n var methodNames = methods(HostedFields.prototype).concat(\n methods(EventEmitter.prototype)\n );\n\n convertMethodsToError(self, methodNames);\n });\n}\n\nEventEmitter.createChild(HostedFields);\n\nHostedFields.prototype._setupLabelFocus = function (type, container) {\n var labels, i;\n var self = this;\n var rootNode = findRootNode(container);\n\n if (container.id == null) {\n return;\n }\n\n function triggerFocus() {\n self.focus(type);\n }\n\n // find any labels in the normal DOM\n labels = Array.prototype.slice.call(\n document.querySelectorAll('label[for=\"' + container.id + '\"]')\n );\n if (rootNode !== document) {\n // find any labels within the shadow dom\n labels = labels.concat(\n Array.prototype.slice.call(\n rootNode.querySelectorAll('label[for=\"' + container.id + '\"]')\n )\n );\n }\n // find any labels surrounding the container that don't also have the `for` attribute\n labels = labels.concat(findParentTags(container, \"label\"));\n // filter out any accidental duplicates\n labels = labels.filter(function (label, index, arr) {\n return arr.indexOf(label) === index;\n });\n\n for (i = 0; i < labels.length; i++) {\n labels[i].addEventListener(\"click\", triggerFocus, false);\n }\n\n this._destructor.registerFunctionForTeardown(function () {\n for (i = 0; i < labels.length; i++) {\n labels[i].removeEventListener(\"click\", triggerFocus, false);\n }\n });\n};\n\nHostedFields.prototype._getAnyFieldContainer = function () {\n var self = this;\n\n return Object.keys(this._fields).reduce(function (found, field) {\n return found || self._fields[field].containerElement;\n }, null);\n};\n\nHostedFields.prototype._cleanUpFocusIntercepts = function () {\n var iframeContainer, checkoutForm;\n\n if (document.forms.length < 1) {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS);\n } else {\n iframeContainer = this._getAnyFieldContainer();\n checkoutForm = findParentTags(iframeContainer, \"form\")[0];\n\n if (checkoutForm) {\n focusChange.removeExtraFocusElements(\n checkoutForm,\n function (id) {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS, {\n id: id,\n });\n }.bind(this)\n );\n } else {\n this._bus.emit(events.REMOVE_FOCUS_INTERCEPTS);\n }\n }\n};\n\nHostedFields.prototype._attachInvalidFieldContainersToError = function (err) {\n if (\n !(\n err.details &&\n err.details.invalidFieldKeys &&\n err.details.invalidFieldKeys.length > 0\n )\n ) {\n return;\n }\n err.details.invalidFields = {};\n err.details.invalidFieldKeys.forEach(\n function (field) {\n err.details.invalidFields[field] = this._fields[field].containerElement;\n }.bind(this)\n );\n};\n\n/**\n * Get card verification challenges, such as requirements for cvv and postal code.\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. If no callback is provided, `getChallenges` returns a promise.\n * @example\n * hostedFieldsInstance.getChallenges().then(function (challenges) {\n * challenges // ['cvv', 'postal_code']\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.getChallenges = function () {\n return this._clientPromise.then(function (client) {\n return client.getConfiguration().gatewayConfiguration.challenges;\n });\n};\n\n/**\n * Get supported card types configured in the Braintree Control Panel\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. If no callback is provided, `getSupportedCardTypes` returns a promise.\n * @example\n * hostedFieldsInstance.getSupportedCardTypes().then(function (cardTypes) {\n * cardTypes // ['Visa', 'American Express', 'Mastercard']\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.getSupportedCardTypes = function () {\n return this._clientPromise.then(function (client) {\n var cards = client\n .getConfiguration()\n .gatewayConfiguration.creditCards.supportedCardTypes.map(function (\n cardType\n ) {\n if (cardType === \"MasterCard\") {\n // Mastercard changed their branding. We can't update our\n // config without creating a breaking change, so we just\n // hard code the change here\n return \"Mastercard\";\n }\n\n return cardType;\n });\n\n return cards;\n });\n};\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web/hosted-fields.create|create}.\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. No data is returned if teardown completes successfully. If no callback is provided, `teardown` returns a promise.\n * @example\n * hostedFieldsInstance.teardown(function (teardownErr) {\n * if (teardownErr) {\n * console.error('Could not tear down Hosted Fields!');\n * } else {\n * console.info('Hosted Fields has been torn down!');\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.teardown = function () {\n var self = this;\n\n return new Promise(function (resolve, reject) {\n self._destructor.teardown(function (err) {\n analytics.sendEvent(\n self._clientPromise,\n \"custom.hosted-fields.teardown-completed\"\n );\n\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n};\n\n/**\n * Tokenizes fields and returns a nonce payload.\n * @public\n * @param {object} [options] All tokenization options for the Hosted Fields component.\n * @param {boolean} [options.vault=false] When true, will vault the tokenized card. Cards will only be vaulted when using a client created with a client token that includes a customer ID. Note: merchants using Advanced Fraud Tools should not use this option, as device data will not be included.\n * @param {object} [options.authenticationInsight] Options for checking authentication insight - the [regulatory environment](https://developer.paypal.com/braintree/docs/guides/3d-secure/advanced-options/javascript/v3#authentication-insight) of the tokenized card.\n * @param {string} options.authenticationInsight.merchantAccountId The Braintree merchant account id to use to look up the authentication insight information.\n * @param {array} [options.fieldsToTokenize] By default, all fields will be tokenized. You may specify which fields specifically you wish to tokenize with this property. Valid options are `'number'`, `'cvv'`, `'expirationDate'`, `'expirationMonth'`, `'expirationYear'`, `'postalCode'`, `'cardholderName'`.\n * @param {string} [options.cardholderName] When supplied, the cardholder name to be tokenized with the contents of the fields.\n * @param {string} [options.billingAddress.postalCode] When supplied, this postal code will be tokenized along with the contents of the fields. If a postal code is provided as part of the Hosted Fields configuration, the value of the field will be tokenized and this value will be ignored.\n * @param {string} [options.billingAddress.firstName] When supplied, this customer first name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.lastName] When supplied, this customer last name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.company] When supplied, this company name will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.streetAddress] When supplied, this street address will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.extendedAddress] When supplied, this extended address will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.locality] When supplied, this locality (the city) will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.region] When supplied, this region (the state) will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeNumeric] When supplied, this numeric country code will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeAlpha2] When supplied, this alpha 2 representation of a country will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryCodeAlpha3] When supplied, this alpha 3 representation of a country will be tokenized along with the contents of the fields.\n * @param {string} [options.billingAddress.countryName] When supplied, this country name will be tokenized along with the contents of the fields.\n *\n * @param {callback} [callback] May be used as the only parameter of the function if no options are passed in. The second argument, data, is a {@link HostedFields~tokenizePayload|tokenizePayload}. If no callback is provided, `tokenize` returns a function that resolves with a {@link HostedFields~tokenizePayload|tokenizePayload}.\n * @example Tokenize a card\n * hostedFieldsInstance.tokenize(function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * switch (tokenizeErr.code) {\n * case 'HOSTED_FIELDS_FIELDS_EMPTY':\n * // occurs when none of the fields are filled in\n * console.error('All fields are empty! Please fill out the form.');\n * break;\n * case 'HOSTED_FIELDS_FIELDS_INVALID':\n * // occurs when certain fields do not pass client side validation\n * console.error('Some fields are invalid:', tokenizeErr.details.invalidFieldKeys);\n *\n * // you can also programmatically access the field containers for the invalid fields\n * tokenizeErr.details.invalidFields.forEach(function (fieldContainer) {\n * fieldContainer.className = 'invalid';\n * });\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE':\n * // occurs when:\n * // * the client token used for client authorization was generated\n * // with a customer ID and the fail on duplicate payment method\n * // option is set to true\n * // * the card being tokenized has previously been vaulted (with any customer)\n * // See: https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#options.fail_on_duplicate_payment_method\n * console.error('This payment method already exists in your vault.');\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED':\n * // occurs when:\n * // * the client token used for client authorization was generated\n * // with a customer ID and the verify card option is set to true\n * // and you have credit card verification turned on in the Braintree\n * // control panel\n * // * the cvv does not pass verification (https://developer.paypal.com/braintree/docs/reference/general/testing#avs-and-cvv/cid-responses)\n * // See: https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#options.verify_card\n * console.error('CVV did not pass verification');\n * break;\n * case 'HOSTED_FIELDS_FAILED_TOKENIZATION':\n * // occurs for any other tokenization error on the server\n * console.error('Tokenization failed server side. Is the card valid?');\n * break;\n * case 'HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR':\n * // occurs when the Braintree gateway cannot be contacted\n * console.error('Network error occurred when tokenizing.');\n * break;\n * default:\n * console.error('Something bad happened!', tokenizeErr);\n * }\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example Tokenize and vault a card\n * hostedFieldsInstance.tokenize({\n * vault: true\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example Tokenize a card with non-Hosted Fields cardholder name\n * hostedFieldsInstance.tokenize({\n * cardholderName: 'First Last'\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example Tokenize a card with non-Hosted Fields postal code option\n * hostedFieldsInstance.tokenize({\n * billingAddress: {\n * postalCode: '11111'\n * }\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example Tokenize a card with additional billing address options\n * hostedFieldsInstance.tokenize({\n * billingAddress: {\n * firstName: 'First',\n * lastName: 'Last',\n * company: 'Company',\n * streetAddress: '123 Street',\n * extendedAddress: 'Unit 1',\n * // passing just one of the country options is sufficient to\n * // associate the card details with a particular country\n * // valid country names and codes can be found here:\n * // https://developer.paypal.com/braintree/docs/reference/general/countries/ruby#list-of-countries\n * countryName: 'United States',\n * countryCodeAlpha2: 'US',\n * countryCodeAlpha3: 'USA',\n * countryCodeNumeric: '840'\n * }\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @example Allow tokenization with empty cardholder name field\n * var state = hostedFieldsInstance.getState();\n * var fields = Object.keys(state.fields);\n *\n * // normally, if you tried to tokenize an empty cardholder name field\n * // you would get an error, to allow making this field optional,\n * // tokenize all the fields except for the cardholder name field\n * // when the cardholder name field is empty. Otherwise, tokenize\n * // all the fields\n * if (state.fields.cardholderName.isEmpty) {\n * fields = fields.filter(function (field) {\n * return field !== 'cardholderName';\n * });\n * }\n *\n * hostedFieldsInstance.tokenize({\n * fieldsToTokenize: fields\n * }, function (tokenizeErr, payload) {\n * if (tokenizeErr) {\n * console.error(tokenizeErr);\n * } else {\n * console.log('Got nonce:', payload.nonce);\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.tokenize = function (options) {\n var self = this;\n\n if (!options) {\n options = {};\n }\n\n return new Promise(function (resolve, reject) {\n self._bus.emit(events.TOKENIZATION_REQUEST, options, function (response) {\n var err = response[0];\n var payload = response[1];\n\n if (err) {\n self._attachInvalidFieldContainersToError(err);\n reject(new BraintreeError(err));\n } else {\n resolve(payload);\n }\n });\n });\n};\n\n/**\n * Add a class to a {@link module:braintree-web/hosted-fields~field field}. Useful for updating field styles when events occur elsewhere in your checkout.\n * @public\n * @param {string} field The field you wish to add a class to. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} classname The class to be added.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the class is added successfully.\n *\n * @example\n * hostedFieldsInstance.addClass('number', 'custom-class', function (addClassErr) {\n * if (addClassErr) {\n * console.error(addClassErr);\n * }\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.addClass = function (field, classname) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when adding a class.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot add class to \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.ADD_CLASS, {\n field: field,\n classname: classname,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Removes a class to a {@link module:braintree-web/hosted-fields~field field}. Useful for updating field styles when events occur elsewhere in your checkout.\n * @public\n * @param {string} field The field you wish to remove a class from. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} classname The class to be removed.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the class is removed successfully.\n *\n * @example\n * hostedFieldsInstance.addClass('number', 'custom-class', function (addClassErr) {\n * if (addClassErr) {\n * console.error(addClassErr);\n * return;\n * }\n *\n * // some time later...\n * hostedFieldsInstance.removeClass('number', 'custom-class');\n * });\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.removeClass = function (field, classname) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when removing a class.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot remove class from \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.REMOVE_CLASS, {\n field: field,\n classname: classname,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Sets an attribute of a {@link module:braintree-web/hosted-fields~field field}.\n * Supported attributes are `aria-invalid`, `aria-required`, `disabled`, and `placeholder`.\n *\n * @public\n * @param {object} options The options for the attribute you wish to set.\n * @param {string} options.field The field to which you wish to add an attribute. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} options.attribute The name of the attribute you wish to add to the field.\n * @param {string} options.value The value for the attribute.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the attribute is set successfully.\n *\n * @example Set the placeholder attribute of a field\n * hostedFieldsInstance.setAttribute({\n * field: 'number',\n * attribute: 'placeholder',\n * value: '1111 1111 1111 1111'\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @example Set the aria-required attribute of a field\n * hostedFieldsInstance.setAttribute({\n * field: 'number',\n * attribute: 'aria-required',\n * value: true\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setAttribute = function (options) {\n var attributeErr, err;\n\n if (!allowedFields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n options.field +\n '\" is not a valid field. You must use a valid field option when setting an attribute.',\n });\n } else if (!this._fields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot set attribute for \"' +\n options.field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n attributeErr = attributeValidationError(options.attribute, options.value);\n\n if (attributeErr) {\n err = attributeErr;\n } else {\n this._bus.emit(events.SET_ATTRIBUTE, {\n field: options.field,\n attribute: options.attribute,\n value: options.value,\n });\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Sets the month options for the expiration month field when presented as a select element.\n *\n * @public\n * @param {array} options An array of 12 entries corresponding to the 12 months.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the options are updated successfully. Errors if expirationMonth is not configured on the Hosted Fields instance or if the expirationMonth field is not configured to be a select input.\n *\n * @example Update the month options to spanish\n * hostedFieldsInstance.setMonthOptions([\n * '01 - enero',\n * '02 - febrero',\n * '03 - marzo',\n * '04 - abril',\n * '05 - mayo',\n * '06 - junio',\n * '07 - julio',\n * '08 - agosto',\n * '09 - septiembre',\n * '10 - octubre',\n * '11 - noviembre',\n * '12 - diciembre'\n * ]);\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setMonthOptions = function (options) {\n var self = this;\n var merchantOptions = this._merchantConfigurationOptions.fields;\n var errorMessage;\n\n if (!merchantOptions.expirationMonth) {\n errorMessage = \"Expiration month field must exist to use setMonthOptions.\";\n } else if (!merchantOptions.expirationMonth.select) {\n errorMessage = \"Expiration month field must be a select element.\";\n }\n\n if (errorMessage) {\n return Promise.reject(\n new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,\n message: errorMessage,\n })\n );\n }\n\n return new Promise(function (resolve) {\n self._bus.emit(events.SET_MONTH_OPTIONS, options, resolve);\n });\n};\n\n/**\n * Sets a visually hidden message (for screen readers) on a {@link module:braintree-web/hosted-fields~field field}.\n *\n * @public\n * @param {object} options The options for the attribute you wish to set.\n * @param {string} options.field The field to which you wish to add an attribute. Must be a valid {@link module:braintree-web/hosted-fields~field field}.\n * @param {string} options.message The message to set.\n *\n * @example Set an error message on a field\n * hostedFieldsInstance.setMessage({\n * field: 'number',\n * message: 'Invalid card number'\n * });\n *\n * @example Remove the message on a field\n * hostedFieldsInstance.setMessage({\n * field: 'number',\n * message: ''\n * });\n *\n * @returns {void}\n */\nHostedFields.prototype.setMessage = function (options) {\n this._bus.emit(events.SET_MESSAGE, {\n field: options.field,\n message: options.message,\n });\n};\n\n/**\n * Removes a supported attribute from a {@link module:braintree-web/hosted-fields~field field}.\n *\n * @public\n * @param {object} options The options for the attribute you wish to remove.\n * @param {string} options.field The field from which you wish to remove an attribute. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} options.attribute The name of the attribute you wish to remove from the field.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the attribute is removed successfully.\n *\n * @example Remove the placeholder attribute of a field\n * hostedFieldsInstance.removeAttribute({\n * field: 'number',\n * attribute: 'placeholder'\n * }, function (attributeErr) {\n * if (attributeErr) {\n * console.error(attributeErr);\n * }\n * });\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.removeAttribute = function (options) {\n var attributeErr, err;\n\n if (!allowedFields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n options.field +\n '\" is not a valid field. You must use a valid field option when removing an attribute.',\n });\n } else if (!this._fields.hasOwnProperty(options.field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot remove attribute for \"' +\n options.field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n attributeErr = attributeValidationError(options.attribute);\n\n if (attributeErr) {\n err = attributeErr;\n } else {\n this._bus.emit(events.REMOVE_ATTRIBUTE, {\n field: options.field,\n attribute: options.attribute,\n });\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * @deprecated since version 3.8.0. Use {@link HostedFields#setAttribute|setAttribute} instead.\n *\n * @public\n * @param {string} field The field whose placeholder you wish to change. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {string} placeholder Will be used as the `placeholder` attribute of the input.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the placeholder updated successfully.\n *\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n */\nHostedFields.prototype.setPlaceholder = function (field, placeholder) {\n return this.setAttribute({\n field: field,\n attribute: \"placeholder\",\n value: placeholder,\n });\n};\n\n/**\n * Clear the value of a {@link module:braintree-web/hosted-fields~field field}.\n * @public\n * @param {string} field The field you wish to clear. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the field cleared successfully.\n * @returns {(Promise|void)} Returns a promise if no callback is provided.\n * @example\n * hostedFieldsInstance.clear('number', function (clearErr) {\n * if (clearErr) {\n * console.error(clearErr);\n * }\n * });\n *\n * @example Clear several fields\n * hostedFieldsInstance.clear('number');\n * hostedFieldsInstance.clear('cvv');\n * hostedFieldsInstance.clear('expirationDate');\n */\nHostedFields.prototype.clear = function (field) {\n var err;\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when clearing a field.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot clear \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n this._bus.emit(events.CLEAR_FIELD, {\n field: field,\n });\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Programmatically focus a {@link module:braintree-web/hosted-fields~field field}.\n * @public\n * @param {string} field The field you want to focus. Must be a valid {@link module:braintree-web/hosted-fields~fieldOptions fieldOption}.\n * @param {callback} [callback] Callback executed on completion, containing an error if one occurred. No data is returned if the field focused successfully.\n * @returns {void}\n * @example\n * hostedFieldsInstance.focus('number', function (focusErr) {\n * if (focusErr) {\n * console.error(focusErr);\n * }\n * });\n * @example Using an event listener\n * myElement.addEventListener('click', function (e) {\n * // In Firefox, the focus method can be suppressed\n * // if the element has a tabindex property or the element\n * // is an anchor link with an href property.\n * e.preventDefault();\n * hostedFieldsInstance.focus('number');\n * });\n */\nHostedFields.prototype.focus = function (field) {\n var err;\n var fieldConfig = this._fields[field];\n\n if (!allowedFields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_INVALID.type,\n code: errors.HOSTED_FIELDS_FIELD_INVALID.code,\n message:\n '\"' +\n field +\n '\" is not a valid field. You must use a valid field option when focusing a field.',\n });\n } else if (!this._fields.hasOwnProperty(field)) {\n err = new BraintreeError({\n type: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,\n code: errors.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,\n message:\n 'Cannot focus \"' +\n field +\n '\" field because it is not part of the current Hosted Fields options.',\n });\n } else {\n fieldConfig.frameElement.focus();\n\n this._bus.emit(events.TRIGGER_INPUT_FOCUS, {\n field: field,\n });\n\n if (browserDetection.isIos()) {\n // Inputs outside of the viewport don't always scroll into view on\n // focus in iOS Safari. 5ms timeout gives the browser a chance to\n // do the right thing and prevents stuttering.\n setTimeout(function () {\n if (!isVisibleEnough(fieldConfig.containerElement)) {\n fieldConfig.containerElement.scrollIntoView();\n }\n }, SAFARI_FOCUS_TIMEOUT);\n }\n }\n\n if (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve();\n};\n\n/**\n * Returns an {@link HostedFields~stateObject|object} that includes the state of all fields and possible card types.\n * @public\n * @returns {object} {@link HostedFields~stateObject|stateObject}\n * @example Check if all fields are valid\n * var state = hostedFieldsInstance.getState();\n *\n * var formValid = Object.keys(state.fields).every(function (key) {\n * return state.fields[key].isValid;\n * });\n */\nHostedFields.prototype.getState = function () {\n return this._state;\n};\n\n// React adds decorations to DOM nodes that cause\n// circular dependencies, so we remove them from the\n// config before sending it to the iframes. However,\n// we don't want to mutate the original object that\n// was passed in, so we create fresh objects via assign\nfunction formatMerchantConfigurationForIframes(config) {\n var formattedConfig = assign({}, config);\n\n formattedConfig.fields = assign({}, formattedConfig.fields);\n Object.keys(formattedConfig.fields).forEach(function (field) {\n formattedConfig.fields[field] = assign({}, formattedConfig.fields[field]);\n delete formattedConfig.fields[field].container;\n });\n\n return formattedConfig;\n}\n\nmodule.exports = wrapPromise.wrapPrototype(HostedFields);\n\n},{\"../../lib/analytics\":86,\"../../lib/assign\":88,\"../../lib/braintree-error\":91,\"../../lib/constants\":92,\"../../lib/convert-methods-to-error\":93,\"../../lib/create-assets-url\":95,\"../../lib/create-deferred-client\":97,\"../../lib/destructor\":99,\"../../lib/errors\":101,\"../../lib/find-root-node\":102,\"../../lib/is-verified-domain\":119,\"../../lib/methods\":121,\"../../lib/shadow\":124,\"../shared/browser-detection\":79,\"../shared/constants\":80,\"../shared/errors\":81,\"../shared/find-parent-tags\":82,\"../shared/focus-intercept\":83,\"../shared/get-card-types\":84,\"./attribute-validation-error\":72,\"./compose-url\":73,\"./focus-change\":74,\"./get-styles-from-class\":75,\"./inject-frame\":77,\"@braintree/event-emitter\":37,\"@braintree/iframer\":39,\"@braintree/uuid\":43,\"@braintree/wrap-promise\":47,\"framebus\":167}],77:[function(require,module,exports){\n\"use strict\";\n\nvar focusIntercept = require(\"../shared/focus-intercept\");\nvar directions = require(\"../shared/constants\").navigationDirections;\n\nmodule.exports = function injectFrame(id, frame, container, focusHandler) {\n var frameType = frame.getAttribute(\"type\");\n var clearboth = document.createElement(\"div\");\n var fragment = document.createDocumentFragment();\n var focusInterceptBefore = focusIntercept.generate(\n id,\n frameType,\n directions.BACK,\n focusHandler\n );\n var focusInterceptAfter = focusIntercept.generate(\n id,\n frameType,\n directions.FORWARD,\n focusHandler\n );\n\n clearboth.style.clear = \"both\";\n\n fragment.appendChild(focusInterceptBefore);\n fragment.appendChild(frame);\n fragment.appendChild(focusInterceptAfter);\n fragment.appendChild(clearboth);\n\n container.appendChild(fragment);\n\n return [frame, clearboth];\n};\n\n},{\"../shared/constants\":80,\"../shared/focus-intercept\":83}],78:[function(require,module,exports){\n\"use strict\";\n/** @module braintree-web/hosted-fields */\n\nvar HostedFields = require(\"./external/hosted-fields\");\nvar basicComponentVerification = require(\"../lib/basic-component-verification\");\nvar errors = require(\"./shared/errors\");\nvar supportsInputFormatting = require(\"restricted-input/supports-input-formatting\");\nvar wrapPromise = require(\"@braintree/wrap-promise\");\nvar BraintreeError = require(\"../lib/braintree-error\");\nvar VERSION = \"3.99.0\";\n\n/**\n * Fields used in {@link module:braintree-web/hosted-fields~fieldOptions fields options}\n * @typedef {object} field\n * @property {string} selector Deprecated: Now an alias for `options.container`.\n * @property {(string|HTMLElement)} container A DOM node or CSS selector to find the container where the hosted field will be inserted.\n * @property {string} [placeholder] Will be used as the `placeholder` attribute of the input. If `placeholder` is not natively supported by the browser, it will be polyfilled.\n * @property {string} [type] Will be used as the `type` attribute of the input. To mask `cvv` input, for instance, `type: \"password\"` can be used.\n * @property {string} [iframeTitle] The title used for the iframe containing the credit card input. By default, this will be `Secure Credit Card Frame - `.\n * @property {string} [internalLabel] Each Hosted Field iframe has a hidden label that is used by screen readers to identify the input. The `internalLabel` property can be used to customize the field for localization purposes. The default values are:\n * * number: Credit Card Number\n * * cvv: CVV\n * * expirationDate: Expiration Date\n * * expirationMonth: Expiration Month\n * * expirationYear: Expiration Year\n * * postalCode: Postal Code\n * * cardholderName: Cardholder Name\n * @property {boolean} [formatInput=true] Enable or disable automatic formatting on this field.\n * @property {(object|boolean)} [maskInput=false] Enable or disable input masking when input is not focused. If set to `true` instead of an object, the defaults for the `maskInput` parameters will be used.\n * @property {string} [maskInput.character=•] The character to use when masking the input. The default character ('•') uses a unicode symbol, so the webpage must support UTF-8 characters when using the default.\n * @property {Boolean} [maskInput.showLastFour=false] Only applicable for the credit card field. Whether or not to show the last 4 digits of the card when masking.\n * @property {(object|boolean)} [select] If truthy, this field becomes a `\\n \\n
    {{saveCardLabel}}
    \\n \\n \\n \\n \\n\\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n
    \\n \\n \\n\\n
    \\n
    {{otherWaysToPay}}
    \\n
    \\n\\n
    \\n {{chooseAnotherWayToPay}}\\n
    \\n\\n
    \\n\";\nvar svgHTML = \"\\n \\n \\n Visa\\n \\n \\n\\n \\n MasterCard\\n \\n \\n \\n \\n \\n \\n\\n \\n Union Pay\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n American Express\\n \\n \\n \\n \\n\\n \\n JCB\\n \\n \\n \\n \\n \\n\\n \\n Discover\\n \\n \\n \\n \\n \\n\\n \\n Diners Club\\n \\n \\n \\n \\n \\n\\n \\n Maestro\\n \\n \\n \\n \\n \\n \\n\\n \\n Elo\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n Hiper\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n Hipercard\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n PayPal Logo\\n \\n \\n \\n \\n \\n \\n\\n \\n PayPal Credit Logo\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n Generic Card\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n CVV Back\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n CVV Front\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n Check\\n \\n \\n\\n \\n X\\n \\n \\n\\n \\n Lock Loader\\n \\n \\n\\n \\n \\n \\n \\n\\n \\n Apple Pay Logo\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n Google Pay Mark\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n Venmo\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n\";\n\nvar PASS_THROUGH_EVENTS = [\n 'changeActiveView',\n 'paymentMethodRequestable',\n 'noPaymentMethodRequestable',\n 'paymentOptionSelected',\n\n // Card View Events\n 'card:binAvailable',\n 'card:blur',\n 'card:cardTypeChange',\n 'card:empty',\n 'card:focus',\n 'card:inputSubmitRequest',\n 'card:notEmpty',\n 'card:validityChange',\n\n // 3DS Events\n '3ds:customer-canceled',\n '3ds:authentication-modal-render',\n '3ds:authentication-modal-close'\n];\nvar UPDATABLE_CONFIGURATION_OPTIONS = [\n paymentOptionIDs.paypal,\n paymentOptionIDs.paypalCredit,\n paymentOptionIDs.applePay,\n paymentOptionIDs.googlePay,\n 'threeDSecure'\n];\nvar UPDATABLE_CONFIGURATION_OPTIONS_THAT_REQUIRE_UNVAULTED_PAYMENT_METHODS_TO_BE_REMOVED = [\n paymentOptionIDs.paypal,\n paymentOptionIDs.paypalCredit,\n paymentOptionIDs.applePay,\n paymentOptionIDs.googlePay\n];\nvar HAS_RAW_PAYMENT_DATA = {};\nvar VERSION = '1.42.0';\n\nHAS_RAW_PAYMENT_DATA[constants.paymentMethodTypes.googlePay] = true;\nHAS_RAW_PAYMENT_DATA[constants.paymentMethodTypes.applePay] = true;\n\n/**\n * @typedef {object} Dropin~cardPaymentMethodPayload\n * @property {string} nonce The payment method nonce, used by your server to charge the card.\n * @property {object} details Additional account details. See a full list of details in the [Hosted Fields client reference](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#~tokenizePayload).\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, always `CreditCard` when the method requested is a card.\n * @property {object} binData Information about the card based on the bin. Documented {@link Dropin~binData|here}.\n * @property {?boolean} vaulted If present and true, indicates that the payment method refers to a vaulted payment method.\n * @property {?string} deviceData If data collector is configured, the device data property to be used when making a transaction.\n * @property {?boolean} liabilityShifted If 3D Secure is configured, whether or not liability did shift.\n * @property {?boolean} liabilityShiftPossible If 3D Secure is configured, whether or not liability shift is possible.\n * @property {?object} threeDSecureInfo If 3D Secure is configured, the `threeDSecureInfo` documented in the [Three D Secure client reference](http://braintree.github.io/braintree-web/3.99.0/ThreeDSecure.html#~verifyPayload)\n */\n\n/**\n * @typedef {object} Dropin~paypalPaymentMethodPayload\n * @property {string} nonce The payment method nonce, used by your server to charge the PayPal account.\n * @property {?boolean} vaulted If present and true, indicates that the payment method refers to a vaulted payment method.\n * @property {object} details Additional PayPal account details. See a full list of details in the [PayPal client reference](http://braintree.github.io/braintree-web/3.99.0/PayPalCheckout.html#~tokenizePayload).\n * @property {string} type The payment method type, always `PayPalAccount` when the method requested is a PayPal account.\n * @property {?string} deviceData If data collector is configured, the device data property to be used when making a transaction.\n */\n\n/**\n * @typedef {object} Dropin~applePayPaymentMethodPayload\n * @property {string} nonce The payment method nonce, used by your server to charge the Apple Pay provided card.\n * @property {?boolean} vaulted If present and true, indicates that the payment method refers to a vaulted payment method.\n * @property {string} details.cardType Type of card, ex: Visa, Mastercard.\n * @property {string} details.cardHolderName The name of the card holder.\n * @property {string} details.dpanLastTwo Last two digits of card number.\n * @property {external:ApplePayPayment} details.rawPaymentData The raw response back from the Apple Pay flow, which includes billing/shipping address, phone and email if passed in as required parameters.\n * @property {string} description A human-readable description.\n * @property {string} type The payment method type, always `ApplePayCard` when the method requested is an Apple Pay provided card.\n * @property {object} binData Information about the card based on the bin. Documented {@link Dropin~binData|here}.\n * @property {?string} deviceData If data collector is configured, the device data property to be used when making a transaction.\n */\n\n/**\n * @typedef {object} ApplePayPayment An [Apple Pay Payment object](https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypayment).\n * @external ApplePayPayment\n * @see {@link https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypayment ApplePayPayment}\n */\n\n/**\n * @typedef {object} Dropin~venmoPaymentMethodPayload\n * @property {string} nonce The payment method nonce, used by your server to charge the Venmo account.\n * @property {?boolean} vaulted If present and true, indicates that the payment method refers to a vaulted payment method.\n * @property {string} details.username The Venmo username.\n * @property {string} type The payment method type, always `VenmoAccount` when the method requested is a Venmo account.\n * @property {?string} deviceData If data collector is configured, the device data property to be used when making a transaction.\n */\n\n/**\n * @typedef {object} Dropin~googlePayPaymentMethodPayload\n * @property {string} nonce The payment method nonce, used by your server to charge the Google Pay card.\n * @property {?boolean} vaulted If present and true, indicates that the payment method refers to a vaulted payment method.\n * @property {string} details.cardType Type of card, ex: Visa, Mastercard.\n * @property {string} details.lastFour The last 4 digits of the card.\n * @property {string} details.lastTwo The last 2 digits of the card.\n * @property {boolean} details.isNetworkTokenized True if the card is network tokenized. A network tokenized card is a generated virtual card with a device-specific account number (DPAN) that is used in place of the underlying source card.\n * @property {string} details.bin First six digits of card number.\n * @property {external:GooglePayPaymentData} details.rawPaymentData The raw response back from the Google Pay flow, which includes shipping address, phone and email if passed in as required parameters.\n * @property {string} type The payment method type, always `AndroidPayCard` when the method requested is a Google Pay Card.\n * @property {object} binData Information about the card based on the bin. Documented {@link Dropin~binData|here}.\n * @property {?string} deviceData If data collector is configured, the device data property to be used when making a transaction.\n */\n\n/**\n * @typedef {object} GooglePayPaymentData A [Google Pay Payment Data object](https://developers.google.com/pay/api/web/object-reference#PaymentData).\n * @external GooglePayPaymentData\n * @see {@link https://developers.google.com/pay/api/web/object-reference#PaymentData PaymentData}\n */\n\n/**\n * @typedef {object} Dropin~binData Information about the card based on the bin.\n * @property {string} commercial Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} countryOfIssuance The country of issuance.\n * @property {string} debit Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} durbinRegulated Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} healthcare Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} issuingBank The issuing bank.\n * @property {string} payroll Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} prepaid Possible values: 'Yes', 'No', 'Unknown'.\n * @property {string} productId The product id.\n */\n\n/**\n * @name Dropin#on\n * @function\n * @param {string} event The name of the event to which you are subscribing.\n * @param {function} handler A callback to handle the event.\n * @description Subscribes a handler function to a named event. `event` should be one of the following:\n *\n * * [`changeActiveView`](#event:changeActiveView)\n * * [`paymentMethodRequestable`](#event:paymentMethodRequestable)\n * * [`noPaymentMethodRequestable`](#event:noPaymentMethodRequestable)\n * * [`paymentOptionSelected`](#event:paymentOptionSelected)\n *\n * _Card View Specific Events_\n * * [`card:binAvailable`](#event:card:binAvailable)\n * * [`card:blur`](#event:card:blur)\n * * [`card:cardTypeChange`](#event:card:cardTypeChange)\n * * [`card:empty`](#event:card:empty)\n * * [`card:focus`](#event:card:focus)\n * * [`card:inputSubmitRequest`](#event:card:inputSubmitRequest)\n * * [`card:notEmpty`](#event:card:notEmpty)\n * * [`card:validityChange`](#event:card:validityChange)\n *\n * _3DS Specific Events_\n * * [`3ds:customer-canceled`](#event:3ds:customer-canceled)\n * * [`3ds:authentication-modal-render`](#event:3ds:authentication-modal-render)\n * * [`3ds:authentication-modal-close`](#event:3ds:authentication-modal-close)\n * @returns {void}\n * @example\n * Dynamically enable or disable your submit button based on whether or not the payment method is requestable\n * var submitButton = document.querySelector('#submit-button');\n *\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container'\n * }, function (err, dropinInstance) {\n * submitButton.addEventListener('click', function () {\n * dropinInstance.requestPaymentMethod(function (err, payload) {\n * // Send payload.nonce to your server.\n * });\n * });\n *\n * if (dropinInstance.isPaymentMethodRequestable()) {\n * // This will be true if you generated the client token\n * // with a customer ID and there is a saved payment method\n * // available to tokenize with that customer.\n * submitButton.removeAttribute('disabled');\n * }\n *\n * dropinInstance.on('paymentMethodRequestable', function (event) {\n * console.log(event.type); // The type of Payment Method, e.g 'CreditCard', 'PayPalAccount'.\n * console.log(event.paymentMethodIsSelected); // true if a customer has selected a payment method when paymentMethodRequestable fires\n *\n * submitButton.removeAttribute('disabled');\n * });\n *\n * dropinInstance.on('noPaymentMethodRequestable', function () {\n * submitButton.setAttribute('disabled', true);\n * });\n * });\n *\n * @example\n * Automatically submit nonce to server as soon as it becomes available\n * var submitButton = document.querySelector('#submit-button');\n *\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container'\n * }, function (err, dropinInstance) {\n * function sendNonceToServer() {\n * dropinInstance.requestPaymentMethod(function (err, payload) {\n * if (err) {\n * // handle errors\n * }\n *\n * // send payload.nonce to your server\n * });\n * }\n *\n * // allows us to still request the payment method manually, such as\n * // when filling out a credit card form\n * submitButton.addEventListener('click', sendNonceToServer);\n *\n * dropinInstance.on('paymentMethodRequestable', function (event) {\n * // if the nonce is already available (via PayPal authentication\n * // or by using a stored payment method), we can request the\n * // nonce right away. Otherwise, we wait for the customer to\n * // request the nonce by pressing the submit button once they\n * // are finished entering their credit card details. This is\n * // particularly important if your credit card form includes a\n * // postal code input. The `paymentMethodRequestable` event\n * // could fire before the customer has finished entering their\n * // postal code. (International postal codes can be as few as 3\n * // characters in length)\n * if (event.paymentMethodIsSelected) {\n * sendNonceToServer();\n * }\n * });\n * });\n * @example\n * Listen for when the customer navigates to different views in Drop-in\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container'\n * }, function (err, dropinInstance) {\n * dropinInstance.on('changeActiveView', function (event) {\n * // fires when the view changes, such as going from the\n * // credit card view to the saved payment methods view\n * event.oldActivePaymentViewId; // card\n * event.newActivePaymentViewId; // methods\n * });\n * });\n * @example\n * Listen on various events from the card view\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container'\n * }, function (err, dropinInstance) {\n * dropinInstance.on('card:focus', function (event) {\n * // a card field was focussed\n * });\n * dropinInstance.on('card:blur', function (event) {\n * // a card field was blurred\n * });\n * dropinInstance.on('card:validityChange', function (event) {\n * // the card form went from invalid to valid or valid to invalid\n * });\n * });\n */\n\n/**\n * @name Dropin#off\n * @function\n * @param {string} event The name of the event to which you are unsubscribing.\n * @param {function} handler A callback to unsubscribe from the event.\n * @description Unsubscribes a handler function to a named event.\n * @returns {void}\n * @example\n * Subscribe and then unsubscribe from event\n * var callback = function (event) {\n * // do something\n * };\n * dropinInstance.on('paymentMethodRequestable', callback);\n *\n * // later on\n * dropinInstance.off('paymentMethodRequestable', callback);\n */\n\n/**\n * This event is emitted when the payment method available in Drop-in changes. This includes when the state of Drop-in transitions from having no payment method available to having a payment method available and when the kind of payment method available changes. This event is not fired if there is no payment method available on initialization. To check if there is a payment method requestable on initialization, use {@link Dropin#isPaymentMethodRequestable|`isPaymentMethodRequestable`}.\n * @event Dropin#paymentMethodRequestable\n * @type {Dropin~paymentMethodRequestablePayload}\n */\n\n/**\n * @typedef {object} Dropin~paymentMethodRequestablePayload\n * @description The event payload sent from {@link Dropin#on|`on`} with the {@link Dropin#event:paymentMethodRequestable|`paymentMethodRequestable`} event.\n * @property {string} type The type of payment method that is requestable. Either `CreditCard` or `PayPalAccount`.\n * @property {boolean} paymentMethodIsSelected A property to determine if a payment method is currently selected when the payment method becomes requestable.\n *\n * This will be `true` any time a payment method is visibly selected in the Drop-in UI, such as when PayPal authentication completes or a stored payment method is selected.\n *\n * This will be `false` when {@link Dropin#requestPaymentMethod|`requestPaymentMethod`} can be called, but a payment method is not currently selected. For instance, when a card form has been filled in with valid values, but has not been submitted to be converted into a payment method nonce.\n */\n\n/**\n * This event is emitted when there is no payment method available in Drop-in. This event is not fired if there is no payment method available on initialization. To check if there is a payment method requestable on initialization, use {@link Dropin#isPaymentMethodRequestable|`isPaymentMethodRequestable`}. No payload is available in the callback for this event.\n * @event Dropin#noPaymentMethodRequestable\n */\n\n/**\n * This event is emitted when the customer selects a new payment option type (e.g. PayPal, PayPal Credit, credit card). This event is not emitted when the user changes between existing saved payment methods. Only relevant when accepting multiple payment options.\n * @event Dropin#paymentOptionSelected\n * @type {Dropin~paymentOptionSelectedPayload}\n */\n\n/**\n * This event is emitted when the Drop-in view changes what is presented as the active view.\n * @event Dropin#changeActiveView\n * @type {Dropin~changeActiveView}\n */\n\n/**\n * @typedef {object} Dropin~changeActiveView\n * @description The event payload sent from {@link Dropin#on|`on`} with the {@link Dropin#event:changeActiveView|`changeActiveView`} event.\n * @property {string} previousViewId The id for the previously active view. Possible values are:\n * * `card` - The credit card form view\n * * `paypal` - The PayPal view\n * * `payapCredit` - The PayPal Credit view\n * * `venmo` - The Venmo View\n * * `googlePay` - The Google Pay view\n * * `applePay` - The Apple Pay view\n * * `methods` - The view presenting the available payment methods (already vaulted or tokenized payment methods)\n * * `options` - The view presenting the available payment options (where the customer chooses what payment method option to use). Note, if both the methods view and the options view are presented at the same time, `methods` will be shown as the view id.\n * * `delete-confirmation` - The view where the customer confirms they would like to delete their saved payment method.\n * @property {string} newViewId The id for the new active view. The possible values are the same as `previousViewId`.\n */\n\n/**\n * The underlying [hosted fields `binAvailable` event](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#event:binAvailable).\n * @event Dropin#card:binAvailable\n * @type {Dropin~card:binAvailable}\n */\n\n/**\n * The underlying [hosted fields `blur` event](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#event:blur).\n * @event Dropin#card:blur\n * @type {Dropin~card:blur}\n */\n\n/**\n * The underlying [hosted fields `cardTypeChange` event](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#event:cardTypeChange).\n * @event Dropin#card:cardTypeChange\n * @type {Dropin~card:cardTypeChange}\n */\n\n/**\n * The underlying [hosted fields `empty` event](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#event:empty).\n * @event Dropin#card:empty\n * @type {Dropin~card:empty}\n */\n\n/**\n * The underlying [hosted fields `focus` event](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#event:focus).\n * @event Dropin#card:focus\n * @type {Dropin~card:focus}\n */\n\n/**\n * The underlying [hosted fields `inputSubmitRequest` event](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#event:inputSubmitRequest).\n * @event Dropin#card:inputSubmitRequest\n * @type {Dropin~card:inputSubmitRequest}\n */\n\n/**\n * The underlying [hosted fields `notEmpty` event](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#event:notEmpty).\n * @event Dropin#card:notEmpty\n * @type {Dropin~card:notEmpty}\n */\n\n/**\n * The underlying [hosted fields `validityChange` event](http://braintree.github.io/braintree-web/3.99.0/HostedFields.html#event:validityChange).\n * @event Dropin#card:validityChange\n * @type {Dropin~card:validityChange}\n */\n\n/**\n * The underlying [3D Secure `customer-canceled` event](http://braintree.github.io/braintree-web/3.99.0/ThreeDSecure.html#event:customer-canceled).\n * @event Dropin#3ds:customer-canceled\n * @type {Dropin~3ds:customer-canceled}\n */\n\n/**\n * The underlying [3D Secure `authentication-modal-render` event](http://braintree.github.io/braintree-web/3.99.0/ThreeDSecure.html#event:authentication-modal-render).\n * @event Dropin#3ds:authentication-modal-render\n * @type {Dropin~3ds:authentication-modal-render}\n */\n\n/**\n * The underlying [3D Secure `authentication-modal-close` event](http://braintree.github.io/braintree-web/3.99.0/ThreeDSecure.html#event:authentication-modal-close).\n * @event Dropin#3ds:authentication-modal-close\n * @type {Dropin~3ds:authentication-modal-close}\n */\n\n/**\n * @typedef {object} Dropin~paymentOptionSelectedPayload\n * @description The event payload sent from {@link Dropin#on|`on`} with the {@link Dropin#event:paymentOptionSelected|`paymentOptionSelected`} event.\n * @property {string} paymentOption The payment option view selected. Either `card`, `paypal`, or `paypalCredit`.\n */\n\n/**\n * @class\n * @param {object} options For create options, see {@link module:braintree-web-drop-in|dropin.create}.\n * @description Do not use this constructor directly. Use {@link module:braintree-web-drop-in|dropin.create} instead.\n * @classdesc This class represents a Drop-in component, that will create a pre-made UI for accepting cards and PayPal on your page. Instances of this class have methods for requesting a payment method and subscribing to events. For more information, see the [Drop-in guide](https://developer.paypal.com/braintree/docs/guides/drop-in/overview/javascript/v3) in the Braintree Developer Docs. To be used in conjunction with the [Braintree Server SDKs](https://developer.paypal.com/braintree/docs/start/hello-server).\n */\nfunction Dropin(options) {\n this._client = options.client;\n this._componentID = uuid();\n this._dropinWrapper = document.createElement('div');\n this._dropinWrapper.id = 'braintree--dropin__' + this._componentID;\n this._dropinWrapper.setAttribute('data-braintree-id', 'wrapper');\n this._dropinWrapper.style.display = 'none';\n this._dropinWrapper.className = 'braintree-loading';\n this._merchantConfiguration = options.merchantConfiguration;\n\n EventEmitter.call(this);\n}\n\nEventEmitter.createChild(Dropin);\n\nDropin.prototype._initialize = function (callback) {\n var localizedStrings, localizedHTML;\n var self = this;\n var container = self._merchantConfiguration.container || self._merchantConfiguration.selector;\n\n if (!container) {\n analytics.sendEvent(self._client, 'configuration-error');\n callback(new DropinError('options.container is required.'));\n\n return;\n } else if (self._merchantConfiguration.container && self._merchantConfiguration.selector) {\n analytics.sendEvent(self._client, 'configuration-error');\n callback(new DropinError('Must only have one options.selector or options.container.'));\n\n return;\n }\n\n if (typeof container === 'string') {\n container = document.querySelector(container);\n }\n\n if (!container || container.nodeType !== 1) {\n analytics.sendEvent(self._client, 'configuration-error');\n callback(new DropinError('options.selector or options.container must reference a valid DOM node.'));\n\n return;\n }\n\n if (container.innerHTML.trim()) {\n analytics.sendEvent(self._client, 'configuration-error');\n callback(new DropinError('options.selector or options.container must reference an empty DOM node.'));\n\n return;\n }\n\n // Backfill with `en`\n self._strings = assign({}, translations.en);\n if (self._merchantConfiguration.locale) {\n localizedStrings = translations[self._merchantConfiguration.locale] || translations[self._merchantConfiguration.locale.split('_')[0]];\n // Fill `strings` with `localizedStrings` that may exist\n self._strings = assign(self._strings, localizedStrings);\n }\n\n if (!isUtf8()) {\n // non-utf-8 encodings often don't support the bullet character\n self._strings.endingIn = self._strings.endingIn.replace(/•/g, '*');\n }\n\n if (self._merchantConfiguration.translations) {\n Object.keys(self._merchantConfiguration.translations).forEach(function (key) {\n self._strings[key] = sanitizeHtml(self._merchantConfiguration.translations[key]);\n });\n }\n\n localizedHTML = Object.keys(self._strings).reduce(function (result, stringKey) {\n var stringValue = self._strings[stringKey];\n\n return result.replace(RegExp('{{' + stringKey + '}}', 'g'), stringValue);\n }, mainHTML);\n\n self._dropinWrapper.innerHTML = svgHTML + localizedHTML;\n container.appendChild(self._dropinWrapper);\n\n self._model = new DropinModel({\n client: self._client,\n container: container,\n componentID: self._componentID,\n merchantConfiguration: self._merchantConfiguration\n });\n\n self._injectStylesheet();\n\n self._model.initialize().then(function () {\n self._model.on('cancelInitialization', function (err) {\n self._dropinWrapper.innerHTML = '';\n analytics.sendEvent(self._client, 'load-error');\n callback(err);\n });\n\n self._model.on('asyncDependenciesReady', function () {\n if (self._model.hasAtLeastOneAvailablePaymentOption()) {\n analytics.sendEvent(self._client, 'appeared');\n self._disableErroredPaymentMethods();\n\n self._handleAppSwitch();\n\n self._model.confirmDropinReady();\n\n callback(null, self);\n } else {\n self._model.cancelInitialization(new DropinError('All payment options failed to load.'));\n }\n });\n\n PASS_THROUGH_EVENTS.forEach(function (eventName) {\n self._model.on(eventName, function (event) {\n self._emit(eventName, event);\n });\n });\n\n return self._setUpDependenciesAndViews();\n }).catch(function (err) {\n self.teardown().then(function () {\n callback(err);\n });\n });\n};\n\n/**\n * Modify your configuration initially set in {@link module:braintree-web-drop-in|`dropin.create`}.\n *\n * If `updateConfiguration` is called after a user completes the PayPal authorization flow, any PayPal accounts not stored in the Vault record will be removed.\n * @public\n * @param {string} property The top-level property to update. Either `paypal`, `paypalCredit`, `applePay`, or `googlePay`.\n * @param {string} key The key of the property to update, such as `amount` or `currency`.\n * @param {any} value The value of the property to update. Must be the type of the property specified in {@link module:braintree-web-drop-in|`dropin.create`}.\n * @returns {void}\n * @example\n * dropinInstance.updateConfiguration('paypal', 'amount', '10.00');\n */\nDropin.prototype.updateConfiguration = function (property, key, value) {\n var view;\n\n if (UPDATABLE_CONFIGURATION_OPTIONS.indexOf(property) === -1) {\n return;\n }\n\n if (property === 'threeDSecure') {\n if (this._threeDSecure) {\n this._threeDSecure.updateConfiguration(key, value);\n }\n\n return;\n }\n\n view = this._mainView.getView(property);\n\n if (!view) {\n return;\n }\n\n view.updateConfiguration(key, value);\n\n if (UPDATABLE_CONFIGURATION_OPTIONS_THAT_REQUIRE_UNVAULTED_PAYMENT_METHODS_TO_BE_REMOVED.indexOf(property) === -1) {\n return;\n }\n\n this._removeUnvaultedPaymentMethods(function (paymentMethod) {\n return paymentMethod.type === constants.paymentMethodTypes[property];\n });\n this._navigateToInitialView();\n};\n\n/**\n * Get a list of the available payment methods presented to the user. This is useful for knowing if a paricular payment option was presented to a customer that is browser dependant such as Apple Pay, Google Pay and Venmo. Returns an array of strings. Possible values:\n * * `applePay`\n * * `card`\n * * `googlePay`\n * * `paypalCredit`\n * * `paypal`\n * * `venmo`\n *\n * @public\n * @returns {string[]} An array of possible payment options.\n * @example\n * var paymentOptions = dropinInstance.getAvailablePaymentOptions(); // ['card', 'venmo', 'paypal']\n *\n * if (paymentOptions.includes('venmo')) {\n * // special logic for when venmo is displayed\n * }\n */\nDropin.prototype.getAvailablePaymentOptions = function () {\n return this._model.supportedPaymentOptions;\n};\n\n/**\n * Removes the currently selected payment method and returns the customer to the payment options view. Does not remove vaulted payment methods.\n * @public\n * @returns {void}\n * @example\n * dropinInstance.requestPaymentMethod(function (requestPaymentMethodError, payload) {\n * if (requestPaymentMethodError) {\n * // handle errors\n * return;\n * }\n *\n * functionToSendNonceToServer(payload.nonce, function (transactionError, response) {\n * if (transactionError) {\n * // transaction sale with selected payment method failed\n * // clear the selected payment method and add a message\n * // to the checkout page about the failure\n * dropinInstance.clearSelectedPaymentMethod();\n * divForErrorMessages.textContent = 'my error message about entering a different payment method.';\n * } else {\n * // redirect to success page\n * }\n * });\n * });\n */\nDropin.prototype.clearSelectedPaymentMethod = function () {\n this._removeUnvaultedPaymentMethods();\n this._model.removeActivePaymentMethod();\n\n if (this._model.getPaymentMethods().length === 0) {\n this._navigateToInitialView();\n\n return;\n }\n\n this._mainView.showLoadingIndicator();\n\n this._model.refreshPaymentMethods().then(function () {\n this._navigateToInitialView();\n this._mainView.hideLoadingIndicator();\n }.bind(this));\n};\n\nDropin.prototype._setUpDataCollector = function () {\n var self = this;\n var config = assign({}, self._merchantConfiguration.dataCollector, {client: self._client});\n\n this._dataCollector = new DataCollector(config);\n\n this._dataCollector.initialize().then(function () {\n self._model.asyncDependencyReady('dataCollector');\n }).catch(function (err) {\n self._model.cancelInitialization(new DropinError({\n message: 'Data Collector failed to set up.',\n braintreeWebError: err\n }));\n });\n};\n\nDropin.prototype._setUpThreeDSecure = function () {\n var self = this;\n\n this._threeDSecure = new ThreeDSecure(this._client, this._model);\n\n this._threeDSecure.initialize().then(function () {\n self._model.asyncDependencyReady('threeDSecure');\n }).catch(function (err) {\n self._model.cancelInitialization(new DropinError({\n message: '3D Secure failed to set up.',\n braintreeWebError: err\n }));\n });\n};\n\nDropin.prototype._setUpDependenciesAndViews = function () {\n if (this._merchantConfiguration.dataCollector) {\n this._setUpDataCollector();\n }\n\n if (this._merchantConfiguration.threeDSecure) {\n this._setUpThreeDSecure();\n }\n\n this._mainView = new MainView({\n client: this._client,\n element: this._dropinWrapper,\n model: this._model,\n strings: this._strings\n });\n};\n\nDropin.prototype._removeUnvaultedPaymentMethods = function (filter) {\n filter = filter || function () { return true; };\n\n this._model.getPaymentMethods().forEach(function (paymentMethod) {\n if (filter(paymentMethod) && !paymentMethod.vaulted) {\n this._model.removePaymentMethod(paymentMethod);\n }\n }.bind(this));\n};\n\nDropin.prototype._navigateToInitialView = function () {\n var initViewId = this._model.getInitialViewId();\n var isOnInitView = this._mainView.primaryView.ID === initViewId;\n\n if (isOnInitView) {\n return;\n }\n\n if (this._model.hasPaymentMethods()) {\n return;\n }\n\n this._mainView.setPrimaryView(initViewId);\n};\n\nDropin.prototype._supportsPaymentOption = function (paymentOption) {\n return this._model.supportedPaymentOptions.indexOf(paymentOption) !== -1;\n};\n\nDropin.prototype._disableErroredPaymentMethods = function () {\n var paymentMethodOptionsElements;\n var failedDependencies = Object.keys(this._model.failedDependencies);\n\n if (failedDependencies.length === 0) {\n return;\n }\n\n paymentMethodOptionsElements = this._mainView.getOptionsElements();\n\n failedDependencies.forEach(function (paymentMethodId) {\n var element = paymentMethodOptionsElements[paymentMethodId];\n var div = element.div;\n var clickHandler = element.clickHandler;\n var error = this._model.failedDependencies[paymentMethodId];\n var errorMessageDiv = div.querySelector('.braintree-option__disabled-message');\n\n div.classList.add('braintree-disabled');\n div.removeEventListener('click', clickHandler);\n errorMessageDiv.innerHTML = constants.errors.DEVELOPER_MISCONFIGURATION_MESSAGE;\n console.error(error); // eslint-disable-line no-console\n }.bind(this));\n};\n\nDropin.prototype._sendVaultedPaymentMethodAppearAnalyticsEvents = function () {\n var i, type;\n var typesThatSentAnEvent = {};\n var paymentMethods = this._model._paymentMethods;\n\n for (i = 0; i < paymentMethods.length; i++) {\n type = paymentMethods[i].type;\n\n if (type in typesThatSentAnEvent) {\n // prevents us from sending the analytic multiple times\n // for the same payment method type\n continue;\n }\n\n typesThatSentAnEvent[type] = true;\n\n analytics.sendEvent(this._client, 'vaulted-' + constants.analyticsKinds[type] + '.appear');\n }\n};\n\nDropin.prototype._handleAppSwitch = function () {\n if (this._model.appSwitchError) {\n this._mainView.setPrimaryView(this._model.appSwitchError.id);\n this._model.reportError(this._model.appSwitchError.error);\n } else if (this._model.appSwitchPayload) {\n this._model.addPaymentMethod(this._model.appSwitchPayload);\n } else {\n this._sendVaultedPaymentMethodAppearAnalyticsEvents();\n }\n};\n\n/**\n * Requests a payment method object which includes the payment method nonce used by by the [Braintree Server SDKs](https://developer.paypal.com/braintree/docs/start/hello-server).\n *\n * If a payment method is not available, an error will appear in the UI. When a callback is used, an error will be passed to it. If no callback is used, the returned Promise will be rejected with an error.\n * @public\n * @param {object} [options] All options for requesting a payment method.\n * @param {object} [options.threeDSecure] Any of the options in the [Braintree 3D Secure client reference](https://braintree.github.io/braintree-web/3.99.0/ThreeDSecure.html#verifyCard) except for `nonce`, `bin`, and `onLookupComplete`. If `amount` is provided, it will override the value of `amount` in the [3D Secure create options](module-braintree-web-drop-in.html#~threeDSecureOptions). The more options provided, the more likely the customer will not need to answer a 3DS challenge. When 3DS is enabled, both credit cards and non-network tokenized Google Pay cards will perform verfication. The recommended fields for achieving a 3DS v2 verification are:\n * * `email`\n * * `mobilePhoneNumber`\n * * `billingAddress`\n *\n * For an example of verifying 3D Secure within Drop-in, [check out this codepen](https://codepen.io/braintree/pen/KjWqGx).\n * @param {callback} [callback] May be used as the only parameter in requestPaymentMethod if no `options` are provided. The first argument will be an error if no payment method is available and will otherwise be null. The second argument will be an object containing a payment method nonce; either a {@link Dropin~cardPaymentMethodPayload|cardPaymentMethodPayload}, a {@link Dropin~paypalPaymentMethodPayload|paypalPaymentMethodPayload}, a {@link Dropin~venmoPaymentMethodPayload|venmoPaymentMethodPayload}, a {@link Dropin~googlePayPaymentMethodPayload|googlePayPaymentMethodPayload} or an {@link Dropin~applePayPaymentMethodPayload|applePayPaymentMethodPayload}. If no callback is provided, `requestPaymentMethod` will return a promise.\n * @returns {(void|Promise)} Returns a promise if no callback is provided.\n * @example Requesting a payment method\n * var form = document.querySelector('#my-form');\n * var hiddenNonceInput = document.querySelector('#my-nonce-input');\n *\n * form.addEventListener('submit', function (event) {\n * event.preventDefault();\n *\n * dropinInstance.requestPaymentMethod(function (err, payload) {\n * if (err) {\n * // handle error\n * return;\n * }\n * hiddenNonceInput.value = payload.nonce;\n * form.submit();\n * });\n * });\n * @example Requesting a payment method with data collector\n * var form = document.querySelector('#my-form');\n * var hiddenNonceInput = document.querySelector('#my-nonce-input');\n * var hiddenDeviceDataInput = document.querySelector('#my-device-data-input');\n *\n * form.addEventListener('submit', function (event) {\n * event.preventDefault();\n *\n * dropinInstance.requestPaymentMethod(function (err, payload) {\n * if (err) {\n * // handle error\n * return;\n * }\n * hiddenNonceInput.value = payload.nonce;\n * hiddenDeviceDataInput.value = payload.deviceData;\n * form.submit();\n * });\n * });\n *\n * @example Requesting a payment method with 3D Secure\n * var form = document.querySelector('#my-form');\n * var hiddenNonceInput = document.querySelector('#my-nonce-input');\n *\n * form.addEventListener('submit', function (event) {\n * event.preventDefault();\n *\n * dropinInstance.requestPaymentMethod(function (err, payload) {\n * if (err) {\n * // Handle error\n * return;\n * }\n *\n * if (payload.liabilityShifted || (payload.type !== 'CreditCard' && payload.type !== 'AndroidPayCard')) {\n * hiddenNonceInput.value = payload.nonce;\n * form.submit();\n * } else {\n * // Decide if you will force the user to enter a different payment method\n * // if liability was not shifted\n * dropinInstance.clearSelectedPaymentMethod();\n * }\n * });\n * });\n */\nDropin.prototype.requestPaymentMethod = function (options) {\n // NEXT_MAJOR_VERSION\n // what should happen when this method is called while a payment\n // method is already being requested? Should it error? Should\n // they both resolve with the payload from the original request?\n // this is only important because when doing 3ds, multiple\n // requests in quick succession can get you into a state\n // where it errors because the 3ds verification is called twice\n var self = this;\n\n options = options || {};\n\n return this._mainView.requestPaymentMethod().then(function (payload) {\n if (self._shouldPerformThreeDSecureVerification(payload)) {\n self._mainView.showLoadingIndicator();\n\n return self._threeDSecure.verify(payload, options.threeDSecure).then(function (newPayload) {\n self._model.shouldWaitForVerifyCard = false;\n payload.nonce = newPayload.nonce;\n payload.liabilityShifted = newPayload.liabilityShifted;\n payload.liabilityShiftPossible = newPayload.liabilityShiftPossible;\n payload.threeDSecureInfo = newPayload.threeDSecureInfo;\n self._model.setPaymentMethodRequestable({\n isRequestable: Boolean(newPayload),\n type: newPayload.type,\n selectedPaymentMethod: payload\n });\n\n self._mainView.hideLoadingIndicator();\n\n return payload;\n }).catch(function (err) {\n self.clearSelectedPaymentMethod();\n\n return self._model.refreshPaymentMethods().then(function () {\n self._mainView.hideLoadingIndicator();\n\n return Promise.reject(new DropinError({\n message: 'Something went wrong during 3D Secure authentication. Please try again.',\n braintreeWebError: err\n }));\n });\n });\n }\n\n return payload;\n }).then(function (payload) {\n if (self._dataCollector) {\n payload.deviceData = self._dataCollector.getDeviceData();\n }\n\n return payload;\n }).then(function (payload) {\n return formatPaymentMethodPayload(payload);\n });\n};\n\nDropin.prototype._shouldPerformThreeDSecureVerification = function (payload) {\n if (!this._threeDSecure) {\n return false;\n }\n\n if (payload.liabilityShifted != null) {\n return false;\n }\n\n if (payload.type === constants.paymentMethodTypes.card) {\n return true;\n }\n\n if (payload.type === constants.paymentMethodTypes.googlePay && payload.details.isNetworkTokenized === false) {\n return true;\n }\n\n return false;\n};\n\nDropin.prototype._removeStylesheet = function () {\n var stylesheet = document.getElementById(constants.STYLESHEET_ID);\n\n if (stylesheet) {\n stylesheet.parentNode.removeChild(stylesheet);\n }\n};\n\nDropin.prototype._injectStylesheet = function () {\n var assetsUrl;\n var loadStylesheetOptions = {\n id: constants.STYLESHEET_ID\n };\n\n if (document.getElementById(constants.STYLESHEET_ID)) { return; }\n\n assetsUrl = this._client.getConfiguration().gatewayConfiguration.assetsUrl;\n loadStylesheetOptions.href = assetsUrl + '/web/dropin/' + VERSION + '/css/dropin.css';\n\n if (this._model.isInShadowDom) {\n // if Drop-in is in the shadow DOM, put the\n // style sheet in the shadow DOM node instead of\n // in the head of the document\n loadStylesheetOptions.container = this._model.rootNode;\n }\n\n assets.loadStylesheet(loadStylesheetOptions);\n};\n\n/**\n * Cleanly remove anything set up by {@link module:braintree-web-drop-in|dropin.create}. This may be be useful in a single-page app.\n * @public\n * @param {callback} [callback] Called on completion, containing an error if one occurred. No data is returned if teardown completes successfully. If no callback is provided, `teardown` will return a promise.\n * @returns {(void|Promise)} Returns a promise if no callback is provided.\n */\nDropin.prototype.teardown = function () {\n var teardownError;\n var promise = Promise.resolve();\n var self = this;\n\n this._removeStylesheet();\n\n if (this._mainView) {\n promise.then(function () {\n return self._mainView.teardown().catch(function (err) {\n teardownError = err;\n });\n });\n }\n\n if (this._dataCollector) {\n promise.then(function () {\n return this._dataCollector.teardown().catch(function (error) {\n teardownError = new DropinError({\n message: 'Drop-in errored tearing down Data Collector.',\n braintreeWebError: error\n });\n });\n }.bind(this));\n }\n\n if (this._threeDSecure) {\n promise.then(function () {\n return this._threeDSecure.teardown().catch(function (error) {\n teardownError = new DropinError({\n message: 'Drop-in errored tearing down 3D Secure.',\n braintreeWebError: error\n });\n });\n }.bind(this));\n }\n\n return promise.then(function () {\n return self._removeDropinWrapper();\n }).then(function () {\n if (teardownError) {\n return Promise.reject(teardownError);\n }\n\n return Promise.resolve();\n });\n};\n\n/**\n * Returns a boolean indicating if a payment method is available through {@link Dropin#requestPaymentMethod|requestPaymentMethod}. Particularly useful for detecting if using a client token with a customer ID to show vaulted payment methods.\n * @public\n * @returns {Boolean} True if a payment method is available, otherwise false.\n */\nDropin.prototype.isPaymentMethodRequestable = function () {\n return this._model.isPaymentMethodRequestable();\n};\n\nDropin.prototype._removeDropinWrapper = function () {\n this._dropinWrapper.parentNode.removeChild(this._dropinWrapper);\n\n return Promise.resolve();\n};\n\nfunction formatPaymentMethodPayload(paymentMethod) {\n var formattedPaymentMethod = {\n nonce: paymentMethod.nonce,\n details: paymentMethod.details,\n type: paymentMethod.type\n };\n\n if (paymentMethod.vaulted != null) {\n formattedPaymentMethod.vaulted = paymentMethod.vaulted;\n }\n\n if (paymentMethod.type === constants.paymentMethodTypes.card) {\n formattedPaymentMethod.description = paymentMethod.description;\n }\n\n if (paymentMethod.type in HAS_RAW_PAYMENT_DATA) {\n formattedPaymentMethod.details.rawPaymentData = paymentMethod.rawPaymentData;\n }\n\n if (typeof paymentMethod.liabilityShiftPossible === 'boolean') {\n formattedPaymentMethod.liabilityShifted = paymentMethod.liabilityShifted;\n formattedPaymentMethod.liabilityShiftPossible = paymentMethod.liabilityShiftPossible;\n }\n\n if (paymentMethod.threeDSecureInfo) {\n formattedPaymentMethod.threeDSecureInfo = paymentMethod.threeDSecureInfo;\n }\n\n if (paymentMethod.deviceData) {\n formattedPaymentMethod.deviceData = paymentMethod.deviceData;\n }\n\n if (paymentMethod.binData) {\n formattedPaymentMethod.binData = paymentMethod.binData;\n }\n\n return formattedPaymentMethod;\n}\n\nmodule.exports = wrapPrototype(Dropin);\n\n},{\"./constants\":189,\"./dropin-model\":190,\"./lib/analytics\":194,\"./lib/assign\":195,\"./lib/data-collector\":198,\"./lib/dropin-error\":199,\"./lib/is-utf-8\":203,\"./lib/sanitize-html\":206,\"./lib/three-d-secure\":208,\"./translations\":229,\"./views/main-view\":248,\"@braintree/asset-loader\":1,\"@braintree/event-emitter\":37,\"@braintree/uuid\":43,\"@braintree/wrap-promise\":47}],192:[function(require,module,exports){\n'use strict';\n/**\n * @module braintree-web-drop-in\n * @description There are two ways to integrate Drop-in into your page: a script tag integration and a JavaScript integration using [`dropin.create`](#.create).\n *\n * The script tag integration is the fastest way to integrate. All you need to do is add the Drop-in script inside your form element where you want Drop-in to appear and include a `data-braintree-dropin-authorization` property with your [tokenization key](https://developer.paypal.com/braintree/docs/guides/authorization/tokenization-key/javascript/v3) or [client token](https://developer.paypal.com/braintree/docs/guides/authorization/client-token).\n *\n * When your form is submitted, Drop-in will intercept the form submission and attempt to tokenize the payment method. If the tokenization is successful, it will insert the payment method nonce into a hidden input with the name `payment_method_nonce` and then submit your form. If the tokenization is unsuccessful, a relevant error will be shown in the UI.\n *\n * If you have data collector enabled, the device data will be injected into a hidden input with the name `device_data` before form submission.\n *\n * Specify creation options as data attributes in your script tag, as shown in the examples below. The following configuration properties may be set:\n *\n * * `data-locale`\n * * `data-card.cardholder-name.required`\n * * `data-payment-option-priority`\n * * `data-data-collector.kount`\n * * `data-data-collector.paypal`\n * * `data-paypal.amount`\n * * `data-paypal.currency`\n * * `data-paypal.flow`\n * * `data-paypal-credit.amount`\n * * `data-paypal-credit.currency`\n * * `data-paypal-credit.flow`\n *\n * For more control and customization, use [`dropin.create` instead](#.create).\n *\n * See our [demo app](../../script-tag-integration.html) for an example of using our script tag integration.\n *\n * @example\n * A full example accepting only cards\n * \n * \n * \n * \n * Checkout\n * \n * \n *
    \n * \n * \n *
    \n * \n * \n *\n * @example\n * A full example accepting cards, PayPal, and PayPal credit\n * \n * \n * \n * \n * Checkout\n * \n * \n *
    \n * \n * \n *
    \n * \n * \n *\n * @example\n * Specifying a locale and payment option priority\n *
    \n * \n * \n *
    \n *\n * @example\n * Including an optional cardholder name field in card form\n *
    \n * \n * \n *
    \n *\n * @example\n * Including a required cardholder name field in card form\n *
    \n * \n * \n *
    \n */\n\nvar Dropin = require('./dropin');\nvar client = require('braintree-web/client');\nvar createFromScriptTag = require('./lib/create-from-script-tag');\nvar constants = require('./constants');\nvar analytics = require('./lib/analytics');\nvar DropinError = require('./lib/dropin-error');\nvar wrapPromise = require('@braintree/wrap-promise');\n\nvar VERSION = '1.42.0';\n\n/**\n * @typedef {object} cardCreateOptions The configuration options for cards. Internally, Drop-in uses [Hosted Fields](http://braintree.github.io/braintree-web/3.99.0/module-braintree-web_hosted-fields.html) to render the card form. The `overrides.fields` and `overrides.styles` allow the Hosted Fields to be customized.\n *\n * @param {(boolean|object)} [cardholderName] Will enable a cardholder name field above the card number field. If set to an object, you can specify whether or not the field is required. If set to a `true`, it will default the field to being present, but not required.\n * @param {boolean} [cardholderName.required=false] When true, the cardholder name field will be required to request the payment method nonce.\n * @param {object} [overrides.fields] The Hosted Fields [`fields` options](http://braintree.github.io/braintree-web/3.99.0/module-braintree-web_hosted-fields.html#~fieldOptions). Only `number`, `cvv`, `expirationDate` and `postalCode` can be configured. Each is a [Hosted Fields `field` object](http://braintree.github.io/braintree-web/3.99.0/module-braintree-web_hosted-fields.html#~field). `selector` cannot be modified.\n * @param {object} [overrides.styles] The Hosted Fields [`styles` options](http://braintree.github.io/braintree-web/3.99.0/module-braintree-web_hosted-fields.html#~styleOptions). These can be used to add custom styles to the Hosted Fields iframes. To style the rest of Drop-in, [review the documentation for customizing Drop-in](https://developer.paypal.com/braintree/docs/guides/drop-in/customization/javascript/v3#customize-your-ui).\n * @param {boolean} [clearFieldsAfterTokenization=true] When false, the card form will not clear the card data when the customer returns to the card view after a successful tokenization.\n * @param {object} [vault] Configuration for vaulting credit cards. Only applies when using a [client token with a customer id](https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#customer_id).\n * @param {boolean} [vault.allowVaultCardOverride=false] When true, the card form will include an option to let the customer decide not to vault the credit card they enter.\n * @param {boolean} [vault.vaultCard=true] Whether or not to vault the card upon tokenization. When set to `false` with `allowVaultCardOverride` set to `false`, then cards will not be vaulted.\n */\n\n/**\n * @typedef {object} dataCollectorOptions The configuration options for Data Collector. Requires [advanced fraud protection](https://developer.paypal.com/braintree/docs/guides/premium-fraud-management-tools/client-side/javascript/v3) to be enabled in the Braintree gateway. If using Kount, contact our [support team](https://developer.paypal.com/braintree/help) to configure your Kount ID. The device data will be included on the {@link Dropin#requestPaymentMethod|requestPaymentMethod payload}.\n *\n * @param {boolean} [kount] If true, Kount fraud data collection is enabled.\n */\n\n/**\n * @typedef {object} threeDSecureOptions Configuration options to pass when creating the 3D Secure module used in Drop-in. `amount` for 3D Secure verification can be passed here, but it's recomended that it and all other 3D Secure verification options be passed to the {@link Dropin#requestPaymentMethod|requestPaymentMethod options} instead. Any `cardinalSDKConfig` options must be passed here when creating Drop-in.\n *\n * @param {options} cardinalSDKConfig A configuration object to adjust the configuration for the underlying Cardinal SDK (Braintree's 3D Secure provider). See [`cardinalSDKConfig` options](http://braintree.github.io/braintree-web/3.99.0/module-braintree-web_three-d-secure.html#.create) for all options.\n * @param {string} amount __Deprecated__ The amount to verify with 3D Secure. Set amount in the {@link Dropin#requestPaymentMethod|requestPaymentMethod options} instead.\n */\n\n/** @typedef {object} paypalCreateOptions The configuration options for PayPal and PayPalCredit. For a full list of options see the [PayPal Checkout client reference options](http://braintree.github.io/braintree-web/3.99.0/PayPalCheckout.html#createPayment).\n *\n * @param {string} flow Either `checkout` for a one-time [Checkout with PayPal](https://developer.paypal.com/braintree/docs/guides/paypal/checkout-with-paypal/javascript/v3) flow or `vault` for a [Vault flow](https://developer.paypal.com/braintree/docs/guides/paypal/vault/javascript/v3). Required when using PayPal or PayPal Credit.\n * @param {(string|number)} [amount] The amount of the transaction. Required when using the Checkout flow.\n * @param {string} [currency] The currency code of the amount, such as `USD`. Required when using the Checkout flow.\n * @param {object} [buttonStyle] The style object to apply to the PayPal button. Button customization includes color, shape, size, and label. The options [found here](https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/customize-button/#button-styles) are available.\n * @param {boolean} [commit] The user action to show on the PayPal review page. If true, a `Pay Now` button will be shown. If false, a `Continue` button will be shown.\n * @param {object} [vault] Configuration for vaulting PayPal accounts. Only applies when using a [client token with a customer id](https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#customer_id).\n * @param {boolean} [vault.vaultPayPal=true] Whether or not to vault the PayPal account upon tokenization.\n */\n\n/** @typedef {object} applePayCreateOptions The configuration options for Apple Pay.\n *\n * @param {string} [buttonStyle=black] Configures the Apple Pay button style. Valid values are `black`, `white`, `white-outline`.\n * @param {string} displayName The canonical name for your store. Use a non-localized name. This parameter should be a utf-8 string that is a maximum of 128 characters. The system may display this name to the user.\n * @param {number} [applePaySessionVersion=2] The [version of the `ApplePaySession`](https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_on_the_web_version_history) to use. It's recommended to use the lowest version that contains all the features you need for your checkout to maximize compatibility.\n * @param {external:ApplePayPaymentRequest} paymentRequest The payment request details to apply on top of those from Braintree.\n */\n\n/** @typedef {object} googlePayCreateOptions The configuration options for Google Pay. Additional options from the few listed here are available, many have default values applied based on the settings found in the Braintree Gateway. For more information, see [Google's Documentation](https://developers.google.com/pay/api/web/object-reference#request-objects).\n *\n * @param {string} merchantId The ID provided by Google for processing transactions in production. Not necessary for testing in sandbox.\n * @param {string} [googlePayVersion=1] The version of the Google Pay API to use. Defaults to 1, but 2 can be passed in.\n * @param {external:GooglePayTransactionInfo} transactionInfo The transaction details necessary for processing the payment.\n * @param {external:GooglePayButtonOptions} [button] The button options for configuring the look of the Google Pay button. The `onClick` property cannot be overwritten.\n */\n\n/**\n * @typedef {object} ApplePayPaymentRequest An [Apple Pay Payment Request object](https://developer.apple.com/reference/applepayjs/1916082-applepay_js_data_types/paymentrequest).\n * @external ApplePayPaymentRequest\n * @see {@link https://developer.apple.com/reference/applepayjs/1916082-applepay_js_data_types/paymentrequest PaymentRequest}\n */\n\n/**\n * @typedef {object} GooglePayTransactionInfo A [Google Pay TransactionInfo object](https://developers.google.com/pay/api/web/object-reference#TransactionInfo).\n * @external GooglePayTransactionInfo\n * @see {@link https://developers.google.com/pay/api/web/object-reference#TransactionInfo TransactionInfo}\n */\n\n/**\n * @typedef {object} GooglePayButtonOptions A [Google Pay ButtonOptions object](https://developers.google.com/pay/api/web/reference/object#ButtonOptions).\n * @external GooglePayButtonOptions\n * @see {@link https://developers.google.com/pay/api/web/reference/object#ButtonOptions ButtonOptions}\n */\n\n/** @typedef {(object|boolean)} venmoCreateOptions The configuration options for Venmo. If `true` is passed instead of a configuration object, the default settings listed will be used.\n *\n * @param {boolean} [allowNewBrowserTab=true] If false, it restricts supported browsers to those that can app switch to the Venmo app without opening a new tab.\n */\n\n/**\n * @static\n * @function create\n * @description This function is the entry point for `braintree.dropin`. It is used for creating {@link Dropin} instances.\n * @param {object} options Object containing all {@link Dropin} options:\n * @param {string} options.authorization A [tokenization key](https://developer.paypal.com/braintree/docs/guides/authorization/tokenization-key/javascript/v3) or a [client token](https://developer.paypal.com/braintree/docs/guides/authorization/client-token). If authorization is a client token created with a [customer ID](https://developer.paypal.com/braintree/docs/guides/drop-in/customization/javascript/v3#display-a-saved-payment-method), Drop-in will render saved payment methods and automatically store any newly-added payment methods in their Vault record.\n * @param {(string|HTMLElement)} options.container A reference to an empty element, such as a `
    `, where Drop-in will be included on your page or the selector for the empty element. e.g. `#dropin-container`.\n * @param {string} options.selector Deprecated: Now an alias for `options.container`.\n * @param {string} [options.locale=`en_US`] Use this option to change the language, links, and terminology used throughout Drop-in. Supported locales include:\n * `ar_EG`,\n * `cs_CZ`,\n * `da_DK`,\n * `de_DE`,\n * `el_GR`,\n * `en_AU`,\n * `en_GB`,\n * `en_IN`,\n * `en_US`,\n * `es_ES`,\n * `es_XC`,\n * `fi_FI`,\n * `fr_CA`,\n * `fr_FR`,\n * `fr_XC`,\n * `he_IL`,\n * `hu_HU`,\n * `id_ID`,\n * `it_IT`,\n * `ja_JP`,\n * `ko_KR`,\n * `nl_NL`,\n * `no_NO`,\n * `pl_PL`,\n * `pt_BR`,\n * `pt_PT`,\n * `ru_RU`,\n * `sk_SK`,\n * `sv_SE`,\n * `th_TH`,\n * `zh_CN`,\n * `zh_HK`,\n * `zh_TW`,\n * `zh_XC`.\n *\n * @param {object} [options.translations] To use your own translations, pass an object with the strings you wish to replace. This object must use the same structure as the object used internally for supported translations, which can be found [here](https://github.com/braintree/braintree-web-drop-in/blob/main/src/translations/en_US.js). Any strings that are not included will be those from the provided `locale` or `en_US` if no `locale` is provided. See below for an example of creating Drop-in with custom translations.\n * @param {string[]} [options.paymentOptionPriority] Use this option to indicate the order in which enabled payment options should appear when multiple payment options are enabled. By default, payment options will appear in this order: `['card', 'paypal', 'paypalCredit', 'venmo', 'applePay', 'googlePay']`. Payment options omitted from this array will not be offered to the customer.\n * @param {string[]} [options.hiddenVaultedPaymentMethodTypes] Use this option to hide certain types of vaulted payment methods from being displayed to the customer. Apple Pay, Google Pay and Venmo are always hidden (as those payment methods are only availabe as vaulted payment methods for existing subscriptions, new transactions or subscriptions must be newly authorized). Available options:\n * * `'card'`\n * * `'paypal'`\n * * `'paypalCredit'` (same as PayPal)\n *\n * @param {(boolean|object)} [options.card] The configuration options for cards. See [`cardCreateOptions`](#~cardCreateOptions) for all `card` options. If this option is omitted, cards will still appear as a payment option. To remove cards, pass `false` for the value.\n * @param {object} [options.paypal] The configuration options for PayPal. To include a PayPal option in your Drop-in integration, include the `paypal` parameter and [enable PayPal in the Braintree Control Panel](https://developer.paypal.com/braintree/docs/guides/paypal/testing-go-live#go-live). To test in Sandbox, you will need to [link a PayPal sandbox test account to your Braintree sandbox account](https://developer.paypal.com/braintree/docs/guides/paypal/testing-go-live#linked-paypal-testing).\n *\n * Some of the PayPal configuration options are listed [here](#~paypalCreateOptions), but for a full list see the [PayPal Checkout client reference options](http://braintree.github.io/braintree-web/3.99.0/PayPalCheckout.html#createPayment).\n *\n * @param {object} [options.paypalCredit] The configuration options for PayPal Credit. To include a PayPal Credit option in your Drop-in integration, include the `paypalCredit` parameter and [enable PayPal in the Braintree Control Panel](https://developer.paypal.com/braintree/docs/guides/paypal/testing-go-live#go-live).\n *\n * Some of the PayPal Credit configuration options are listed [here](#~paypalCreateOptions), but for a full list see the [PayPal Checkout client reference options](http://braintree.github.io/braintree-web/3.99.0/PayPalCheckout.html#createPayment). For more information on PayPal Credit, see the [Braintree Developer Docs](https://developer.paypal.com/braintree/docs/guides/paypal/paypal-credit/javascript/v3).\n *\n * @param {(object|boolean)} [options.venmo] The configuration options for Pay with Venmo. To include a Venmo option in your Drop-in integration, include the `venmo` parameter and [follow the documentation for setting up Venmo in the Braintree control panel](https://articles.braintreepayments.com/guides/payment-methods/venmo#setup). If a user's browser does not support Venmo, the Venmo option will not be rendered.\n *\n * See [`venmoCreateOptions`](#~venmoCreateOptions) for `venmo` options.\n *\n * @param {object} [options.applePay] The configuration options for Apple Pay. To include an Apple Pay option in your Drop-in integration, include the `applePay` parameter and [enable Apple Pay in the Braintree Control Panel](https://developer.paypal.com/braintree/docs/guides/apple-pay/configuration/javascript/v3). If a user's browser does not support Apple Pay, the Apple Pay option will not be rendered. See [Apple's documentation](https://support.apple.com/en-us/HT201469) for browser and device support.\n *\n * See [`applePayCreateOptions`](#~applePayCreateOptions) for `applePay` options.\n *\n * @param {object} [options.googlePay] The configuration options for Google Pay. To include a Google Pay option in your Drop-in integration, include the `googlePay` parameter and [enable Google Pay in the Braintree Control Panel](https://developer.paypal.com/braintree/docs/guides/google-pay/configuration/javascript/v3). If a user's browser does not support Google Pay, the Google Pay option will not be rendered. See [Google's documentation](https://developers.google.com/pay/api/web/test-and-deploy) for browser and device support.\n *\n * See [`googlePayCreateOptions`](#~googlePayCreateOptions) for `googlePay` options.\n *\n * @param {object|boolean} [options.dataCollector] If `true` is passed, Drop-in will be configured to collect data for use with Advanced Fraud Protection. If collecting data via Kount, pass a [`dataCollectorOptions` object](#~dataCollectorOptions) with `kount: true` instead. If Data Collector is configured and fails to load, Drop-in creation will fail.\n *\n * @param {(boolean|object)} [options.threeDSecure] When `true` is passed, the 3D Secure module will be created with a default configuration. See [`threeDSecureOptions`](#~threeDSecureOptions) for additional create options. If 3D Secure is configured and fails to load, Drop-in creation will fail.\n *\n * @param {boolean} [options.vaultManager=false] Whether or not to allow a customer to delete saved payment methods when used with a [client token with a customer id](https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#customer_id). *Note:* Deleting a payment method from Drop-in will permanently delete the payment method, so this option is not recommended for merchants using Braintree's recurring billing system.\n *\n * @param {boolean} [options.preselectVaultedPaymentMethod=true] Whether or not to initialize Drop-in with a vaulted payment method pre-selected. Only applicable when using a [client token with a customer id](https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#customer_id) and a customer with saved payment methods.\n *\n * @param {boolean} [options.showDefaultPaymentMethodFirst=true] When `true` or left out, the customer's default payment method will be displayed first in the list of vaulted payment methods. When `false`, the order of the displayed payment methods is not guaranteed. Only applicable when using a [client token with a customer id](https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#customer_id) and a customer with saved payment methods.\n *\n * @param {function} [callback] The second argument, `data`, is the {@link Dropin} instance. Returns a promise if no callback is provided.\n * @returns {(void|Promise)} Returns a promise if no callback is provided.\n * @example\n * A full example of accepting credit cards with callback API\n * \n * \n * \n * \n * Checkout\n * \n * \n *
    \n * \n *\n * \n *\n * \n * \n * \n * @example\n * A full example of accepting credit cards with promise API\n * \n * \n * \n * \n * Checkout\n * \n * \n *
    \n * \n *\n * \n *\n * \n * \n * \n * @example\n * Setting up a Drop-in instance to accept credit cards, PayPal, PayPal Credit, Venmo, and Apple Pay\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * applePay: {\n * displayName: 'Merchant Name',\n * paymentRequest: {\n * total: {\n * label: 'Localized Name',\n * amount: '10.00'\n * }\n * }\n * },\n * paypal: {\n * flow: 'checkout',\n * amount: '10.00',\n * currency: 'USD'\n * },\n * paypalCredit: {\n * flow: 'checkout',\n * amount: '10.00',\n * currency: 'USD'\n * },\n * venmo: true\n * }, function (err, dropinInstance) {\n * // Set up a handler to request a payment method and\n * // submit the payment method nonce to your server\n * });\n * @example\n * Setting up a Drop-in instance to accept Venmo with restricted browser support\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * venmo: {\n * allowNewBrowserTab: false\n * }\n * }, function (err, dropinInstance) {\n * // Set up a handler to request a payment method and\n * // submit the payment method nonce to your server\n * });\n *\n * @example\n * Submitting the payment method nonce to the server using a form\n * \n * \n * \n * \n * Checkout\n * \n * \n *
    \n *
    \n * \n * \n *
    \n *\n * \n *\n * \n * \n * \n *\n * @example\n * Use your own translations\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * translations: {\n * payingWith: 'You are paying with {{paymentSource}}',\n * chooseAnotherWayToPay: 'My custom chooseAnotherWayToPay string',\n * // Any other custom translation strings\n * }\n * }, callback);\n *\n * @example\n * Customizing Drop-in with card form overrides\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * card: {\n * overrides: {\n * fields: {\n * number: {\n * placeholder: '1111 1111 1111 1111' // Update the number field placeholder\n * },\n * postalCode: {\n * minlength: 5 // Set the minimum length of the postal code field\n * },\n * cvv: null // Remove the CVV field from your form\n * },\n * styles: {\n * input: {\n * 'font-size': '18px' // Change the font size for all inputs\n * },\n * ':focus': {\n * color: 'red' // Change the focus color to red for all inputs\n * }\n * }\n * }\n * }\n * }, callback);\n *\n * @example\n * Mask Card Inputs\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * card: {\n * overrides: {\n * fields: {\n * number: {\n * maskInput: {\n * showLastFour: true\n * }\n * },\n * cvv: {\n * maskInput: true\n * }\n * }\n * }\n * }\n * }, callback);\n *\n * @example\n * Including a cardholder name field\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * card: {\n * cardholderName: true\n * }\n * }, callback);\n *\n * @example\n * Including a required cardholder name field\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * card: {\n * cardholderName: {\n * required: true\n * }\n * }\n * }, callback);\n *\n * @example\n * Enabling 3D Secure\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * threeDSecure: true\n * }, function (err, dropinInstance) {\n * // setup payment button\n * btn.addEventListener('click', function (e) {\n * e.preventDefault();\n *\n * dropinInstance.requestPaymentMethod(|\n * threeDSecure: {\n * amount: '100.00',\n * billingAddress: {\n * givenName: 'Jill', // ASCII-printable characters required, else will throw a validation error\n * surname: 'Doe', // ASCII-printable characters required, else will throw a validation error\n * phoneNumber: '8101234567',\n * streetAddress: '555 Smith St.',\n * extendedAddress: '#5',\n * locality: 'Oakland',\n * region: 'CA',\n * postalCode: '12345',\n * countryCodeAlpha2: 'US'\n * },\n * // additional 3ds params\n * }\n * }, function (err, payload) {\n * // inspect payload.liablityShifted\n * // send payload.nonce to server\n * });\n * });\n * });\n *\n * @example\n * Enabled Vault Manager\n * braintree.dropin.create({\n * authorization: 'CLIENT_AUTHORIZATION',\n * container: '#dropin-container',\n * vaultManager: true\n * }, callback);\n */\n\nfunction create(options) {\n if (!options.authorization) {\n return Promise.reject(new DropinError('options.authorization is required.'));\n }\n\n return client.create({\n authorization: options.authorization\n }).catch(function (err) {\n return Promise.reject(new DropinError({\n message: 'There was an error creating Drop-in.',\n braintreeWebError: err\n }));\n }).then(function (clientInstance) {\n clientInstance = setAnalyticsIntegration(clientInstance);\n\n if (clientInstance.getConfiguration().authorizationType === 'TOKENIZATION_KEY') {\n analytics.sendEvent(clientInstance, 'started.tokenization-key');\n } else {\n analytics.sendEvent(clientInstance, 'started.client-token');\n }\n\n return new Promise(function (resolve, reject) {\n new Dropin({\n merchantConfiguration: options,\n client: clientInstance\n })._initialize(function (err, instance) {\n if (err) {\n reject(err);\n\n return;\n }\n\n resolve(instance);\n });\n });\n });\n}\n\nfunction setAnalyticsIntegration(clientInstance) {\n var configuration = clientInstance.getConfiguration();\n\n configuration.analyticsMetadata.integration = constants.INTEGRATION;\n configuration.analyticsMetadata.integrationType = constants.INTEGRATION;\n configuration.analyticsMetadata.dropinVersion = VERSION;\n\n clientInstance.getConfiguration = function () {\n return configuration;\n };\n\n return clientInstance;\n}\n\n// we check for document's existence to support server side rendering\ncreateFromScriptTag(create, typeof document !== 'undefined' && document.querySelector('script[data-braintree-dropin-authorization]'));\n\nmodule.exports = {\n create: wrapPromise(create),\n /**\n * @description The current version of Drop-in, i.e. `1.42.0`.\n * @type {string}\n */\n VERSION: VERSION\n};\n\n},{\"./constants\":189,\"./dropin\":191,\"./lib/analytics\":194,\"./lib/create-from-script-tag\":197,\"./lib/dropin-error\":199,\"@braintree/wrap-promise\":47,\"braintree-web/client\":55}],193:[function(require,module,exports){\n'use strict';\n\nfunction addSelectionEventHandler(element, func) {\n element.addEventListener('click', func);\n element.addEventListener('keyup', function (event) {\n if (event.keyCode === 13) {\n func();\n }\n });\n}\n\nmodule.exports = addSelectionEventHandler;\n\n},{}],194:[function(require,module,exports){\n'use strict';\n\nvar atob = require('./polyfill').atob;\nvar constants = require('../constants');\nvar braintreeClientVersion = require('braintree-web/client').VERSION;\n\nfunction _millisToSeconds(millis) {\n return Math.floor(millis / 1000);\n}\n\nfunction sendAnalyticsEvent(client, kind, callback) {\n var configuration = client.getConfiguration();\n var analyticsRequest = client._request;\n var timestamp = _millisToSeconds(Date.now());\n var url = configuration.gatewayConfiguration.analytics.url;\n var data = {\n analytics: [{\n kind: constants.ANALYTICS_PREFIX + kind,\n timestamp: timestamp\n }],\n _meta: configuration.analyticsMetadata,\n braintreeLibraryVersion: braintreeClientVersion\n };\n\n if (configuration.authorizationType === 'TOKENIZATION_KEY') {\n data.tokenizationKey = configuration.authorization;\n } else {\n data.authorizationFingerprint = JSON.parse(atob(configuration.authorization)).authorizationFingerprint;\n }\n\n analyticsRequest({\n url: url,\n method: 'post',\n data: data,\n timeout: constants.ANALYTICS_REQUEST_TIMEOUT_MS\n }, callback);\n}\n\nmodule.exports = {\n sendEvent: sendAnalyticsEvent\n};\n\n},{\"../constants\":189,\"./polyfill\":205,\"braintree-web/client\":55}],195:[function(require,module,exports){\n'use strict';\n\nvar assignNormalized = typeof Object.assign === 'function' ? Object.assign : assignPolyfill;\n\nfunction assignPolyfill(destination) {\n var i, source, key;\n\n for (i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n }\n\n return destination;\n}\n\nmodule.exports = {\n assign: assignNormalized,\n _assign: assignPolyfill\n};\n\n},{}],196:[function(require,module,exports){\n'use strict';\n\nvar isIe9 = require('@braintree/browser-detection/is-ie9');\nvar isIe10 = require('@braintree/browser-detection/is-ie10');\n\nmodule.exports = {\n isIe9: isIe9,\n isIe10: isIe10\n};\n\n},{\"@braintree/browser-detection/is-ie10\":29,\"@braintree/browser-detection/is-ie9\":30}],197:[function(require,module,exports){\n'use strict';\n\nvar analytics = require('./analytics');\nvar find = require('./find-parent-form');\nvar uuid = require('@braintree/uuid');\nvar DropinError = require('./dropin-error');\nvar kebabCaseToCamelCase = require('./kebab-case-to-camel-case');\nvar WHITELISTED_DATA_ATTRIBUTES = [\n 'locale',\n 'payment-option-priority',\n\n 'data-collector.kount',\n 'data-collector.paypal',\n\n // camelcase version was accidentally used initially.\n // we add the kebab case version to match the docs, but\n // we retain the camelcase version for backwards compatibility\n 'card.cardholderName',\n 'card.cardholderName.required',\n 'card.cardholder-name',\n 'card.cardholder-name.required',\n\n 'paypal.amount',\n 'paypal.currency',\n 'paypal.flow',\n 'paypal.landing-page-type',\n\n 'paypal-credit.amount',\n 'paypal-credit.currency',\n 'paypal-credit.flow',\n 'paypal-credit.landing-page-type'\n];\n\nfunction injectHiddenInput(name, value, form) {\n var input = form.querySelector('[name=\"' + name + '\"]');\n\n if (!input) {\n input = document.createElement('input');\n input.type = 'hidden';\n input.name = name;\n form.appendChild(input);\n }\n\n input.value = value;\n}\n\nfunction addCompositeKeyValuePairToObject(obj, key, value) {\n var decomposedKeys = key.split('.');\n var topLevelKey = kebabCaseToCamelCase(decomposedKeys[0]);\n\n if (decomposedKeys.length === 1) {\n obj[topLevelKey] = deserialize(value);\n } else {\n obj[topLevelKey] = obj[topLevelKey] || {};\n addCompositeKeyValuePairToObject(obj[topLevelKey], decomposedKeys.slice(1).join('.'), value);\n }\n}\n\nfunction deserialize(value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n}\n\nfunction createFromScriptTag(createFunction, scriptTag) {\n var authorization, container, createOptions, form;\n\n if (!scriptTag) {\n return;\n }\n\n authorization = scriptTag.getAttribute('data-braintree-dropin-authorization');\n\n if (!authorization) {\n throw new DropinError('Authorization not found in data-braintree-dropin-authorization attribute');\n }\n\n container = document.createElement('div');\n container.id = 'braintree-dropin-' + uuid();\n\n form = find.findParentForm(scriptTag);\n\n if (!form) {\n throw new DropinError('No form found for script tag integration.');\n }\n\n form.addEventListener('submit', function (event) {\n event.preventDefault();\n });\n\n scriptTag.parentNode.insertBefore(container, scriptTag);\n\n createOptions = {\n authorization: authorization,\n container: container\n };\n\n WHITELISTED_DATA_ATTRIBUTES.forEach(function (compositeKey) {\n var value = scriptTag.getAttribute('data-' + compositeKey);\n\n if (value == null) {\n return;\n }\n\n addCompositeKeyValuePairToObject(createOptions, compositeKey, value);\n });\n\n createFunction(createOptions).then(function (instance) {\n analytics.sendEvent(instance._client, 'integration-type.script-tag');\n form.addEventListener('submit', function () {\n instance.requestPaymentMethod(function (requestPaymentError, payload) {\n if (requestPaymentError) {\n return;\n }\n\n injectHiddenInput('payment_method_nonce', payload.nonce, form);\n\n if (payload.deviceData) {\n injectHiddenInput('device_data', payload.deviceData, form);\n }\n\n form.submit();\n });\n });\n });\n}\n\nmodule.exports = createFromScriptTag;\n\n},{\"./analytics\":194,\"./dropin-error\":199,\"./find-parent-form\":200,\"./kebab-case-to-camel-case\":204,\"@braintree/uuid\":43}],198:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar constants = require('../constants');\nvar analytics = require('./analytics');\nvar assets = require('@braintree/asset-loader');\n\nfunction DataCollector(config) {\n this._config = config;\n}\n\nDataCollector.prototype.initialize = function () {\n var self = this;\n\n return Promise.resolve().then(function () {\n var braintreeWebVersion;\n\n if (global.braintree && global.braintree.dataCollector) {\n return Promise.resolve();\n }\n\n braintreeWebVersion = self._config.client.getVersion();\n\n return assets.loadScript({\n src: 'https://js.braintreegateway.com/web/' + braintreeWebVersion + '/js/data-collector.min.js',\n id: constants.DATA_COLLECTOR_SCRIPT_ID\n });\n }).then(function () {\n return global.braintree.dataCollector.create(self._config);\n }).then(function (instance) {\n self._instance = instance;\n }).catch(function (err) {\n analytics.sendEvent(self._config.client, 'data-collector.setup-failed');\n // log the Data Collector setup error\n // but do not prevent Drop-in from loading\n self.log(err);\n });\n};\n\nDataCollector.prototype.log = function (message) {\n console.log(message); // eslint-disable-line no-console\n};\n\nDataCollector.prototype.getDeviceData = function () {\n if (!this._instance) {\n return '';\n }\n\n return this._instance.deviceData;\n};\n\nDataCollector.prototype.teardown = function () {\n if (!this._instance) {\n return Promise.resolve();\n }\n\n return this._instance.teardown();\n};\n\nmodule.exports = DataCollector;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../constants\":189,\"./analytics\":194,\"@braintree/asset-loader\":1}],199:[function(require,module,exports){\n'use strict';\n\nfunction isBraintreeWebError(err) {\n return err.name === 'BraintreeError';\n}\n\nfunction DropinError(err) {\n this.name = 'DropinError';\n\n if (typeof err === 'string') {\n this.message = err;\n } else {\n this.message = err.message;\n }\n\n if (isBraintreeWebError(err)) {\n this._braintreeWebError = err;\n } else {\n this._braintreeWebError = err.braintreeWebError;\n }\n}\n\nDropinError.prototype = Object.create(Error.prototype);\nDropinError.prototype.constructor = DropinError;\n\nmodule.exports = DropinError;\n\n},{}],200:[function(require,module,exports){\n'use strict';\n\nfunction findParentForm(element) {\n var parentNode = element.parentNode;\n\n if (!parentNode || parentNode.nodeName === 'FORM') {\n return parentNode;\n }\n\n return findParentForm(parentNode);\n}\n\nmodule.exports = {\n findParentForm: findParentForm\n};\n\n},{}],201:[function(require,module,exports){\n'use strict';\n\nvar atob = require('./polyfill').atob;\n\nmodule.exports = function (client) {\n var authorizationFingerprint;\n var configuration = client.getConfiguration();\n\n if (configuration.authorizationType !== 'TOKENIZATION_KEY') {\n authorizationFingerprint = JSON.parse(atob(configuration.authorization)).authorizationFingerprint;\n\n return !authorizationFingerprint || authorizationFingerprint.indexOf('customer_id=') === -1;\n }\n\n return true;\n};\n\n},{\"./polyfill\":205}],202:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nfunction isHTTPS() {\n return global.location.protocol === 'https:';\n}\n\nmodule.exports = {\n isHTTPS: isHTTPS\n};\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],203:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nmodule.exports = function (win) {\n win = win || global;\n\n return Boolean(win.document.characterSet && win.document.characterSet.toLowerCase() === 'utf-8');\n};\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],204:[function(require,module,exports){\n'use strict';\n\nfunction kebabCaseToCamelCase(kebab) {\n var parts = kebab.split('-');\n var first = parts.shift();\n var capitalizedParts = parts.map(function (part) {\n return part.charAt(0).toUpperCase() + part.substring(1);\n });\n\n return [first].concat(capitalizedParts).join('');\n}\n\nmodule.exports = kebabCaseToCamelCase;\n\n},{}],205:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n/* eslint-disable no-mixed-operators */\n\nvar atobNormalized = typeof global.atob === 'function' ? global.atob : atob;\n\nfunction atob(base64String) {\n var a, b, c, b1, b2, b3, b4, i;\n var base64Matcher = new RegExp('^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})([=]{1,2})?$');\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var result = '';\n\n if (!base64Matcher.test(base64String)) {\n throw new Error('Non base64 encoded input passed to window.atob polyfill');\n }\n\n i = 0;\n do {\n b1 = characters.indexOf(base64String.charAt(i++));\n b2 = characters.indexOf(base64String.charAt(i++));\n b3 = characters.indexOf(base64String.charAt(i++));\n b4 = characters.indexOf(base64String.charAt(i++));\n\n a = (b1 & 0x3F) << 2 | b2 >> 4 & 0x3;\n b = (b2 & 0xF) << 4 | b3 >> 2 & 0xF;\n c = (b3 & 0x3) << 6 | b4 & 0x3F;\n\n result += String.fromCharCode(a) + (b ? String.fromCharCode(b) : '') + (c ? String.fromCharCode(c) : '');\n } while (i < base64String.length);\n\n return result;\n}\n\nmodule.exports = {\n atob: function (base64String) {\n return atobNormalized.call(global, base64String);\n },\n _atob: atob\n};\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],206:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function (string) {\n if (typeof string !== 'string') {\n return '';\n }\n\n return string\n .replace(//g, '>');\n};\n\n},{}],207:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function () {\n var el = document.createElement('div');\n var prop = 'flex-basis: 1px';\n var prefixes = [\n '-webkit-',\n '-moz-',\n '-ms-',\n '-o-',\n ''\n ];\n\n prefixes.forEach(function (prefix) {\n el.style.cssText += prefix + prop;\n });\n\n return Boolean(el.style.length);\n};\n\n},{}],208:[function(require,module,exports){\n'use strict';\n\nvar assign = require('./assign').assign;\nvar threeDSecure = require('braintree-web/three-d-secure');\n\nvar DEFAULT_ACS_WINDOW_SIZE = '03';\nvar PASSTHROUGH_EVENTS = [\n 'customer-canceled',\n 'authentication-modal-render',\n 'authentication-modal-close'\n];\n\nfunction ThreeDSecure(client, model) {\n this._client = client;\n this._model = model;\n this._config = assign({}, model.merchantConfiguration.threeDSecure);\n}\n\nThreeDSecure.prototype.initialize = function () {\n var self = this;\n var options = {\n client: this._client,\n version: 2\n };\n\n if (this._config.cardinalSDKConfig) {\n options.cardinalSDKConfig = this._config.cardinalSDKConfig;\n }\n\n return threeDSecure.create(options).then(function (instance) {\n self._instance = instance;\n\n PASSTHROUGH_EVENTS.forEach(function (eventName) {\n self._instance.on(eventName, function (event) {\n self._model._emit('3ds:' + eventName, event);\n });\n });\n });\n};\n\nThreeDSecure.prototype.verify = function (payload, merchantProvidedData) {\n var verifyOptions = assign({\n amount: this._config.amount\n }, merchantProvidedData, {\n nonce: payload.nonce,\n bin: payload.details.bin,\n // TODO in the future, we will allow\n // merchants to pass in a custom\n // onLookupComplete hook\n onLookupComplete: function (data, next) {\n next();\n }\n });\n\n verifyOptions.additionalInformation = verifyOptions.additionalInformation || {};\n verifyOptions.additionalInformation.acsWindowSize = verifyOptions.additionalInformation.acsWindowSize || DEFAULT_ACS_WINDOW_SIZE;\n this._model.shouldWaitForVerifyCard = true;\n\n return this._instance.verifyCard(verifyOptions);\n};\n\nThreeDSecure.prototype.updateConfiguration = function (key, value) {\n this._config[key] = value;\n};\n\nThreeDSecure.prototype.teardown = function () {\n return this._instance.teardown();\n};\n\nmodule.exports = ThreeDSecure;\n\n},{\"./assign\":195,\"braintree-web/three-d-secure\":140}],209:[function(require,module,exports){\n'use strict';\n\nvar browserDetection = require('./browser-detection');\n\nfunction isHidden(element) {\n if (!element) { // no parentNode, so nothing containing the element is hidden\n return false;\n }\n\n if (element.style.display === 'none') {\n return true;\n }\n\n return isHidden(element.parentNode);\n}\n\nfunction onTransitionEnd(element, propertyName, callback) {\n if (browserDetection.isIe9() || isHidden(element)) {\n callback();\n\n return;\n }\n\n function transitionEventListener(event) {\n if (event.propertyName === propertyName) {\n element.removeEventListener('transitionend', transitionEventListener);\n callback();\n }\n }\n\n element.addEventListener('transitionend', transitionEventListener);\n}\n\nmodule.exports = {\n onTransitionEnd: onTransitionEnd\n};\n\n},{\"./browser-detection\":196}],210:[function(require,module,exports){\n'use strict';\n\nfunction delay(time) {\n time = time || 0;\n\n return new Promise(function (resolve) {\n window.setTimeout(resolve, time);\n });\n}\n\nmodule.exports = {\n delay: delay\n};\n\n},{}],211:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"الدفع بواسطة {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"اختر طريقة دفع أخرى\",\n \"chooseAWayToPay\" : \"اختر طريقة الدفع\",\n \"otherWaysToPay\" : \"طرق أخرى للدفع\",\n \"edit\" : \"تحرير\",\n \"doneEditing\" : \"تم\",\n \"editPaymentMethods\" : \"تحرير طرق الدفع\",\n \"CreditCardDeleteConfirmationMessage\" : \"هل تريد حذف بطاقة {{secondaryIdentifier}} التي تنتهي بالأرقام {{identifier}}؟\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"هل تريد حذف {{identifier}}الحساب PayPal؟\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"هل تريد فعلاً حذف حساب Venmo الذي يحمل اسم المستخدم {{identifier}}؟\",\n \"genericDeleteConfirmationMessage\" : \"هل تريد بالفعل حذف طريقة الدفع؟\",\n \"deleteCancelButton\" : \"إلغاء\",\n \"deleteConfirmationButton\" : \"حذف\",\n \"fieldEmptyForCvv\" : \"يرجى إدخال رمز حماية البطاقة.\",\n \"fieldEmptyForExpirationDate\" : \"يرجى إدخال تاريخ انتهاء الصلاحية.\",\n \"fieldEmptyForCardholderName\" : \"يرجى إدخال اسم صاحب البطاقة.\",\n \"fieldTooLongForCardholderName\" : \"يجب أن يقل اسم صاحب البطاقة عن 256 حرفاً.\",\n \"fieldEmptyForNumber\" : \"يرجى إدخال رقم.\",\n \"fieldEmptyForPostalCode\" : \"يرجى إدخال الرمز البريدي.\",\n \"fieldInvalidForCardholderName\" : \"اسم حامل البطاقة غير صحيح.\",\n \"fieldInvalidForCvv\" : \"رمز الحماية غير صحيح.\",\n \"fieldInvalidForExpirationDate\" : \"تاريخ انتهاء الصلاحية غير صحيح.\",\n \"fieldInvalidForNumber\" : \"رقم البطاقة غير صحيح.\",\n \"fieldInvalidForPostalCode\" : \"الرمز البريدي غير صحيح.\",\n \"noticeOfCollection\" : \"عندما أدفع ببطاقتي، فأنا أوافق على \\\"بيان الخصوصية لدى PayPal\\\".\",\n \"genericError\" : \"حدث خطأ ما من جانبنا.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"هذه البطاقة الائتمانية محفوظة كطريقة دفع حالياً.\",\n \"hostedFieldsFailedTokenizationError\" : \"يرجى مراجعة معلوماتك وإعادة المحاولة.\",\n \"hostedFieldsFieldsInvalidError\" : \"يرجى مراجعة معلوماتك وإعادة المحاولة.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"خطأ في الشبكة. يرجى المحاولة مجدداً.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"فشلت مصادقة بطاقة الائتمان. يرجى مراجعة معلوماتك وإعادة المحاولة.\",\n \"paypalButtonMustBeUsed\" : \"استخدم زر PayPal لاستئناف الدفع.\",\n \"venmoButtonMustBeUsed\": \"استخدِم زر Venmo لمتابعة إجراء دفعتك\",\n \"applePayButtonMustBeUsed\":\" استخدِم زر Apple Pay لمتابعة عملية الدفع التي تُجريها.\",\n \"paypalAccountTokenizationFailedError\" : \"وقع خطأ أثناء إضافة حساب PayPal. يرجى إعادة المحاولة.\",\n \"paypalFlowFailedError\" : \"وقع خطأ أثناء الاتصال بـ PayPal. يرجى إعادة المحاولة.\",\n \"paypalTokenizationRequestActiveError\" : \"تفويض الدفع عبر PayPal قيد التنفيذ.\",\n \"venmoCanceledError\" : \"وقع خطأ. تأكد أن أحدث إصدار من تطبيق Venmo مثبت في جهازك وأن متصفحك يدعم التبديل إلى Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"فشل حذف طريقة الدفع. أعد المحاولة.\",\n \"venmoAppFailedError\" : \"تطبيق Venmo غير موجود في جهازك.\",\n \"unsupportedCardTypeError\" : \"نوع البطاقة غير مدعوم. يرجى تجربة بطاقة أخرى.\",\n \"applePayTokenizationError\" : \"وقع خطأ في الشبكة أثناء معالجة الدفع عبر Apple Pay. يرجى إعادة المحاولة.\",\n \"applePayActiveCardError\" : \"إضافة بطاقة مدعومة إلى محفظة Apple Pay.\",\n \"cardholderNameLabel\" : \"اسم صاحب البطاقة\",\n \"cardNumberLabel\" : \"رقم البطاقة\",\n \"cvvLabel\" : \"رمز CVV‏\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 أرقام)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 أرقام)\",\n \"cardholderNamePlaceholder\" : \"اسم صاحب البطاقة\",\n \"expirationDateLabel\" : \"تاريخ انتهاء الصلاحية\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"الشهر/ السنة\",\n \"postalCodeLabel\" : \"الرمز البريدي\",\n \"saveCardLabel\" : \"حفظ البطاقة\",\n \"payWithCard\" : \"الدفع ببطاقة سحب أو ائتمان\",\n \"endingIn\" : \"تنتهي بتاريخ {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo‏\",\n \"Card\" : \"البطاقة\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express‏\",\n \"Discover\" : \"Discover‏\",\n \"Diners Club\" : \"Diners Club‏\",\n \"Elo\" : \"Elo‏\",\n \"Hiper\" : \"Hiper‏\",\n \"Hipercard\" : \"Hipercard‏\",\n \"MasterCard\" : \"Mastercard‏\",\n \"Visa\" : \"Visa‏\",\n \"JCB\" : \"JCB‏\",\n \"Maestro\" : \"Maestro‏\",\n \"UnionPay\" : \"UnionPay‏\"\n}\n;\n\n},{}],212:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Forma úhrady: {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Vybrat jiný způsob platby\",\n \"chooseAWayToPay\" : \"Vybrat způsob platby\",\n \"otherWaysToPay\" : \"Jiné způsoby platby\",\n \"edit\" : \"Upravit\",\n \"doneEditing\" : \"Hotovo\",\n \"editPaymentMethods\" : \"Upravit způsoby platby\",\n \"CreditCardDeleteConfirmationMessage\" : \"Chcete kartu {{secondaryIdentifier}} s koncovým číslem {{identifier}}odstranit?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Chcete {{identifier}}účtu PayPal odstranit?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Opravdu chcete účet Venmo s uživatelským jménem {{identifier}} odstranit?\",\n \"genericDeleteConfirmationMessage\" : \"Opravdu chcete tento způsob platby odstranit?\",\n \"deleteCancelButton\" : \"Zrušit\",\n \"deleteConfirmationButton\" : \"Odstranit\",\n \"fieldEmptyForCvv\" : \"Vyplňte kód CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Vyplňte datum vypršení platnosti.\",\n \"fieldEmptyForCardholderName\" : \"Vyplňte jméno držitele karty.\",\n \"fieldTooLongForCardholderName\" : \"Jméno držitele karty musí obsahovat méně než 256 znaků.\",\n \"fieldEmptyForNumber\" : \"Vyplňte číslo.\",\n \"fieldEmptyForPostalCode\" : \"Vyplňte poštovní směrovací číslo.\",\n \"fieldInvalidForCardholderName\" : \"Toto jméno držitele karty není platné.\",\n \"fieldInvalidForCvv\" : \"Tento bezpečnostní kód není platný.\",\n \"fieldInvalidForExpirationDate\" : \"Toto datum vypršení platnosti není platné.\",\n \"fieldInvalidForNumber\" : \"Toto číslo karty není platné.\",\n \"fieldInvalidForPostalCode\" : \"Toto poštovní směrovací číslo není platné.\",\n \"noticeOfCollection\" : \"Zaplacením kartou vyjadřuji souhlas s prohlášením o ochraně osobních údajů společnosti PayPal.\",\n \"genericError\" : \"Došlo k chybě na naší straně.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Tato kreditní karta je již jako způsob platby uložena.\",\n \"hostedFieldsFailedTokenizationError\" : \"Zkontrolujte zadané informace a zkuste to znovu.\",\n \"hostedFieldsFieldsInvalidError\" : \"Zkontrolujte zadané informace a zkuste to znovu.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Došlo k chybě sítě. Zkuste to znovu.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Ověření kreditní karty se nezdařilo. Zkontrolujte zadané informace a zkuste to znovu.\",\n \"paypalButtonMustBeUsed\" : \"Chcete-li přejít k platbě, použijte tlačítko PayPal.\",\n \"venmoButtonMustBeUsed\": \"Chcete-li pokračovat v placení, použijte tlačítko Venmo.\",\n \"applePayButtonMustBeUsed\": \"Chcete-li přejít k platbě, použijte tlačítko Apple Pay.\",\n \"paypalAccountTokenizationFailedError\" : \"Při přidávání účtu PayPal došlo k chybě. Zkuste to znovu.\",\n \"paypalFlowFailedError\" : \"Při připojování ke službě PayPal došlo k chybě. Zkuste to znovu.\",\n \"paypalTokenizationRequestActiveError\" : \"Autorizace platby přes PayPal již probíhá.\",\n \"venmoCanceledError\" : \"Došlo k chybě. Zkontrolujte, zda máte v zařízení nainstalovanou nejnovější verzi aplikace Venmo a zda prohlížeč přechod na aplikaci Venmo podporuje.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Způsob platby se nepodařilo odstranit. Zkuste to znovu.\",\n \"venmoAppFailedError\" : \"Aplikaci Venmo se ve vašem zařízení nepodařilo najít.\",\n \"unsupportedCardTypeError\" : \"Tento typ karty není podporován. Vyzkoušejte jinou kartu.\",\n \"applePayTokenizationError\" : \"Při zpracování platby přes Apple Pay došlo k chybě sítě. Zkuste to znovu.\",\n \"applePayActiveCardError\" : \"Přidejte si podporovanou kartu do peněženky Apple Pay.\",\n \"cardholderNameLabel\" : \"Jméno držitele karty\",\n \"cardNumberLabel\" : \"Číslo karty\",\n \"cvvLabel\" : \"Kód CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 číslice)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 číslice)\",\n \"cardholderNamePlaceholder\" : \"Jméno držitele karty\",\n \"expirationDateLabel\" : \"Datum vypršení platnosti\",\n \"expirationDateLabelSubheading\" : \"(MM/RR)\",\n \"expirationDatePlaceholder\" : \"MM/RR\",\n \"postalCodeLabel\" : \"Poštovní směrovací číslo\",\n \"saveCardLabel\" : \"Uložit kartu\",\n \"payWithCard\" : \"Zaplatit kartou\",\n \"endingIn\" : \"Koncové číslo {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Karta\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],213:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Betaling med {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Vælg en anden betalingsmetode\",\n \"chooseAWayToPay\" : \"Vælg, hvordan du vil betale\",\n \"otherWaysToPay\" : \"Andre måder at betale på\",\n \"edit\" : \"Rediger\",\n \"doneEditing\" : \"Udført\",\n \"editPaymentMethods\" : \"Rediger betalingsmetode\",\n \"CreditCardDeleteConfirmationMessage\" : \"Vil du slette dit {{secondaryIdentifier}}-kort, der slutter på {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Vil du slette PayPal-kontoen for {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Er du sikker på, at du vil slette Venmo-konto med brugernavnet {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Er du sikker på, at du vil slette denne betalingsmetode?\",\n \"deleteCancelButton\" : \"Annuller\",\n \"deleteConfirmationButton\" : \"Slet\",\n \"fieldEmptyForCvv\" : \"Du skal indtaste kontrolcifrene.\",\n \"fieldEmptyForExpirationDate\" : \"Du skal indtaste en udløbsdato.\",\n \"fieldEmptyForCardholderName\" : \"Du skal indtaste kortholderens navn.\",\n \"fieldTooLongForCardholderName\" : \"Kortholders navn skal være mindre end 256 tegn.\",\n \"fieldEmptyForNumber\" : \"Du skal indtaste et nummer.\",\n \"fieldEmptyForPostalCode\" : \"Du skal indtaste et postnummer.\",\n \"fieldInvalidForCardholderName\" : \"Kortindehaverens navn er ugyldigt.\",\n \"fieldInvalidForCvv\" : \"Denne sikkerhedskode er ugyldig.\",\n \"fieldInvalidForExpirationDate\" : \"Denne udløbsdato er ugyldig.\",\n \"fieldInvalidForNumber\" : \"Dette kortnummer er ikke gyldigt.\",\n \"fieldInvalidForPostalCode\" : \"Dette postnummer er ikke gyldigt.\",\n \"noticeOfCollection\" : \"Når jeg betaler med mit kort, accepterer jeg PayPals erklæring om personlige oplysninger.\",\n \"genericError\" : \"Der opstod en fejl.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Dette betalingskort findes allerede som en gemt betalingsmetode.\",\n \"hostedFieldsFailedTokenizationError\" : \"Tjek oplysningerne, og prøv igen.\",\n \"hostedFieldsFieldsInvalidError\" : \"Tjek oplysningerne, og prøv igen.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Netværksfejl. Prøv igen.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Bekræftelse af betalingskort mislykkedes. Tjek oplysningerne, og prøv igen.\",\n \"paypalButtonMustBeUsed\" : \"Brug PayPal-knappen til at fortsætte med din betaling.\",\n \"venmoButtonMustBeUsed\": \"Brug Venmo-knappen til at fortsætte med din betaling.\",\n \"applePayButtonMustBeUsed\": \"Brug Apple Pay-knappen til at fortsætte med din betaling.\",\n \"paypalAccountTokenizationFailedError\" : \"Der opstod en fejl under tilføjelsen af PayPal-kontoen. Prøv igen.\",\n \"paypalFlowFailedError\" : \"Det lykkedes ikke at oprette forbindelse til PayPal. Prøv igen.\",\n \"paypalTokenizationRequestActiveError\" : \"PayPals betalingsautorisation er allerede i gang.\",\n \"venmoCanceledError\" : \"Der opstod et problem. Sørg for, at den nyeste version af Venmo-appen er installeret på din enhed, og at din browser understøtter skift til Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Betalingsmetoden kunne ikke slettes. Prøv igen.\",\n \"venmoAppFailedError\" : \"Venmo-appen blev ikke fundet på din enhed.\",\n \"unsupportedCardTypeError\" : \"Korttypen understøttes ikke. Prøv et andet kort.\",\n \"applePayTokenizationError\" : \"Der opstod en netværksfejl under behandling af Apple Pay-betalingen. Prøv igen.\",\n \"applePayActiveCardError\" : \"Føj et understøttet kort til din Apple Pay-e-pung.\",\n \"cardholderNameLabel\" : \"Kortindehaverens navn\",\n \"cardNumberLabel\" : \"Kortnummer\",\n \"cvvLabel\" : \"Kontrolcifre\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 cifre)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 cifre)\",\n \"cardholderNamePlaceholder\" : \"Kortindehaverens navn\",\n \"expirationDateLabel\" : \"Udløbsdato\",\n \"expirationDateLabelSubheading\" : \"(MM/ÅÅ)\",\n \"expirationDatePlaceholder\" : \"MM/ÅÅ\",\n \"postalCodeLabel\" : \"Postnummer\",\n \"saveCardLabel\" : \"Gem kort\",\n \"payWithCard\" : \"Betal med betalingskort\",\n \"endingIn\" : \"Slutter på {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Kort\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],214:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Zahlen mit {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Wählen Sie eine andere Zahlungsquelle\",\n \"chooseAWayToPay\" : \"Wählen Sie eine Zahlungsquelle\",\n \"otherWaysToPay\" : \"Sonstige Zahlungsquellen\",\n \"edit\" : \"Ändern\",\n \"doneEditing\" : \"Fertig\",\n \"editPaymentMethods\" : \"Zahlungsquellen bearbeiten\",\n \"CreditCardDeleteConfirmationMessage\" : \"{{secondaryIdentifier}}-Karte mit den Endziffern {{identifier}} löschen?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"PayPal-Konto {{identifier}} löschen?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Wollen Sie das Venmo-Konto mit dem Benutzernamen {{identifier}} wirklich löschen?\",\n \"genericDeleteConfirmationMessage\" : \"Möchten Sie diese Zahlungsquelle wirklich löschen?\",\n \"deleteCancelButton\" : \"Abbrechen\",\n \"deleteConfirmationButton\" : \"Löschen\",\n \"fieldEmptyForCvv\" : \"Geben Sie die Kartenprüfnummer (CVV) ein.\",\n \"fieldEmptyForExpirationDate\" : \"Geben Sie das Ablaufdatum ein.\",\n \"fieldEmptyForCardholderName\" : \"Geben Sie den Namen des Karteninhabers ein.\",\n \"fieldTooLongForCardholderName\" : \"Der Name des Karteninhabers darf nicht länger als 256 Zeichen sein.\",\n \"fieldEmptyForNumber\" : \"Geben Sie eine Nummer ein.\",\n \"fieldEmptyForPostalCode\" : \"Geben Sie eine Postleitzahl ein.\",\n \"fieldInvalidForCardholderName\" : \"Der Name des Karteninhabers ist nicht gültig.\",\n \"fieldInvalidForCvv\" : \"Diese Kartenprüfnummer ist ungültig.\",\n \"fieldInvalidForExpirationDate\" : \"Dieses Ablaufdatum ist ungültig.\",\n \"fieldInvalidForNumber\" : \"Diese Kartennummer ist ungültig.\",\n \"fieldInvalidForPostalCode\" : \"Diese Postleitzahl ist ungültig.\",\n \"noticeOfCollection\" : \"Indem ich mit meiner Karte bezahle, stimme ich der PayPal-Datenschutzerklärung zu.\",\n \"genericError\" : \"Bei uns ist ein Fehler aufgetreten.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Diese Kreditkarte ist bereits als gespeicherte Zahlungsquelle vorhanden.\",\n \"hostedFieldsFailedTokenizationError\" : \"Bitte prüfen Sie die Informationen und versuchen Sie es erneut.\",\n \"hostedFieldsFieldsInvalidError\" : \"Bitte prüfen Sie die Informationen und versuchen Sie es erneut.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Netzwerkfehler. Versuchen Sie es bitte erneut.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Die Kreditkartenverifizierung ist fehlgeschlagen. Bitte prüfen Sie die Informationen und versuchen Sie es erneut.\",\n \"paypalButtonMustBeUsed\" : \"Verwenden Sie den PayPal-Button, um mit der Zahlung fortzufahren.\",\n \"venmoButtonMustBeUsed\": \"Verwenden Sie den Venmo-Button, um mit Ihrer Zahlung fortzufahren.\",\n \"applePayButtonMustBeUsed\": \"Verwenden Sie den Apple Pay-Button, um mit der Zahlung fortzufahren.\",\n \"paypalAccountTokenizationFailedError\" : \"Beim Hinzufügen des PayPal-Kontos ist ein Fehler aufgetreten. Versuchen Sie es bitte erneut.\",\n \"paypalFlowFailedError\" : \"Bei der Verbindung mit PayPal ist ein Fehler aufgetreten. Versuchen Sie es bitte erneut.\",\n \"paypalTokenizationRequestActiveError\" : \"Die PayPal-Zahlungsautorisierung wird bereits vorgenommen.\",\n \"venmoCanceledError\" : \"Etwas ist schief gelaufen. Vergewissern Sie sich, dass Sie die neueste Version der Venmo-App auf Ihrem Gerät installiert haben und Ihr Browser den Wechsel zu Venmo unterstützt.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Die Zahlungsquelle konnte nicht gelöscht werden. Versuchen Sie es erneut.\",\n \"venmoAppFailedError\" : \"Die Venmo-App wurde nicht auf Ihrem Gerät gefunden.\",\n \"unsupportedCardTypeError\" : \"Dieser Kartentyp wird nicht unterstützt. Versuchen Sie es mit einer anderen Karte.\",\n \"applePayTokenizationError\" : \"Bei der Verarbeitung der Apple Pay-Zahlung ist ein Netzwerkfehler aufgetreten. Versuchen Sie es bitte erneut.\",\n \"applePayActiveCardError\" : \"Fügen Sie Ihrem Apple Pay-Wallet eine unterstützte Karte hinzu.\",\n \"cardholderNameLabel\" : \"Name des Karteninhabers\",\n \"cardNumberLabel\" : \"Kartennummer\",\n \"cvvLabel\" : \"Kartenprüfnummer\",\n \"cvvThreeDigitLabelSubheading\" : \"(3-stellig)\",\n \"cvvFourDigitLabelSubheading\" : \"(4-stellig)\",\n \"cardholderNamePlaceholder\" : \"Name des Karteninhabers\",\n \"expirationDateLabel\" : \"Gültig bis\",\n \"expirationDateLabelSubheading\" : \"(MM/JJ)\",\n \"expirationDatePlaceholder\" : \"MM/JJ\",\n \"postalCodeLabel\" : \"Postleitzahl\",\n \"saveCardLabel\" : \"Karte speichern\",\n \"payWithCard\" : \"Mit Karte zahlen\",\n \"endingIn\" : \"Mit den Endziffern {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Karte\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],215:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Πληρωμή με {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Επιλογή ενός άλλου τρόπου πληρωμής\",\n \"chooseAWayToPay\" : \"Επιλογή τρόπου πληρωμής\",\n \"otherWaysToPay\" : \"Άλλοι τρόποι πληρωμής\",\n \"edit\" : \"Επεξεργασία\",\n \"doneEditing\" : \"Τέλος\",\n \"editPaymentMethods\" : \"Επεξεργασία μεθόδων πληρωμής\",\n \"CreditCardDeleteConfirmationMessage\" : \"Διαγραφή της κάρτας {{secondaryIdentifier}} που λήγει σε {{identifier}};\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Διαγραφή {{identifier}}λογαριασμού PayPal;\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Θέλετε σίγουρα να διαγράψετε τον λογαριασμό Venmo με το όνομα χρήστη {{identifier}};\",\n \"genericDeleteConfirmationMessage\" : \"Θέλετε σίγουρα να διαγράψετε αυτήν τη μέθοδο πληρωμής;\",\n \"deleteCancelButton\" : \"Ακύρωση\",\n \"deleteConfirmationButton\" : \"Διαγραφή\",\n \"fieldEmptyForCvv\" : \"Συμπληρώστε έναν κωδικό ασφαλείας (CVV).\",\n \"fieldEmptyForExpirationDate\" : \"Συμπληρώστε ημερομηνία λήξης.\",\n \"fieldEmptyForCardholderName\" : \"Συμπληρώστε το όνομα ενός κατόχου κάρτας.\",\n \"fieldTooLongForCardholderName\" : \"Το όνομα του κατόχου της κάρτας πρέπει να περιέχει λιγότερους από 256 χαρακτήρες.\",\n \"fieldEmptyForNumber\" : \"Συμπληρώστε έναν αριθμό.\",\n \"fieldEmptyForPostalCode\" : \"Συμπληρώστε έναν ταχυδρομικό κώδικα.\",\n \"fieldInvalidForCardholderName\" : \"Αυτό το όνομα κατόχου κάρτας δεν είναι έγκυρο.\",\n \"fieldInvalidForCvv\" : \"Αυτός ο κωδικός ασφαλείας δεν είναι έγκυρος.\",\n \"fieldInvalidForExpirationDate\" : \"Αυτή η ημερομηνία λήξης δεν είναι έγκυρη.\",\n \"fieldInvalidForNumber\" : \"Αυτός ο αριθμός κάρτας δεν είναι έγκυρος.\",\n \"fieldInvalidForPostalCode\" : \"Αυτός ο ταχυδρομικός κώδικας δεν είναι έγκυρος.\",\n \"noticeOfCollection\" : \"Πληρώνοντας με την κάρτα μου, αποδέχομαι τη Δήλωση απορρήτου της PayPal.\",\n \"genericError\" : \"Προέκυψε πρόβλημα στο σύστημά μας.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Αυτή η πιστωτική κάρτα υπάρχει ήδη ως αποθηκευμένη μέθοδος πληρωμής.\",\n \"hostedFieldsFailedTokenizationError\" : \"Ελέγξτε τα στοιχεία σας και δοκιμάστε ξανά.\",\n \"hostedFieldsFieldsInvalidError\" : \"Ελέγξτε τα στοιχεία σας και δοκιμάστε ξανά.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Σφάλμα δικτύου. Δοκιμάστε ξανά.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Η επαλήθευση της πιστωτικής κάρτας απέτυχε. Ελέγξτε τα στοιχεία σας και δοκιμάστε ξανά.\",\n \"paypalButtonMustBeUsed\" : \"Χρησιμοποιήστε το κουμπί PayPal για να συνεχίσετε με την πληρωμή.\",\n \"venmoButtonMustBeUsed\": \"Χρησιμοποιήστε το κουμπί Venmo για να συνεχίσετε με την πληρωμή σας.\",\n \"applePayButtonMustBeUsed\": \"Χρησιμοποιήστε το κουμπί Apple Pay για να συνεχίσετε με την πληρωμή.\",\n \"paypalAccountTokenizationFailedError\" : \"Προέκυψε κάποιο πρόβλημα με την προσθήκη του λογαριασμού PayPal. Δοκιμάστε ξανά.\",\n \"paypalFlowFailedError\" : \"Προέκυψε κάποιο πρόβλημα με τη σύνδεση στην PayPal. Δοκιμάστε ξανά.\",\n \"paypalTokenizationRequestActiveError\" : \"Η εξουσιοδότηση πληρωμής μέσω PayPal βρίσκεται ήδη σε εξέλιξη.\",\n \"venmoCanceledError\" : \"Προέκυψε πρόβλημα. Βεβαιωθείτε ότι έχετε την πιο πρόσφατη έκδοση της εφαρμογής Venmo εγκατεστημένη στη συσκευή σας και ότι το πρόγραμμα περιήγησής σας υποστηρίζει τη μετάβαση στη Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Η διαγραφή της μεθόδου πληρωμής είναι αδύνατη, δοκιμάστε ξανά.\",\n \"venmoAppFailedError\" : \"Η εφαρμογή Venmo δεν βρέθηκε στη συσκευή σας.\",\n \"unsupportedCardTypeError\" : \"Αυτός ο τύπος κάρτας δεν υποστηρίζεται. Δοκιμάστε μια άλλη κάρτα.\",\n \"applePayTokenizationError\" : \"Προέκυψε σφάλμα δικτύου κατά την επεξεργασία της πληρωμής μέσω Apple Pay. Δοκιμάστε ξανά.\",\n \"applePayActiveCardError\" : \"Προσθέστε μια υποστηριζόμενη κάρτα στο ψηφιακό πορτοφόλι Apple Pay.\",\n \"cardholderNameLabel\" : \"Όνομα κατόχου κάρτας\",\n \"cardNumberLabel\" : \"Αριθμός κάρτας\",\n \"cvvLabel\" : \"Κωδικός ασφαλείας (CVV)\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 ψηφία)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 ψηφία)\",\n \"cardholderNamePlaceholder\" : \"Όνομα κατόχου κάρτας\",\n \"expirationDateLabel\" : \"Ημερομηνία λήξης\",\n \"expirationDateLabelSubheading\" : \"(ΜΜ/ΕΕ)\",\n \"expirationDatePlaceholder\" : \"ΜΜ/ΕΕ\",\n \"postalCodeLabel\" : \"Ταχυδρομικός κώδικας\",\n \"saveCardLabel\" : \"Αποθήκευση κάρτας\",\n \"payWithCard\" : \"Πληρωμή με κάρτα\",\n \"endingIn\" : \"Που λήγει σε {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Κάρτα\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],216:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Paying with {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Choose another way to pay\",\n \"chooseAWayToPay\" : \"Choose a way to pay\",\n \"otherWaysToPay\" : \"Other ways to pay\",\n \"edit\" : \"Edit\",\n \"doneEditing\" : \"Done\",\n \"editPaymentMethods\" : \"Edit payment methods\",\n \"CreditCardDeleteConfirmationMessage\" : \"Delete {{secondaryIdentifier}} card ending in {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Delete PayPal account {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Are you sure you want to delete Venmo account with username {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Are you sure you want to delete this payment method?\",\n \"deleteCancelButton\" : \"Cancel\",\n \"deleteConfirmationButton\" : \"Delete\",\n \"fieldEmptyForCvv\" : \"Please enter a CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Please enter an expiry date.\",\n \"fieldEmptyForCardholderName\" : \"Please enter a cardholder name.\",\n \"fieldTooLongForCardholderName\" : \"Cardholder name must be less than 256 characters.\",\n \"fieldEmptyForNumber\" : \"Please enter a number.\",\n \"fieldEmptyForPostalCode\" : \"Please enter a postcode.\",\n \"fieldInvalidForCardholderName\" : \"This cardholder name isn't valid.\",\n \"fieldInvalidForCvv\" : \"This CVV isn't valid.\",\n \"fieldInvalidForExpirationDate\" : \"This expiry date isn't valid.\",\n \"fieldInvalidForNumber\" : \"This card number isn't valid.\",\n \"fieldInvalidForPostalCode\" : \"This postcode isn't valid.\",\n \"noticeOfCollection\" : \"By paying with my card, I agree to the PayPal Privacy Statement.\",\n \"genericError\" : \"We're sorry, something seems to have gone wrong.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"This card already exists as a saved payment method.\",\n \"hostedFieldsFailedTokenizationError\" : \"Please check your entries and try again.\",\n \"hostedFieldsFieldsInvalidError\" : \"Please check your entries and try again.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Network error. Please try again.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Card verification failed. Please check your entries and try again.\",\n \"paypalButtonMustBeUsed\" : \"Use the PayPal button to continue with your payment.\",\n \"venmoButtonMustBeUsed\": \"Use the Venmo button to continue with your payment.\",\n \"applePayButtonMustBeUsed\": \"Use the Apple Pay button to continue with your payment.\",\n \"paypalAccountTokenizationFailedError\" : \"Something went wrong adding the PayPal account. Please try again.\",\n \"paypalFlowFailedError\" : \"Something went wrong connecting to PayPal. Please try again.\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal payment authorisation is already in progress.\",\n \"venmoCanceledError\" : \"We're sorry, something seems to have gone wrong. Please make sure you have the most recent version of the Venmo app installed on your device and that your browser supports switching to Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Unable to delete payment method. Please try again.\",\n \"venmoAppFailedError\" : \"The Venmo app couldn't be found on your device.\",\n \"unsupportedCardTypeError\" : \"This card type isn't supported. Please try another card.\",\n \"applePayTokenizationError\" : \"A network error occurred while processing the Apple Pay payment. Please try again.\",\n \"applePayActiveCardError\" : \"Add a supported card to your Apple Pay wallet.\",\n \"cardholderNameLabel\" : \"Cardholder name\",\n \"cardNumberLabel\" : \"Card number\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 digits)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 digits)\",\n \"cardholderNamePlaceholder\" : \"Cardholder name\",\n \"expirationDateLabel\" : \"Expiry date\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"MM/YY\",\n \"postalCodeLabel\" : \"Postcode\",\n \"saveCardLabel\" : \"Save card\",\n \"payWithCard\" : \"Pay with card\",\n \"endingIn\" : \"Ending in {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Card\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],217:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Paying with {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Choose another way to pay\",\n \"chooseAWayToPay\" : \"Choose a way to pay\",\n \"otherWaysToPay\" : \"Other ways to pay\",\n \"edit\" : \"Edit\",\n \"doneEditing\" : \"Done\",\n \"editPaymentMethods\" : \"Edit funding sources\",\n \"CreditCardDeleteConfirmationMessage\" : \"Delete {{secondaryIdentifier}} card ending in {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Delete PayPal account {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Are you sure you want to delete Venmo account with username {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Are you sure you want to delete this funding source?\",\n \"deleteCancelButton\" : \"Cancel\",\n \"deleteConfirmationButton\" : \"Delete\",\n \"fieldEmptyForCvv\" : \"Please enter a security code.\",\n \"fieldEmptyForExpirationDate\" : \"Please enter an expiry date.\",\n \"fieldEmptyForCardholderName\" : \"Please enter a cardholder name.\",\n \"fieldTooLongForCardholderName\" : \"Cardholder name must be less than 256 characters.\",\n \"fieldEmptyForNumber\" : \"Please enter a number.\",\n \"fieldEmptyForPostalCode\" : \"Please enter a postcode.\",\n \"fieldInvalidForCardholderName\" : \"This cardholder name isn't valid.\",\n \"fieldInvalidForCvv\" : \"This security code isn't valid.\",\n \"fieldInvalidForExpirationDate\" : \"This expiry date isn't valid.\",\n \"fieldInvalidForNumber\" : \"This card number isn't valid.\",\n \"fieldInvalidForPostalCode\" : \"This postcode isn't valid.\",\n \"noticeOfCollection\" : \"By paying with my card, I agree to the PayPal Privacy Statement.\",\n \"genericError\" : \"Something went wrong on our end.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"This credit card already exists as a saved funding source.\",\n \"hostedFieldsFailedTokenizationError\" : \"Please check your information and try again.\",\n \"hostedFieldsFieldsInvalidError\" : \"Please check your information and try again.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Network error. Please try again.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Credit card verification failed. Please check your information and try again.\",\n \"paypalButtonMustBeUsed\" : \"Use the PayPal button to continue with your payment.\",\n \"venmoButtonMustBeUsed\": \"Use the Venmo button to continue with your payment.\",\n \"applePayButtonMustBeUsed\": \"Use the Apple Pay button to continue with your payment.\",\n \"paypalAccountTokenizationFailedError\" : \"Something went wrong adding the PayPal account. Please try again.\",\n \"paypalFlowFailedError\" : \"Something went wrong connecting to PayPal. Please try again.\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal payment authorisation is already in progress.\",\n \"venmoCanceledError\" : \"Something went wrong. Ensure you have the most recent version of the Venmo app installed on your device and your browser supports switching to Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"We were unable to delete the funding source. Please try again.\",\n \"venmoAppFailedError\" : \"The Venmo app couldn't be found on your device.\",\n \"unsupportedCardTypeError\" : \"This card type isn't supported. Please try another card.\",\n \"applePayTokenizationError\" : \"A network error occurred while processing the Apple Pay payment. Please try again.\",\n \"applePayActiveCardError\" : \"Add a supported card to your Apple Pay wallet.\",\n \"cardholderNameLabel\" : \"Cardholder name\",\n \"cardNumberLabel\" : \"Card number\",\n \"cvvLabel\" : \"Security code\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 digits)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 digits)\",\n \"cardholderNamePlaceholder\" : \"Cardholder name\",\n \"expirationDateLabel\" : \"Expiry date\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"MM/YY\",\n \"postalCodeLabel\" : \"Postcode\",\n \"saveCardLabel\" : \"Save card\",\n \"payWithCard\" : \"Pay with card\",\n \"endingIn\" : \"Ending in {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Card\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],218:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Paying with {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Choose another way to pay\",\n \"chooseAWayToPay\" : \"Choose a way to pay\",\n \"otherWaysToPay\" : \"Other ways to pay\",\n \"edit\" : \"Edit\",\n \"doneEditing\" : \"Done\",\n \"editPaymentMethods\" : \"Edit payment methods\",\n \"CreditCardDeleteConfirmationMessage\" : \"Delete {{secondaryIdentifier}} card ending in {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Delete PayPal account {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Are you sure you want to delete Venmo account with username {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Are you sure you want to delete this payment method?\",\n \"deleteCancelButton\" : \"Cancel\",\n \"deleteConfirmationButton\" : \"Delete\",\n \"fieldEmptyForCvv\" : \"Please enter a CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Please enter an expiry date.\",\n \"fieldEmptyForCardholderName\" : \"Please enter a cardholder name.\",\n \"fieldTooLongForCardholderName\" : \"Cardholder name must be less than 256 characters.\",\n \"fieldEmptyForNumber\" : \"Please enter a number.\",\n \"fieldEmptyForPostalCode\" : \"Please enter a PIN code.\",\n \"fieldInvalidForCardholderName\" : \"This cardholder name isn't valid.\",\n \"fieldInvalidForCvv\" : \"This CVV isn't valid.\",\n \"fieldInvalidForExpirationDate\" : \"This expiry date isn't valid.\",\n \"fieldInvalidForNumber\" : \"This card number isn't valid.\",\n \"fieldInvalidForPostalCode\" : \"This PIN code isn't valid.\",\n \"noticeOfCollection\" : \"By paying with my card, I agree to the PayPal Privacy Statement.\",\n \"genericError\" : \"We're sorry, something seems to have gone wrong.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"This card already exists as a saved payment method.\",\n \"hostedFieldsFailedTokenizationError\" : \"Please check your information and try again.\",\n \"hostedFieldsFieldsInvalidError\" : \"Please check your information and try again.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Network error. Please try again.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Card verification failed. Please check your information and try again.\",\n \"paypalButtonMustBeUsed\" : \"Use the PayPal button to continue with your payment.\",\n \"venmoButtonMustBeUsed\": \"Use the Venmo button to continue with your payment.\",\n \"applePayButtonMustBeUsed\": \"Use the Apple Pay button to continue with your payment.\",\n \"paypalAccountTokenizationFailedError\" : \"Something went wrong adding the PayPal account. Please try again.\",\n \"paypalFlowFailedError\" : \"Something went wrong connecting to PayPal. Please try again.\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal payment authorisation is already in progress.\",\n \"venmoCanceledError\" : \"We're sorry, something seems to have gone wrong. Ensure you have the most recent version of the Venmo app installed on your device and your browser supports switching to Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Unable to delete payment method. Please try again.\",\n \"venmoAppFailedError\" : \"The Venmo app couldn't be found on your device.\",\n \"unsupportedCardTypeError\" : \"This card type isn't supported. Please try another card.\",\n \"applePayTokenizationError\" : \"A network error occurred while processing the Apple Pay payment. Please try again.\",\n \"applePayActiveCardError\" : \"Add a supported card to your Apple Pay digital wallet.\",\n \"cardholderNameLabel\" : \"Cardholder name\",\n \"cardNumberLabel\" : \"Card number\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 digits)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 digits)\",\n \"cardholderNamePlaceholder\" : \"Cardholder name\",\n \"expirationDateLabel\" : \"Expiry date\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"MM/YY\",\n \"postalCodeLabel\" : \"PIN code\",\n \"saveCardLabel\" : \"Save card\",\n \"payWithCard\" : \"Pay with card\",\n \"endingIn\" : \"Ending in {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Card\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],219:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n payingWith: 'Paying with {{paymentSource}}',\n chooseAnotherWayToPay: 'Choose another way to pay',\n chooseAWayToPay: 'Choose a way to pay',\n otherWaysToPay: 'Other ways to pay',\n edit: 'Edit',\n doneEditing: 'Done',\n editPaymentMethods: 'Edit payment methods',\n CreditCardDeleteConfirmationMessage: 'Delete {{secondaryIdentifier}} card ending in {{identifier}}?',\n PayPalAccountDeleteConfirmationMessage: 'Delete PayPal account {{identifier}}?',\n VenmoAccountDeleteConfirmationMessage: 'Are you sure you want to delete Venmo account with username {{identifier}}?',\n genericDeleteConfirmationMessage: 'Are you sure you want to delete this payment method?',\n deleteCancelButton: 'Cancel',\n deleteConfirmationButton: 'Delete',\n // Errors\n fieldEmptyForCvv: 'Please fill out a CVV.',\n fieldEmptyForExpirationDate: 'Please fill out an expiration date.',\n fieldEmptyForCardholderName: 'Please fill out a cardholder name.',\n fieldEmptyForNumber: 'Please fill out a card number.',\n fieldEmptyForPostalCode: 'Please fill out a postal code.',\n fieldInvalidForCardholderName: 'This cardholder name is not valid.',\n fieldInvalidForCvv: 'This security code is not valid.',\n fieldInvalidForExpirationDate: 'This expiration date is not valid.',\n fieldInvalidForNumber: 'This card number is not valid.',\n fieldInvalidForPostalCode: 'This postal code is not valid.',\n fieldTooLongForCardholderName: 'Cardholder name must be less than 256 characters.',\n noticeOfCollection : 'By paying with my card, I agree to the PayPal Privacy Statement.',\n genericError: 'Something went wrong on our end.',\n hostedFieldsTokenizationFailOnDuplicateError: 'This credit card already exists as a saved payment method.',\n hostedFieldsFailedTokenizationError: 'Please check your information and try again.',\n hostedFieldsTokenizationCvvVerificationFailedError: 'Credit card verification failed. Please check your information and try again.',\n hostedFieldsTokenizationNetworkErrorError: 'Network error. Please try again.',\n hostedFieldsFieldsInvalidError: 'Please check your information and try again.',\n paypalButtonMustBeUsed: 'Use the PayPal button to continue with your payment.',\n venmoButtonMustBeUsed: 'Use the Venmo button to continue with your payment.',\n applePayButtonMustBeUsed: 'Use the Apple Pay button to continue with your payment.',\n paypalAccountTokenizationFailedError: 'Something went wrong adding the PayPal account. Please try again.',\n paypalFlowFailedError: 'Something went wrong connecting to PayPal. Please try again.',\n paypalTokenizationRequestActiveError: 'PayPal payment authorization is already in progress.',\n applePayTokenizationError: 'A network error occurred while processing the Apple Pay payment. Please try again.',\n applePayActiveCardError: 'Add a supported card to your Apple Pay wallet.',\n vaultManagerPaymentMethodDeletionError: 'Unable to delete payment method, try again.',\n venmoCanceledError: 'Something went wrong. Ensure you have the most recent version of the Venmo app installed on your device and your browser supports switching to Venmo.',\n venmoAppFailedError: 'The Venmo app could not be found on your device.',\n unsupportedCardTypeError: 'This card type is not supported. Please try another card.',\n // Card form\n cardholderNameLabel: 'Cardholder Name',\n cardNumberLabel: 'Card Number',\n cvvLabel: 'CVV',\n cvvThreeDigitLabelSubheading: '(3 digits)',\n cvvFourDigitLabelSubheading: '(4 digits)',\n expirationDateLabel: 'Expiration Date',\n expirationDateLabelSubheading: '(MM/YY)',\n cardholderNamePlaceholder: 'Cardholder Name',\n expirationDatePlaceholder: 'MM/YY',\n postalCodeLabel: 'Postal Code',\n saveCardLabel: 'Save card',\n payWithCard: 'Pay with card',\n // Payment Method descriptions\n endingIn: 'Ending in {{lastFourCardDigits}}',\n Card: 'Card',\n PayPal: 'PayPal',\n 'PayPal Credit': 'PayPal Credit',\n 'Apple Pay': 'Apple Pay',\n 'Google Pay': 'Google Pay',\n 'Venmo': 'Venmo',\n 'American Express': 'American Express',\n Discover: 'Discover',\n 'Diners Club': 'Diners Club',\n Elo: 'Elo',\n Hiper: 'Hiper',\n Hipercard: 'Hipercard',\n MasterCard: 'Mastercard',\n Visa: 'Visa',\n JCB: 'JCB',\n Maestro: 'Maestro',\n UnionPay: 'UnionPay'\n};\n\n},{}],220:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Pagar con {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Seleccionar otra forma de pago\",\n \"chooseAWayToPay\" : \"Seleccionar forma de pago\",\n \"otherWaysToPay\" : \"Otras formas de pago\",\n \"edit\" : \"Editar\",\n \"doneEditing\" : \"Hecho\",\n \"editPaymentMethods\" : \"Editar formas de pago\",\n \"CreditCardDeleteConfirmationMessage\" : \"¿Eliminar la tarjeta {{secondaryIdentifier}} terminada en {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"¿Eliminar la cuenta PayPal {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"¿Seguro que deseas eliminar la cuenta de Venmo con el nombre de usuario {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"¿Seguro que deseas eliminar esta forma de pago?\",\n \"deleteCancelButton\" : \"Cancelar\",\n \"deleteConfirmationButton\" : \"Eliminar\",\n \"fieldEmptyForCvv\" : \"Introduce el CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Introduce una fecha de vencimiento.\",\n \"fieldEmptyForCardholderName\" : \"Introduce el nombre del titular de la tarjeta.\",\n \"fieldTooLongForCardholderName\" : \"El nombre del titular de la tarjeta debe tener menos de 256 caracteres.\",\n \"fieldEmptyForNumber\" : \"Introduce un número.\",\n \"fieldEmptyForPostalCode\" : \"Introduce un código postal.\",\n \"fieldInvalidForCardholderName\" : \"El nombre del titular de la tarjeta no es válido.\",\n \"fieldInvalidForCvv\" : \"El código de seguridad no es válido.\",\n \"fieldInvalidForExpirationDate\" : \"La fecha de vencimiento no es válida.\",\n \"fieldInvalidForNumber\" : \"El número de tarjeta no es válido.\",\n \"fieldInvalidForPostalCode\" : \"El código postal no es válido.\",\n \"noticeOfCollection\" : \"Al pagar con mi tarjeta, acepto la Declaración de privacidad de PayPal.\",\n \"genericError\" : \"Ha habido un problema.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Esta tarjeta de crédito ya existe como forma de pago guardada.\",\n \"hostedFieldsFailedTokenizationError\" : \"Comprueba la información e inténtalo de nuevo.\",\n \"hostedFieldsFieldsInvalidError\" : \"Comprueba la información e inténtalo de nuevo.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Error de red. Inténtalo de nuevo.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Error al verificar la tarjeta de crédito. Comprueba la información e inténtalo de nuevo.\",\n \"paypalButtonMustBeUsed\" : \"Utiliza el botón de PayPal para continuar con el pago.\",\n \"venmoButtonMustBeUsed\": \"Pulsa el botón de Venmo para continuar con el pago.\",\n \"applePayButtonMustBeUsed\": \"Utiliza el botón de Apple Pay para continuar con el pago.\",\n \"paypalAccountTokenizationFailedError\" : \"Se ha producido un error al añadir la cuenta PayPal. Inténtalo de nuevo.\",\n \"paypalFlowFailedError\" : \"Se ha producido un error al conectar con PayPal. Inténtalo de nuevo.\",\n \"paypalTokenizationRequestActiveError\" : \"La autorización del pago de PayPal ya está en curso.\",\n \"venmoCanceledError\" : \"Ha habido un error. Asegúrate de tener la versión más reciente de la aplicación de Venmo instalada en el dispositivo y de que el navegador admita el cambio a Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"No se puede eliminar la forma de pago. Inténtalo de nuevo.\",\n \"venmoAppFailedError\" : \"No se ha podido encontrar la aplicación de Venmo en tu dispositivo.\",\n \"unsupportedCardTypeError\" : \"No se admite este tipo de tarjeta. Prueba con otra tarjeta.\",\n \"applePayTokenizationError\" : \"Se ha producido un error de red al procesar el pago de Apple Pay. Inténtalo de nuevo.\",\n \"applePayActiveCardError\" : \"Añade una tarjeta compatible a tu cartera de Apple Pay.\",\n \"cardholderNameLabel\" : \"Nombre del titular de la tarjeta\",\n \"cardNumberLabel\" : \"Número de tarjeta\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 dígitos)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 dígitos)\",\n \"cardholderNamePlaceholder\" : \"Nombre del titular de la tarjeta\",\n \"expirationDateLabel\" : \"Fecha de vencimiento\",\n \"expirationDateLabelSubheading\" : \"(MM/AA)\",\n \"expirationDatePlaceholder\" : \"MM/AA\",\n \"postalCodeLabel\" : \"Código postal\",\n \"saveCardLabel\" : \"Guardar tarjeta\",\n \"payWithCard\" : \"Pagar con tarjeta\",\n \"endingIn\" : \"Terminada en {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Tarjeta\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],221:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Pagar con {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Elija otra forma de pago\",\n \"chooseAWayToPay\" : \"Seleccione una forma de pago\",\n \"otherWaysToPay\" : \"Otras formas de pago\",\n \"edit\" : \"Editar\",\n \"doneEditing\" : \"Listo\",\n \"editPaymentMethods\" : \"Editar métodos de pago\",\n \"CreditCardDeleteConfirmationMessage\" : \"¿Eliminar tarjeta {{secondaryIdentifier}} con terminación {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"¿Desea eliminar la cuenta de PayPal {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"¿Seguro que desea eliminar la cuenta de Venmo con el nombre de usuario {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"¿Seguro que desea eliminar esta forma de pago?\",\n \"deleteCancelButton\" : \"Cancelar\",\n \"deleteConfirmationButton\" : \"Eliminar\",\n \"fieldEmptyForCvv\" : \"Ingrese un CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Ingrese una fecha de vencimiento.\",\n \"fieldEmptyForCardholderName\" : \"Ingrese un nombre de titular de tarjeta.\",\n \"fieldTooLongForCardholderName\" : \"El nombre del titular de la tarjeta debe tener menos de 256 caracteres.\",\n \"fieldEmptyForNumber\" : \"Ingrese un número.\",\n \"fieldEmptyForPostalCode\" : \"Ingrese un código postal.\",\n \"fieldInvalidForCardholderName\" : \"El nombre del titular de la tarjeta no es válido.\",\n \"fieldInvalidForCvv\" : \"Este código de seguridad no es válido.\",\n \"fieldInvalidForExpirationDate\" : \"Esta fecha de vencimiento no es válida.\",\n \"fieldInvalidForNumber\" : \"Este número de tarjeta no es válido.\",\n \"fieldInvalidForPostalCode\" : \"Este código postal no es válido.\",\n \"noticeOfCollection\" : \"Al pagar con mi tarjeta, acepto el Aviso de Privacidad de PayPal.\",\n \"genericError\" : \"Se ha producido un error.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Esta tarjeta de crédito ya existe como forma de pago guardada.\",\n \"hostedFieldsFailedTokenizationError\" : \"Revise la información e inténtelo de nuevo.\",\n \"hostedFieldsFieldsInvalidError\" : \"Revise la información e inténtelo de nuevo.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Error de red. Inténtelo de nuevo.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"La verificación de la tarjeta de crédito falló. Revise la información e inténtelo de nuevo.\",\n \"paypalButtonMustBeUsed\" : \"Utilice el botón de PayPal para continuar con su pago.\",\n \"venmoButtonMustBeUsed\": \"Use el botón Venmo para continuar con el pago.\",\n \"applePayButtonMustBeUsed\": \"Utilice el botón de Apple Pay para continuar con su pago.\",\n \"paypalAccountTokenizationFailedError\" : \"Se ha producido un error al agregar la cuenta de PayPal. Inténtelo de nuevo.\",\n \"paypalFlowFailedError\" : \"Se ha producido un error al conectar con PayPal. Inténtelo de nuevo.\",\n \"paypalTokenizationRequestActiveError\" : \"La autorización de pago de PayPal ya está en curso.\",\n \"venmoCanceledError\" : \"Se ha producido un error. Asegúrese de que tiene la versión más reciente de la aplicación de Venmo instalada en su dispositivo y que su navegador admita el sitio web Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"No se pudo eliminar la forma de pago, inténtelo de nuevo.\",\n \"venmoAppFailedError\" : \"No se pudo encontrar la aplicación de Venmo en su dispositivo.\",\n \"unsupportedCardTypeError\" : \"Este tipo de tarjeta no es compatible. Inténtelo con otra tarjeta.\",\n \"applePayTokenizationError\" : \"Se ha producido un error de red al procesar el pago de Apple Pay. Inténtelo de nuevo.\",\n \"applePayActiveCardError\" : \"Agregue una tarjeta compatible a su cartera de Apple Pay.\",\n \"cardholderNameLabel\" : \"Nombre del titular de la tarjeta\",\n \"cardNumberLabel\" : \"Número de tarjeta\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 dígitos)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 dígitos)\",\n \"cardholderNamePlaceholder\" : \"Nombre del titular de la tarjeta\",\n \"expirationDateLabel\" : \"Fecha de vencimiento\",\n \"expirationDateLabelSubheading\" : \"(MM/AA)\",\n \"expirationDatePlaceholder\" : \"MM/AA\",\n \"postalCodeLabel\" : \"Código postal\",\n \"saveCardLabel\" : \"Guardar tarjeta\",\n \"payWithCard\" : \"Pagar con tarjeta\",\n \"endingIn\" : \"Con terminación {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Tarjeta\",\n \"PayPal\" : \"Paypal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],222:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Maksuväline: {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Valitse toinen maksutapa\",\n \"chooseAWayToPay\" : \"Valitse maksutapa\",\n \"otherWaysToPay\" : \"Muita maksutapoja\",\n \"edit\" : \"Muokkaa\",\n \"doneEditing\" : \"Valmis\",\n \"editPaymentMethods\" : \"Muokkaa maksutapoja\",\n \"CreditCardDeleteConfirmationMessage\" : \"Haluatko poistaa {{secondaryIdentifier}}} -kortin, joka päättyy {{identifier}}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Haluatko poistaa PayPal-tilin {{identifier}}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Haluatko varmasti poistaa Venmo-tilin, jonka käyttäjätunnus on {{identifier}}}?\",\n \"genericDeleteConfirmationMessage\" : \"Haluatko varmasti poistaa tämän maksutavan?\",\n \"deleteCancelButton\" : \"Peruuta\",\n \"deleteConfirmationButton\" : \"Poista\",\n \"fieldEmptyForCvv\" : \"Anna turvakoodi.\",\n \"fieldEmptyForExpirationDate\" : \"Anna voimassaolon päättymispäivämäärä.\",\n \"fieldEmptyForCardholderName\" : \"Anna kortinhaltijan nimi.\",\n \"fieldTooLongForCardholderName\" : \"Kortinhaltijan nimen on oltava alle 256 merkkiä.\",\n \"fieldEmptyForNumber\" : \"Anna numero.\",\n \"fieldEmptyForPostalCode\" : \"Anna postinumero.\",\n \"fieldInvalidForCardholderName\" : \"Kortinhaltijan nimi ei ole kelvollinen.\",\n \"fieldInvalidForCvv\" : \"Turvakoodi ei ole kelvollinen.\",\n \"fieldInvalidForExpirationDate\" : \"Päättymispäivämäärä ei ole kelvollinen.\",\n \"fieldInvalidForNumber\" : \"Kortin numero ei ole kelvollinen.\",\n \"fieldInvalidForPostalCode\" : \"Postinumero ei ole kelvollinen.\",\n \"noticeOfCollection\" : \"Maksamalla kortillani hyväksyn PayPal tietosuojaselosteen.\",\n \"genericError\" : \"Jokin meni pieleen tässä päässä.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Tämä luottokortti on jo tallennettu maksutavaksi.\",\n \"hostedFieldsFailedTokenizationError\" : \"Tarkista tiedot ja yritä uudelleen.\",\n \"hostedFieldsFieldsInvalidError\" : \"Tarkista tiedot ja yritä uudelleen.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Verkkovirhe. Yritä uudelleen.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Luottokortin varmennus epäonnistui. Tarkista tiedot ja yritä uudelleen.\",\n \"paypalButtonMustBeUsed\" : \"Jatka maksua PayPal-painikkeen avulla.\",\n \"venmoButtonMustBeUsed\": \"Jatka maksua Venmo-painikkeella.\",\n \"applePayButtonMustBeUsed\": \"Jatka maksua Apple Pay-painikkeen avulla.\",\n \"paypalAccountTokenizationFailedError\" : \"Jotain meni pieleen PayPal-tiliä lisätessä. Yritä uudelleen.\",\n \"paypalFlowFailedError\" : \"Jotain meni pieleen muodostettaessa yhteyttä PayPaliin. Yritä uudelleen.\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal-maksun valtuutus on jo meneillään.\",\n \"venmoCanceledError\" : \"Jokin meni pieleen. Varmista, että laitteeseesi on asennettu Venmo-sovelluksen viimeisin versio, ja että selain tukee vaihtamista Venmoon.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Maksutavan poistaminen ei onnistu, yritä uudelleen.\",\n \"venmoAppFailedError\" : \"Venmo-sovellusta ei löytynyt laitteesta.\",\n \"unsupportedCardTypeError\" : \"Tätä korttityyppiä ei tueta. Kokeile toista korttia.\",\n \"applePayTokenizationError\" : \"Tapahtui verkkovirhe Apple Pay -maksun käsittelyssä. Yritä uudelleen.\",\n \"applePayActiveCardError\" : \"Lisää tuettu kortti Apple Pay -lompakkoon.\",\n \"cardholderNameLabel\" : \"Kortinhaltijan nimi\",\n \"cardNumberLabel\" : \"Kortin numero\",\n \"cvvLabel\" : \"Kortin turvakoodi\",\n \"cvvThreeDigitLabelSubheading\" : \"(kolme numeroa)\",\n \"cvvFourDigitLabelSubheading\" : \"(neljä numeroa)\",\n \"cardholderNamePlaceholder\" : \"Kortinhaltijan nimi\",\n \"expirationDateLabel\" : \"Päättymispäivämäärä\",\n \"expirationDateLabelSubheading\" : \"(KK/VV)\",\n \"expirationDatePlaceholder\" : \"KK/VV\",\n \"postalCodeLabel\" : \"Postinumero\",\n \"saveCardLabel\" : \"Tallenna kortti\",\n \"payWithCard\" : \"Maksa kortilla\",\n \"endingIn\" : \"Päättyy {{lastFourCardDigits}}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Kortti\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],223:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Payer avec {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Choisir un autre mode de paiement\",\n \"chooseAWayToPay\" : \"Choisir un mode de paiement\",\n \"otherWaysToPay\" : \"Autres modes de paiement\",\n \"edit\" : \"Modifier\",\n \"doneEditing\" : \"Terminé\",\n \"editPaymentMethods\" : \"Modifier les modes de paiement\",\n \"CreditCardDeleteConfirmationMessage\" : \"Supprimer la carte {{secondaryIdentifier}} se terminant par {{identifier}} ?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Supprimer le compte PayPal {{identifier}} ?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Souhaitez-vous vraiment supprimer le compte Venmo dont le nom d'utilisateur est {{identifier}} ?\",\n \"genericDeleteConfirmationMessage\" : \"Voulez-vous vraiment supprimer ce mode paiement ?\",\n \"deleteCancelButton\" : \"Annuler\",\n \"deleteConfirmationButton\" : \"Supprimer\",\n \"fieldEmptyForCvv\" : \"Saisissez un CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Saisissez une date d'expiration.\",\n \"fieldEmptyForCardholderName\" : \"Saisissez le nom du titulaire de la carte.\",\n \"fieldTooLongForCardholderName\" : \"Le nom du titulaire de la carte doit contenir moins de 256 caractères.\",\n \"fieldEmptyForNumber\" : \"Saisissez un numéro.\",\n \"fieldEmptyForPostalCode\" : \"Saisissez un code postal.\",\n \"fieldInvalidForCardholderName\" : \"Le nom de ce titulaire de la carte n'est pas valide.\",\n \"fieldInvalidForCvv\" : \"Ce cryptogramme visuel n'est pas valide.\",\n \"fieldInvalidForExpirationDate\" : \"Cette date d'expiration n'est pas valide.\",\n \"fieldInvalidForNumber\" : \"Ce numéro de carte n'est pas valide.\",\n \"fieldInvalidForPostalCode\" : \"Ce code postal n'est pas valide.\",\n \"noticeOfCollection\" : \"En payant avec ma carte, j’accepte la Politique de confidentialité de PayPal.\",\n \"genericError\" : \"Une erreur s'est produite de notre côté.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Cette carte de crédit est déjà enregistrée en tant que mode de paiement.\",\n \"hostedFieldsFailedTokenizationError\" : \"Veuillez vérifier vos informations, puis réessayer.\",\n \"hostedFieldsFieldsInvalidError\" : \"Veuillez vérifier vos informations, puis réessayer.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Erreur de réseau. Réessayez.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Échec de vérification de la carte de crédit. Veuillez vérifier vos informations, puis réessayer.\",\n \"paypalButtonMustBeUsed\" : \"Utilisez le bouton PayPal pour poursuivre votre paiement.\",\n \"venmoButtonMustBeUsed\": \"Utilisez le bouton Venmo pour continuer votre paiement.\",\n \"applePayButtonMustBeUsed\": \"Utilisez le bouton Apple Pay pour poursuivre votre paiement.\",\n \"paypalAccountTokenizationFailedError\" : \"Une erreur s'est produite lors de l'ajout du compte PayPal. Veuillez réessayer.\",\n \"paypalFlowFailedError\" : \"Une erreur s'est produite lors de la connexion à PayPal. Veuillez réessayer.\",\n \"paypalTokenizationRequestActiveError\" : \"L'autorisation de paiement PayPal est déjà en cours.\",\n \"venmoCanceledError\" : \"Une erreur s'est produite. Assurez-vous que la version la plus récente de l'application Venmo est installée sur votre appareil et que votre navigateur prend en charge la redirection vers Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Impossible de supprimer le mode de paiement. Réessayez.\",\n \"venmoAppFailedError\" : \"L'application Venmo n'est pas présente sur votre appareil.\",\n \"unsupportedCardTypeError\" : \"Ce type de carte n'est pas pris en charge. Veuillez essayer une autre carte.\",\n \"applePayTokenizationError\" : \"Une erreur de réseau s'est produite lors du traitement du paiement Apple Pay. Veuillez réessayer.\",\n \"applePayActiveCardError\" : \"Ajoutez une carte prise en charge à votre portefeuille Apple Pay.\",\n \"cardholderNameLabel\" : \"Nom du titulaire de la carte\",\n \"cardNumberLabel\" : \"Numéro de carte\",\n \"cvvLabel\" : \"Cryptogramme visuel\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 chiffres)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 chiffres)\",\n \"cardholderNamePlaceholder\" : \"Nom du titulaire de la carte\",\n \"expirationDateLabel\" : \"Date d'expiration\",\n \"expirationDateLabelSubheading\" : \"(MM/AA)\",\n \"expirationDatePlaceholder\" : \"MM/AA\",\n \"postalCodeLabel\" : \"Code postal\",\n \"saveCardLabel\" : \"Enregistrer la carte\",\n \"payWithCard\" : \"Payer par carte\",\n \"endingIn\" : \"Se terminant par {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Carte\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],224:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Payer avec : {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Choisir un autre mode de paiement\",\n \"chooseAWayToPay\" : \"Choisir un mode de paiement\",\n \"otherWaysToPay\" : \"Autres modes de paiement\",\n \"edit\" : \"Modifier\",\n \"doneEditing\" : \"Terminé\",\n \"editPaymentMethods\" : \"Modifier les modes de paiement\",\n \"CreditCardDeleteConfirmationMessage\" : \"Supprimer la carte {{secondaryIdentifier}} se terminant par {{identifier}} ?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Supprimer le compte PayPal {{identifier}} ?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Souhaitez-vous vraiment supprimer le compte Venmo associé au nom d'utilisateur {{identifier}} ?\",\n \"genericDeleteConfirmationMessage\" : \"Souhaitez-vous vraiment supprimer ce mode de paiement ?\",\n \"deleteCancelButton\" : \"Annuler\",\n \"deleteConfirmationButton\" : \"Supprimer\",\n \"fieldEmptyForCvv\" : \"Renseignez un cryptogramme visuel.\",\n \"fieldEmptyForExpirationDate\" : \"Renseignez une date d'expiration.\",\n \"fieldEmptyForCardholderName\" : \"Renseignez le nom du titulaire de la carte.\",\n \"fieldTooLongForCardholderName\" : \"Le nom du titulaire de la carte doit comporter moins de 256 caractères.\",\n \"fieldEmptyForNumber\" : \"Renseignez un numéro.\",\n \"fieldEmptyForPostalCode\" : \"Renseignez un code postal.\",\n \"fieldInvalidForCardholderName\" : \"Le nom de ce titulaire de la carte est incorrect.\",\n \"fieldInvalidForCvv\" : \"Ce cryptogramme visuel est incorrect.\",\n \"fieldInvalidForExpirationDate\" : \"Cette date d'expiration est incorrecte.\",\n \"fieldInvalidForNumber\" : \"Ce numéro de carte est incorrect.\",\n \"fieldInvalidForPostalCode\" : \"Ce code postal est incorrect.\",\n \"noticeOfCollection\" : \"En payant avec ma carte, j'accepte la Politique de confidentialité de PayPal.\",\n \"genericError\" : \"Une erreur est survenue.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Cette carte bancaire existe déjà en tant que mode de paiement enregistré.\",\n \"hostedFieldsFailedTokenizationError\" : \"Vérifiez vos informations et réessayez.\",\n \"hostedFieldsFieldsInvalidError\" : \"Vérifiez vos informations et réessayez.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Erreur réseau. Réessayez.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Échec de la vérification de carte bancaire. Vérifiez vos informations et réessayez.\",\n \"paypalButtonMustBeUsed\" : \"Utilisez le bouton PayPal pour poursuivre le paiement.\",\n \"venmoButtonMustBeUsed\": \"Utilisez le bouton Venmo pour poursuivre le paiement.\",\n \"applePayButtonMustBeUsed\": \"Utilisez le bouton Apple Pay pour poursuivre le paiement.\",\n \"paypalAccountTokenizationFailedError\" : \"Une erreur est survenue lors de l'ajout du compte PayPal. Réessayez.\",\n \"paypalFlowFailedError\" : \"Une erreur est survenue lors de la connexion à PayPal. Réessayez.\",\n \"paypalTokenizationRequestActiveError\" : \"L'autorisation de paiement PayPal est déjà en cours.\",\n \"venmoCanceledError\" : \"Une erreur est survenue. Vérifiez que la dernière version de l'application Venmo est installée sur votre appareil et que votre navigateur prend en charge la redirection vers Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Impossible de supprimer le mode de paiement, réessayez.\",\n \"venmoAppFailedError\" : \"Nous n'avons pas trouvé l'application Venmo sur votre appareil.\",\n \"unsupportedCardTypeError\" : \"Ce type de carte n'est pas pris en charge. Essayez une autre carte.\",\n \"applePayTokenizationError\" : \"Une erreur réseau est survenue lors du traitement du paiement Apple Pay. Réessayez.\",\n \"applePayActiveCardError\" : \"Enregistrez une carte prise en charge sur votre portefeuille Apple Pay.\",\n \"cardholderNameLabel\" : \"Nom du titulaire de la carte\",\n \"cardNumberLabel\" : \"Numéro de carte\",\n \"cvvLabel\" : \"Crypto.\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 chiffres)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 chiffres)\",\n \"cardholderNamePlaceholder\" : \"Nom du titulaire de la carte\",\n \"expirationDateLabel\" : \"Date d'expiration\",\n \"expirationDateLabelSubheading\" : \"(MM/AA)\",\n \"expirationDatePlaceholder\" : \"MM/AA\",\n \"postalCodeLabel\" : \"Code postal\",\n \"saveCardLabel\" : \"Enregistrer la carte\",\n \"payWithCard\" : \"Payer par carte\",\n \"endingIn\" : \"Se terminant par {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Carte\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],225:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Payer avec {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Choisir un autre mode de paiement\",\n \"chooseAWayToPay\" : \"Choisir un mode de paiement\",\n \"otherWaysToPay\" : \"Autres modes de paiement\",\n \"edit\" : \"Modifier\",\n \"doneEditing\" : \"Terminé\",\n \"editPaymentMethods\" : \"Modifier les modes de paiement\",\n \"CreditCardDeleteConfirmationMessage\" : \"Supprimer la carte {{secondaryIdentifier}}} se terminant par {{identifier}}} ?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Supprimer le compte PayPal {{identifier}}} ?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Souhaitez-vous vraiment supprimer le compte Venmo associé au nom d'utilisateur {{identifier}}} ?\",\n \"genericDeleteConfirmationMessage\" : \"Souhaitez-vous vraiment supprimer ce mode de paiement ?\",\n \"deleteCancelButton\" : \"Annuler\",\n \"deleteConfirmationButton\" : \"Supprimer\",\n \"fieldEmptyForCvv\" : \"Renseignez un cryptogramme visuel.\",\n \"fieldEmptyForExpirationDate\" : \"Renseignez une date d'expiration.\",\n \"fieldEmptyForCardholderName\" : \"Renseignez le nom du titulaire de la carte.\",\n \"fieldTooLongForCardholderName\" : \"Le nom du titulaire de la carte doit comporter moins de 256 caractères.\",\n \"fieldEmptyForNumber\" : \"Renseignez un numéro.\",\n \"fieldEmptyForPostalCode\" : \"Renseignez un code postal.\",\n \"fieldInvalidForCardholderName\" : \"Le nom de ce titulaire de la carte est incorrect.\",\n \"fieldInvalidForCvv\" : \"Ce cryptogramme visuel est incorrect.\",\n \"fieldInvalidForExpirationDate\" : \"Cette date d'expiration est incorrecte.\",\n \"fieldInvalidForNumber\" : \"Ce numéro de carte est incorrect.\",\n \"fieldInvalidForPostalCode\" : \"Ce code postal est incorrect.\",\n \"noticeOfCollection\" : \"En payant avec ma carte, j'accepte la Politique de confidentialité de PayPal.\",\n \"genericError\" : \"Une erreur est survenue.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Cette carte bancaire existe déjà en tant que mode de paiement enregistré.\",\n \"hostedFieldsFailedTokenizationError\" : \"Vérifiez vos informations et réessayez.\",\n \"hostedFieldsFieldsInvalidError\" : \"Vérifiez vos informations et réessayez.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Erreur réseau. Réessayez.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Échec de la vérification de carte bancaire. Vérifiez vos informations et réessayez.\",\n \"paypalButtonMustBeUsed\" : \"Utilisez le bouton PayPal pour poursuivre le paiement.\",\n \"venmoButtonMustBeUsed\": \"Utilisez le bouton Venmo pour poursuivre le paiement.\",\n \"applePayButtonMustBeUsed\": \"Utilisez le bouton Apple Pay pour poursuivre le paiement.\",\n \"paypalAccountTokenizationFailedError\" : \"Une erreur est survenue lors de l'ajout du compte PayPal. Réessayez.\",\n \"paypalFlowFailedError\" : \"Une erreur est survenue lors de la connexion à PayPal. Réessayez.\",\n \"paypalTokenizationRequestActiveError\" : \"L'autorisation de paiement PayPal est déjà en cours.\",\n \"venmoCanceledError\" : \"Une erreur est survenue. Vérifiez que la dernière version de l'application Venmo est installée sur votre appareil et que votre navigateur prend en charge la redirection vers Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Impossible de supprimer le mode de paiement, réessayez.\",\n \"venmoAppFailedError\" : \"Nous n'avons pas trouvé l'application Venmo sur votre appareil.\",\n \"unsupportedCardTypeError\" : \"Ce type de carte n'est pas pris en charge. Essayez une autre carte.\",\n \"applePayTokenizationError\" : \"Une erreur réseau est survenue lors du traitement du paiement Apple Pay. Réessayez.\",\n \"applePayActiveCardError\" : \"Enregistrez une carte prise en charge sur votre portefeuille Apple Pay.\",\n \"cardholderNameLabel\" : \"Nom du titulaire de la carte\",\n \"cardNumberLabel\" : \"Numéro de carte\",\n \"cvvLabel\" : \"Crypto.\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 chiffres)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 chiffres)\",\n \"cardholderNamePlaceholder\" : \"Nom du titulaire de la carte\",\n \"expirationDateLabel\" : \"Date d'expiration\",\n \"expirationDateLabelSubheading\" : \"(MM/AA)\",\n \"expirationDatePlaceholder\" : \"MM/AA\",\n \"postalCodeLabel\" : \"Code postal\",\n \"saveCardLabel\" : \"Enregistrer la carte\",\n \"payWithCard\" : \"Payer par carte\",\n \"endingIn\" : \"Se termine le {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Carte\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],226:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"תשלום באמצעות {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"עליך לבחור שיטת תשלום אחרת\",\n \"chooseAWayToPay\" : \"כיצד ברצונך לשלם?\",\n \"otherWaysToPay\" : \"שיטות תשלום אחרות\",\n \"edit\" : \"עריכה\",\n \"doneEditing\" : \"בוצע\",\n \"editPaymentMethods\" : \"עריכת שיטות תשלום\",\n \"CreditCardDeleteConfirmationMessage\" : \"למחוק {{secondaryIdentifier}} הכרטיס המסתיים {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"למחוק PayPal החשבון {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"האם אתה בטוח שברצונך למחוק את חשבון Venmo הרשום תחת שם המשתמש {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"האם אתה בטוח שברצונך למחוק שיטת תשלום זו?\",\n \"deleteCancelButton\" : \"ביטול\",\n \"deleteConfirmationButton\" : \"מחיקה\",\n \"fieldEmptyForCvv\" : \"עליך למלא את מספר האבטחה של כרטיס האשראי.\",\n \"fieldEmptyForExpirationDate\" : \"עליך למלא את תאריך פקיעת התוקף.\",\n \"fieldEmptyForCardholderName\" : \"עליך למלא את שם בעל הכרטיס.\",\n \"fieldTooLongForCardholderName\" : \"שם בעל הכרטיס יכול להכיל 256 תווים לכל היותר.\",\n \"fieldEmptyForNumber\" : \"עליך למלא את המספר.\",\n \"fieldEmptyForPostalCode\" : \"עליך למלא את המיקוד.\",\n \"fieldInvalidForCardholderName\" : \"שם בעל הכרטיס אינו חוקי.\",\n \"fieldInvalidForCvv\" : \"קוד אבטחה אינו חוקי.\",\n \"fieldInvalidForExpirationDate\" : \"תאריך פקיעת התוקף אינו חוקי.\",\n \"fieldInvalidForNumber\" : \"מספר כרטיס האשראי אינו חוקי.\",\n \"fieldInvalidForPostalCode\" : \"המיקוד אינו חוקי.\",\n \"noticeOfCollection\" : \"בכך שאני משלם/ת באמצעות כרטיס האשראי שלי, אני מסכים/ה להצהרת הפרטיות של PayPal.\",\n \"genericError\" : \"נראה שמשהו השתבש בצד שלנו.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"כרטיס אשראי זה כבר שמור כשיטת תשלום.\",\n \"hostedFieldsFailedTokenizationError\" : \"עליך לבדוק את הפרטים שלך ולנסות שוב.\",\n \"hostedFieldsFieldsInvalidError\" : \"עליך לבדוק את הפרטים שלך ולנסות שוב.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"שגיאת רשת. עליך לנסות שוב.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"אימות כרטיס האשראי נכשל. עליך לבדוק את הפרטים שלך ולנסות שוב.\",\n \"paypalButtonMustBeUsed\" : \"להשתמש בלחצן PayPal כדי להמשיך בביצוע התשלום שלך.\",\n \"venmoButtonMustBeUsed\": \"השתמשו בלחצן Venmo כדי להמשיך בתשלום שלכם.\",\n \"applePayButtonMustBeUsed\": \"השתמשו בלחצן Apple Pay כדי להמשיך בביצוע התשלום שלכם.\",\n \"paypalAccountTokenizationFailedError\" : \"משהו השתבש בעת הוספת חשבון PayPal. עליך לנסות שוב.\",\n \"paypalFlowFailedError\" : \"משהו השתבש בהתחברות ל-PayPal. עליך לנסות שוב.\",\n \"paypalTokenizationRequestActiveError\" : \"אישור התשלום של PayPal כבר מתבצע.\",\n \"venmoCanceledError\" : \"נראה שמשהו השתבש. עליך לוודא שהגרסה העדכנית ביותר של אפליקציית Venmo מותקנת במכשיר שלך, ושהדפדפן שלך תומך במעבר ל-Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"לא הצלחנו למחוק את שיטת התשלום, עליך לנסות שוב.\",\n \"venmoAppFailedError\" : \"לא מצאנו למצוא את אפליקציית Venmo במכשיר שלך.\",\n \"unsupportedCardTypeError\" : \"סוג כרטיס זה אינו נתמך. עליך לנסות כרטיס אחר.\",\n \"applePayTokenizationError\" : \"אירעה שגיאת רשת בעת עיבוד תשלום התשלומים של Apple Pay. עליך לנסות שוב.\",\n \"applePayActiveCardError\" : \"הוספת כרטיס נתמך לארנק Apple Pay שלך.\",\n \"cardholderNameLabel\" : \"שם בעל הכרטיס\",\n \"cardNumberLabel\" : \"מספר כרטיס\",\n \"cvvLabel\" : \"קוד אבטחת כרטיס (CVV)\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 ספרות)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 ספרות)\",\n \"cardholderNamePlaceholder\" : \"שם בעל הכרטיס\",\n \"expirationDateLabel\" : \"תאריך פקיעת תוקף\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"MM/YY‏\",\n \"postalCodeLabel\" : \"מיקוד\",\n \"saveCardLabel\" : \"שמירת כרטיס אשראי\",\n \"payWithCard\" : \"לשלם באמצעות כרטיס אשראי\",\n \"endingIn\" : \"מסתיים בתאריך {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"כרטיס\",\n \"PayPal\" : \"PayPal‏\",\n \"PayPal Credit\" : \"PayPal Credit‏\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"אמריקן אקספרס\",\n \"Discover\" : \"Discover‏\",\n \"Diners Club\" : \"דיינרס קלאב\",\n \"Elo\" : \"Elo‏\",\n \"Hiper\" : \"Hiper‏\",\n \"Hipercard\" : \"HiperCard‏\",\n \"MasterCard\" : \"מאסטרקארד\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB‏\",\n \"Maestro\" : \"Maestro‏\",\n \"UnionPay\" : \"UnionPay‏\"\n}\n;\n\n},{}],227:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Fizetés ezzel: {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Válasszon másik fizetési módot\",\n \"chooseAWayToPay\" : \"Válasszon fizetési módot\",\n \"otherWaysToPay\" : \"Egyéb fizetési módok\",\n \"edit\" : \"Szerkesztés\",\n \"doneEditing\" : \"Kész\",\n \"editPaymentMethods\" : \"Fizetési módok szerkesztése\",\n \"CreditCardDeleteConfirmationMessage\" : \"Törli a(z) {{identifier}}} végű {{secondaryIdentifier}}} kártyát?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Törli a(z) {{identifier}} PayPal-számlát?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Biztosan törli a(z) {{identifier}} felhasználónévhez tartozó Venmo-számlát?\",\n \"genericDeleteConfirmationMessage\" : \"Biztosan törli ezt a fizetési módot?\",\n \"deleteCancelButton\" : \"Mégse\",\n \"deleteConfirmationButton\" : \"Törlés\",\n \"fieldEmptyForCvv\" : \"Kérjük, töltse ki a CVV-számot.\",\n \"fieldEmptyForExpirationDate\" : \"Töltse ki a lejárati dátumot.\",\n \"fieldEmptyForCardholderName\" : \"Töltse ki a kártyabirtokos nevét.\",\n \"fieldTooLongForCardholderName\" : \"A kártyatulajdonos neve nem lehet hosszabb mint 256 karakter.\",\n \"fieldEmptyForNumber\" : \"Töltse ki a számot.\",\n \"fieldEmptyForPostalCode\" : \"Töltse ki az irányítószámot.\",\n \"fieldInvalidForCardholderName\" : \"Ez a kártyabirtokos neve nem érvényes.\",\n \"fieldInvalidForCvv\" : \"Ez a biztonsági kód nem érvényes.\",\n \"fieldInvalidForExpirationDate\" : \"Ez a lejárati dátum érvénytelen.\",\n \"fieldInvalidForNumber\" : \"Ez a kártyaszám nem érvényes.\",\n \"fieldInvalidForPostalCode\" : \"Ez az irányítószám nem érvényes.\",\n \"noticeOfCollection\" : \"A kártyámmal történő fizetés révén elfogadom a PayPal Adatvédelmi nyilatkozatát.\",\n \"genericError\" : \"Hiba történt a mi oldalunkon.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Ez a hitelkártya már szerepel mentett fizetési módként.\",\n \"hostedFieldsFailedTokenizationError\" : \"Ellenőrizze az adatait, majd próbálja újra.\",\n \"hostedFieldsFieldsInvalidError\" : \"Ellenőrizze az adatait, majd próbálja újra.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Hálózati hiba. Próbálja újra.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"A hitelkártya hitelesítése sikertelen. Ellenőrizze az adatait, majd próbálja újra.\",\n \"paypalButtonMustBeUsed\" : \"A fizetés folytatásához használja a PayPal-gombot.\",\n \"venmoButtonMustBeUsed\": \"Használja a Venmo-gombot a fizetés folytatásához.\",\n \"applePayButtonMustBeUsed\": \"A fizetés folytatásához használja az Apple Pay-gombot.\",\n \"paypalAccountTokenizationFailedError\" : \"Hiba történt a PayPal-számla hozzáadása közben. Próbálja újra.\",\n \"paypalFlowFailedError\" : \"Hiba történt a PayPalhoz való kapcsolódás közben. Próbálja újra.\",\n \"paypalTokenizationRequestActiveError\" : \"A PayPal-fizetés engedélyezése már folyamatban van.\",\n \"venmoCanceledError\" : \"Hiba történt. Ellenőrizze, hogy eszközére a Venmo-alkalmazás legfrissebb verziója van-e telepítve, és hogy a böngészője támogatja-e a Venmo-ra történő átváltást.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Nem sikerült törölni a fizetési módot, próbálja újra.\",\n \"venmoAppFailedError\" : \"A Venmo alkalmazást nem találja a rendszer az eszközön.\",\n \"unsupportedCardTypeError\" : \"Ez a kártyatípus nem támogatott. Próbáljon meg egy másik kártyát.\",\n \"applePayTokenizationError\" : \"Hálózati hiba történt az Apple Pay-kifizetés közben. Próbálja újra.\",\n \"applePayActiveCardError\" : \"Adjon egy támogatott kártyát az Apple Pay pénztárcához.\",\n \"cardholderNameLabel\" : \"Kártyabirtokos neve\",\n \"cardNumberLabel\" : \"Kártyaszám\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 számjegy)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 számjegy)\",\n \"cardholderNamePlaceholder\" : \"Kártyabirtokos neve\",\n \"expirationDateLabel\" : \"Lejárati dátum\",\n \"expirationDateLabelSubheading\" : \"(HH/ÉÉ)\",\n \"expirationDatePlaceholder\" : \"HH/ÉÉ\",\n \"postalCodeLabel\" : \"Irányítószám\",\n \"saveCardLabel\" : \"Kártya mentése\",\n \"payWithCard\" : \"Fizetés bankkártyával vagy hitelkártyával\",\n \"endingIn\" : \"{{lastFourCardDigits}}} végű\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Kártya\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],228:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Membayar dengan {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Pilih metode pembayaran lain\",\n \"chooseAWayToPay\" : \"Pilih cara pembayaran\",\n \"otherWaysToPay\" : \"Cara lain untuk membayar\",\n \"edit\" : \"Edit\",\n \"doneEditing\" : \"Selesai\",\n \"editPaymentMethods\" : \"Edit metode pembayaran\",\n \"CreditCardDeleteConfirmationMessage\" : \"Hapus kartu {{secondaryIdentifier}} yang berakhiran dengan {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Hapus rekening PayPal {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Yakin ingin menghapus rekening Venmo dengan nama pengguna {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Yakin ingin menghapus metode pembayaran ini?\",\n \"deleteCancelButton\" : \"Batalkan\",\n \"deleteConfirmationButton\" : \"Hapus\",\n \"fieldEmptyForCvv\" : \"Mohon mengisi CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Silakan mengisi tanggal kedaluwarsa.\",\n \"fieldEmptyForCardholderName\" : \"Silakan mengisi nama pemilik kartu.\",\n \"fieldTooLongForCardholderName\" : \"Nama pemilik kartu harus kurang dari 256 karakter.\",\n \"fieldEmptyForNumber\" : \"Mohon mengisi angkanya.\",\n \"fieldEmptyForPostalCode\" : \"Mohon mengisi kode pos.\",\n \"fieldInvalidForCardholderName\" : \"Nama pemilik kartu ini tidak valid.\",\n \"fieldInvalidForCvv\" : \"Kode keamanan ini tidak valid.\",\n \"fieldInvalidForExpirationDate\" : \"Tanggal kedaluwarsa ini tidak valid.\",\n \"fieldInvalidForNumber\" : \"Nomor kartu ini tidak valid.\",\n \"fieldInvalidForPostalCode\" : \"Kode pos ini tidak valid.\",\n \"noticeOfCollection\" : \"Dengan membayar menggunakan kartu, saya menyetujui Pernyataan Privasi PayPal.\",\n \"genericError\" : \"Ada yang salah pada sistem kami.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Kartu kredit ini telah ada sebelumnya sebagai metode pembayaran tersimpan.\",\n \"hostedFieldsFailedTokenizationError\" : \"Mohon periksa informasi Anda dan coba lagi.\",\n \"hostedFieldsFieldsInvalidError\" : \"Mohon periksa informasi Anda dan coba lagi.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Kesalahan jaringan. Mohon coba lagi.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Verifikasi kartu kredit gagal. Mohon periksa informasi Anda dan coba lagi.\",\n \"paypalButtonMustBeUsed\" : \"Gunakan tombol PayPal untuk melanjutkan pembayaran.\",\n \"venmoButtonMustBeUsed\": \"Gunakan tombol Venmo untuk melanjutkan pembayaran Anda.\",\n \"applePayButtonMustBeUsed\": \"Gunakan tombol Apple Pay untuk melanjutkan pembayaran.\",\n \"paypalAccountTokenizationFailedError\" : \"Terjadi kesalahan saat menambahkan rekening PayPal. Mohon coba lagi.\",\n \"paypalFlowFailedError\" : \"Terjadi kesalahan ketika menghubungkan ke PayPal. Mohon coba lagi.\",\n \"paypalTokenizationRequestActiveError\" : \"Otorisasi pembayaran PayPal sedang diproses.\",\n \"venmoCanceledError\" : \"Terjadi kesalahan. Pastikan Anda memiliki aplikasi Venmo versi terbaru di perangkat dan peramban Anda mendukung peralihan ke Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Tidak dapat menghapus metode pembayaran, coba lagi.\",\n \"venmoAppFailedError\" : \"Aplikasi Venmo tidak dapat ditemukan di perangkat Anda.\",\n \"unsupportedCardTypeError\" : \"Jenis kartu ini tidak didukung. Mohon coba kartu lainnya.\",\n \"applePayTokenizationError\" : \"Terjadi kesalahan pada jaringan saat memproses pembayaran Apple Pay. Mohon coba lagi.\",\n \"applePayActiveCardError\" : \"Tambahkan kartu yang didukung oleh wallet Apple Pay Anda.\",\n \"cardholderNameLabel\" : \"Nama Pemilik Kartu\",\n \"cardNumberLabel\" : \"Nomor Kartu\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 angka)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 angka)\",\n \"cardholderNamePlaceholder\" : \"Nama Pemilik Kartu\",\n \"expirationDateLabel\" : \"Tanggal Kedaluwarsa\",\n \"expirationDateLabelSubheading\" : \"(BB/TT)\",\n \"expirationDatePlaceholder\" : \"BB/TT\",\n \"postalCodeLabel\" : \"Kode Pos\",\n \"saveCardLabel\" : \"Simpan kartu\",\n \"payWithCard\" : \"Bayar dengan kartu\",\n \"endingIn\" : \"Berakhiran dengan {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Kartu\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Jelajahi\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],229:[function(require,module,exports){\n/* eslint-disable camelcase */\n'use strict';\n\nvar assign = require('../lib/assign').assign;\n\nvar fiveCharacterLocales = {\n ar_EG: require('./ar_EG'),\n cs_CZ: require('./cs_CZ'),\n da_DK: require('./da_DK'),\n de_DE: require('./de_DE'),\n el_GR: require('./el_GR'),\n en_AU: require('./en_AU'),\n en_GB: require('./en_GB'),\n en_IN: require('./en_IN'),\n en_US: require('./en_US'),\n es_ES: require('./es_ES'),\n es_XC: require('./es_XC'),\n fi_FI: require('./fi_FI'),\n fr_CA: require('./fr_CA'),\n fr_FR: require('./fr_FR'),\n fr_XC: require('./fr_XC'),\n he_IL: require('./he_IL'),\n hu_HU: require('./hu_HU'),\n id_ID: require('./id_ID'),\n it_IT: require('./it_IT'),\n ja_JP: require('./ja_JP'),\n ko_KR: require('./ko_KR'),\n nl_NL: require('./nl_NL'),\n no_NO: require('./no_NO'),\n pl_PL: require('./pl_PL'),\n pt_BR: require('./pt_BR'),\n pt_PT: require('./pt_PT'),\n ru_RU: require('./ru_RU'),\n sk_SK: require('./sk_SK'),\n sv_SE: require('./sv_SE'),\n th_TH: require('./th_TH'),\n zh_CN: require('./zh_CN'),\n zh_HK: require('./zh_HK'),\n zh_TW: require('./zh_TW'),\n zh_XC: require('./zh_XC')\n};\n\nvar twoCharacterLocaleAliases = {\n ar: fiveCharacterLocales.ar_EG,\n cs: fiveCharacterLocales.cs_CZ,\n da: fiveCharacterLocales.da_DK,\n de: fiveCharacterLocales.de_DE,\n el: fiveCharacterLocales.el_GR,\n en: fiveCharacterLocales.en_US,\n es: fiveCharacterLocales.es_ES,\n fi: fiveCharacterLocales.fi_FI,\n fr: fiveCharacterLocales.fr_FR,\n id: fiveCharacterLocales.id_ID,\n it: fiveCharacterLocales.it_IT,\n hu: fiveCharacterLocales.hu_HU,\n ja: fiveCharacterLocales.ja_JP,\n ko: fiveCharacterLocales.ko_KR,\n nl: fiveCharacterLocales.nl_NL,\n no: fiveCharacterLocales.no_NO,\n pl: fiveCharacterLocales.pl_PL,\n pt: fiveCharacterLocales.pt_PT,\n ru: fiveCharacterLocales.ru_RU,\n sk: fiveCharacterLocales.sk_SK,\n sv: fiveCharacterLocales.sv_SE,\n th: fiveCharacterLocales.th_TH,\n zh: fiveCharacterLocales.zh_CN\n};\n\nmodule.exports = {\n twoCharacterLocaleAliases: twoCharacterLocaleAliases,\n fiveCharacterLocales: fiveCharacterLocales,\n translations: assign({}, twoCharacterLocaleAliases, fiveCharacterLocales)\n};\n/* eslint-enable camelcase */\n\n},{\"../lib/assign\":195,\"./ar_EG\":211,\"./cs_CZ\":212,\"./da_DK\":213,\"./de_DE\":214,\"./el_GR\":215,\"./en_AU\":216,\"./en_GB\":217,\"./en_IN\":218,\"./en_US\":219,\"./es_ES\":220,\"./es_XC\":221,\"./fi_FI\":222,\"./fr_CA\":223,\"./fr_FR\":224,\"./fr_XC\":225,\"./he_IL\":226,\"./hu_HU\":227,\"./id_ID\":228,\"./it_IT\":230,\"./ja_JP\":231,\"./ko_KR\":232,\"./nl_NL\":233,\"./no_NO\":234,\"./pl_PL\":235,\"./pt_BR\":236,\"./pt_PT\":237,\"./ru_RU\":238,\"./sk_SK\":239,\"./sv_SE\":240,\"./th_TH\":241,\"./zh_CN\":242,\"./zh_HK\":243,\"./zh_TW\":244,\"./zh_XC\":245}],230:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Metodo di pagamento: {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Scegli un altro metodo di pagamento\",\n \"chooseAWayToPay\" : \"Scegli un metodo di pagamento\",\n \"otherWaysToPay\" : \"Altri metodi di pagamento\",\n \"edit\" : \"Modifica\",\n \"doneEditing\" : \"Fine\",\n \"editPaymentMethods\" : \"Modifica metodi di pagamento\",\n \"CreditCardDeleteConfirmationMessage\" : \"Eliminare la carta {{secondaryIdentifier}} le cui ultime cifre sono {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Eliminare il conto PayPal {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Vuoi davvero eliminare il conto Venmo con il nome utente {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Vuoi davvero eliminare questo metodo di pagamento?\",\n \"deleteCancelButton\" : \"Annulla\",\n \"deleteConfirmationButton\" : \"Rimuovi\",\n \"fieldEmptyForCvv\" : \"Compila un CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Compila una data di scadenza.\",\n \"fieldEmptyForCardholderName\" : \"Compila un nome del titolare.\",\n \"fieldTooLongForCardholderName\" : \"Il nome del titolare della carta non può contenere più di 256 caratteri.\",\n \"fieldEmptyForNumber\" : \"Compila un numero.\",\n \"fieldEmptyForPostalCode\" : \"Compila un CAP.\",\n \"fieldInvalidForCardholderName\" : \"Il nome del titolare non è valido.\",\n \"fieldInvalidForCvv\" : \"Il codice di sicurezza non è valido.\",\n \"fieldInvalidForExpirationDate\" : \"La data di scadenza non è valida.\",\n \"fieldInvalidForNumber\" : \"Il numero di carta non è valido.\",\n \"fieldInvalidForPostalCode\" : \"Il CAP non è valido.\",\n \"noticeOfCollection\" : \"Pagando con la carta, accetto la Dichiarazione sulla privacy di PayPal.\",\n \"genericError\" : \"Si è verificato un errore nei nostri sistemi.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Questa carta di credito esiste già come metodo di pagamento salvato.\",\n \"hostedFieldsFailedTokenizationError\" : \"Controlla i tuoi dati e riprova.\",\n \"hostedFieldsFieldsInvalidError\" : \"Controlla i tuoi dati e riprova.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Errore di rete. Riprova.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Verifica della carta di credito non riuscita. Controlla i tuoi dati e riprova.\",\n \"paypalButtonMustBeUsed\" : \"Usa il pulsante PayPal per continuare con il pagamento.\",\n \"venmoButtonMustBeUsed\": \"Usa il pulsante Venmo per continuare il pagamento.\",\n \"applePayButtonMustBeUsed\": \"Usa il pulsante Apple Pay per continuare con il pagamento.\",\n \"paypalAccountTokenizationFailedError\" : \"Si è verificato un errore durante l'aggiunta del conto PayPal. Riprova.\",\n \"paypalFlowFailedError\" : \"Si è verificato un errore durante la connessione a PayPal. Riprova.\",\n \"paypalTokenizationRequestActiveError\" : \"Autorizzazione di pagamento PayPal già in corso.\",\n \"venmoCanceledError\" : \"Si è verificato un errore. Assicurati di avere installato la versione più recente dell'app Venmo sul tuo dispositivo e che il tuo browser supporti il passaggio a Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Impossibile eliminare il metodo di pagamento, riprova.\",\n \"venmoAppFailedError\" : \"Impossibile trovare l'app Venmo sul tuo dispositivo.\",\n \"unsupportedCardTypeError\" : \"Questo tipo di carta non è supportato. Prova con un'altra carta.\",\n \"applePayTokenizationError\" : \"Si è verificato un errore di rete durante l'elaborazione del pagamento Apple Pay. Riprova.\",\n \"applePayActiveCardError\" : \"Aggiungi una carta supportata al tuo wallet Apple Pay.\",\n \"cardholderNameLabel\" : \"Nome del titolare\",\n \"cardNumberLabel\" : \"Numero di carta\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 cifre)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 cifre)\",\n \"cardholderNamePlaceholder\" : \"Nome del titolare\",\n \"expirationDateLabel\" : \"Data di scadenza\",\n \"expirationDateLabelSubheading\" : \"(MM/AA)\",\n \"expirationDatePlaceholder\" : \"MM/AA\",\n \"postalCodeLabel\" : \"CAP\",\n \"saveCardLabel\" : \"Salva carta\",\n \"payWithCard\" : \"Paga con una carta\",\n \"endingIn\" : \"Le ultime cifre sono {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Carta\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],231:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"{{paymentSource}}でのお支払い\",\n \"chooseAnotherWayToPay\" : \"別の支払方法を選択してください\",\n \"chooseAWayToPay\" : \"支払方法を選択してください\",\n \"otherWaysToPay\" : \"その他の支払方法\",\n \"edit\" : \"編集\",\n \"doneEditing\" : \"完了\",\n \"editPaymentMethods\" : \"支払方法の編集\",\n \"CreditCardDeleteConfirmationMessage\" : \"{{secondaryIdentifier}}カード(末尾番号: {{identifier}})を削除しますか?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"PayPalアカウント{{identifier}}を削除しますか?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"ユーザー名{{identifier}}のVenmoアカウントを削除してよろしいですか?\",\n \"genericDeleteConfirmationMessage\" : \"この支払方法を削除しますか?\",\n \"deleteCancelButton\" : \"キャンセル\",\n \"deleteConfirmationButton\" : \"削除\",\n \"fieldEmptyForCvv\" : \"CVVを入力してください。\",\n \"fieldEmptyForExpirationDate\" : \"有効期限を入力してください。\",\n \"fieldEmptyForCardholderName\" : \"カード保有者の名前を入力してください。\",\n \"fieldTooLongForCardholderName\" : \"カード保有者の名前は256文字未満にしてください。\",\n \"fieldEmptyForNumber\" : \"番号を入力してください。\",\n \"fieldEmptyForPostalCode\" : \"郵便番号を入力してください。\",\n \"fieldInvalidForCardholderName\" : \"このカード保有者の名前は無効です。\",\n \"fieldInvalidForCvv\" : \"このセキュリティコードは無効です。\",\n \"fieldInvalidForExpirationDate\" : \"この有効期限は無効です。\",\n \"fieldInvalidForNumber\" : \"このカード番号は無効です。\",\n \"fieldInvalidForPostalCode\" : \"この郵便番号は無効です。\",\n \"noticeOfCollection\" : \"カードで支払うことにより、PayPalプライバシーステートメントに同意したものとみなされます。\",\n \"genericError\" : \"弊社側で問題が発生しました。\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"このクレジットカードは、保存済みの支払方法としてすでに存在します。\",\n \"hostedFieldsFailedTokenizationError\" : \"情報を確認してもう一度お試しください。\",\n \"hostedFieldsFieldsInvalidError\" : \"情報を確認してもう一度お試しください。\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"ネットワークエラーです。再度お試しください。\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"クレジットカードの認証に失敗しました。情報を確認してもう一度お試しください。\",\n \"paypalButtonMustBeUsed\" : \"支払いを続行するには、PayPalボタンを使用します。\",\n \"venmoButtonMustBeUsed\": \"お支払いを続行するには、Venmoボタンを使用してください。\",\n \"applePayButtonMustBeUsed\": \"Apple Payボタンを使用してお支払いを続行してください。\",\n \"paypalAccountTokenizationFailedError\" : \"PayPalアカウントの追加中に問題が発生しました。再度お試しください。\",\n \"paypalFlowFailedError\" : \"PayPalへの接続に問題が発生しました。再度お試しください。\",\n \"paypalTokenizationRequestActiveError\" : \"PayPalの支払い承認はすでに処理中です。\",\n \"venmoCanceledError\" : \"問題が発生しました。お使いの端末にVenmoアプリの最新バージョンがインストールされており、お使いのブラウザがVenmoへの切り替えをサポートしていることをご確認ください。\",\n \"vaultManagerPaymentMethodDeletionError\" : \"支払方法を削除できない場合は、もう一度お試しください。\",\n \"venmoAppFailedError\" : \"お客さまの端末でVenmoアプリを見つけることができませんでした。\",\n \"unsupportedCardTypeError\" : \"このカードのタイプはサポートされていません。別のカードをご使用ください。\",\n \"applePayTokenizationError\" : \"Apple Payの支払いの処理中にネットワークエラーが発生しました。再度お試しください。\",\n \"applePayActiveCardError\" : \"Apple Payウォレットに対応しているカードを追加してください。\",\n \"cardholderNameLabel\" : \"カード保有者の名前\",\n \"cardNumberLabel\" : \"カード番号\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3桁)\",\n \"cvvFourDigitLabelSubheading\" : \"(4桁)\",\n \"cardholderNamePlaceholder\" : \"カード保有者の名前\",\n \"expirationDateLabel\" : \"有効期限\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"MM/YY\",\n \"postalCodeLabel\" : \"郵便番号\",\n \"saveCardLabel\" : \"カードを保存\",\n \"payWithCard\" : \"カードで支払う\",\n \"endingIn\" : \"末尾番号: {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"カード\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"銀聯(UnionPay)\"\n}\n;\n\n},{}],232:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"결제수단: {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"다른 결제수단을 선택해 주세요.\",\n \"chooseAWayToPay\" : \"결제수단 선택\",\n \"otherWaysToPay\" : \"다른 결제수단\",\n \"edit\" : \"편집\",\n \"doneEditing\" : \"완료\",\n \"editPaymentMethods\" : \"결제수단 편집\",\n \"CreditCardDeleteConfirmationMessage\" : \"{{identifier}}(으)로 끝나는 {{secondaryIdentifier}} 카드를 삭제하시겠습니까?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"PayPal 계정 {{identifier}}을(를) 삭제하시겠습니까?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"사용자 이름 {{identifier}}의 Venmo 계정을 정말 삭제하시겠습니까?\",\n \"genericDeleteConfirmationMessage\" : \"이 결제수단을 삭제하시겠습니까?\",\n \"deleteCancelButton\" : \"취소\",\n \"deleteConfirmationButton\" : \"삭제\",\n \"fieldEmptyForCvv\" : \"CVV를 입력하세요.\",\n \"fieldEmptyForExpirationDate\" : \"만료일을 입력하세요.\",\n \"fieldEmptyForCardholderName\" : \"카드 소유자 이름을 입력하세요.\",\n \"fieldTooLongForCardholderName\" : \"카드 소유자 이름은 256자 미만이어야 합니다.\",\n \"fieldEmptyForNumber\" : \"번호를 입력하세요.\",\n \"fieldEmptyForPostalCode\" : \"우편번호를 입력하세요.\",\n \"fieldInvalidForCardholderName\" : \"이 카드 소유자 이름은 유효하지 않습니다.\",\n \"fieldInvalidForCvv\" : \"이 보안 코드는 유효하지 않습니다.\",\n \"fieldInvalidForExpirationDate\" : \"이 만료일은 유효하지 않습니다.\",\n \"fieldInvalidForNumber\" : \"이 카드 번호는 유효하지 않습니다.\",\n \"fieldInvalidForPostalCode\" : \"이 우편번호는 유효하지 않습니다.\",\n \"noticeOfCollection\" : \"자신의 카드로 결제함으로써 사용자는 PayPal 개인정보 취급방침에 동의합니다.\",\n \"genericError\" : \"저희 쪽에 문제가 발생했습니다.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"이 신용카드는 이미 저장된 결제수단으로 설정되어 있습니다.\",\n \"hostedFieldsFailedTokenizationError\" : \"정보를 확인하고 다시 시도해 주세요.\",\n \"hostedFieldsFieldsInvalidError\" : \"정보를 확인하고 다시 시도해 주세요.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"네트워크 오류입니다. 다시 시도해 주세요.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"신용카드 인증에 실패했습니다. 정보를 확인하고 다시 시도해 주세요.\",\n \"paypalButtonMustBeUsed\" : \"PayPal 버튼을 사용하여 결제를 계속 진행하세요.\",\n \"venmoButtonMustBeUsed\": \"결제를 계속하려면 Venmo 버튼을 사용하세요.\",\n \"applePayButtonMustBeUsed\": \"Apple Pay 버튼을 사용하여 결제를 계속 진행하세요.\",\n \"paypalAccountTokenizationFailedError\" : \"PayPal 계정을 추가하는 중에 문제가 발생했습니다. 다시 시도해 주세요.\",\n \"paypalFlowFailedError\" : \"PayPal에 연결하는 데 문제가 발생했습니다. 다시 시도해 주세요.\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal 결제 승인이 이미 진행 중입니다.\",\n \"venmoCanceledError\" : \"오류가 발생했습니다. 기기에 최신 버전의 Venmo 앱이 설치되어 있고 브라우저가 Venmo로의 전환을 지원하는지 확인하세요.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"결제수단을 삭제할 수 없습니다. 다시 시도해 주세요.\",\n \"venmoAppFailedError\" : \"기기에서 Venmo 앱을 찾을 수 없습니다.\",\n \"unsupportedCardTypeError\" : \"이 카드 유형은 지원되지 않습니다. 다른 카드로 시도해 주세요.\",\n \"applePayTokenizationError\" : \"Apple Pay 결제를 처리하는 동안 네트워크 오류가 발생했습니다. 다시 시도해 주세요.\",\n \"applePayActiveCardError\" : \"Apple Pay 전자지갑에 지원되는 카드를 추가하세요.\",\n \"cardholderNameLabel\" : \"카드 소유자 이름\",\n \"cardNumberLabel\" : \"카드 번호\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3자리)\",\n \"cvvFourDigitLabelSubheading\" : \"(4자리)\",\n \"cardholderNamePlaceholder\" : \"카드 소유자 이름\",\n \"expirationDateLabel\" : \"만료일\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"MM/YY\",\n \"postalCodeLabel\" : \"우편번호\",\n \"saveCardLabel\" : \"카드 저장\",\n \"payWithCard\" : \"카드로 결제\",\n \"endingIn\" : \"다음으로 끝남: {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"카드\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],233:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Betalen met {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Kies een andere betaalmethode\",\n \"chooseAWayToPay\" : \"Kies een betaalmethode\",\n \"otherWaysToPay\" : \"Andere betaalmethoden\",\n \"edit\" : \"Bewerken\",\n \"doneEditing\" : \"Klaar\",\n \"editPaymentMethods\" : \"Betaalmethoden bewerken\",\n \"CreditCardDeleteConfirmationMessage\" : \"{{secondaryIdentifier}}-kaart eindigend op {{identifier}} verwijderen?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"PayPal-rekening {{identifier}} verwijderen?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Weet je zeker dat je de Venmo-rekening met gebruikersnaam {{identifier}} wilt verwijderen?\",\n \"genericDeleteConfirmationMessage\" : \"Weet je zeker dat je deze betaalmethode wilt verwijderen?\",\n \"deleteCancelButton\" : \"Annuleren\",\n \"deleteConfirmationButton\" : \"Verwijderen\",\n \"fieldEmptyForCvv\" : \"Vul een CVV in.\",\n \"fieldEmptyForExpirationDate\" : \"Vul een vervaldatum in.\",\n \"fieldEmptyForCardholderName\" : \"Vul de naam van de kaarthouder in.\",\n \"fieldTooLongForCardholderName\" : \"Naam kaarthouder moet minder dan 256 tekens bevatten.\",\n \"fieldEmptyForNumber\" : \"Vul een nummer in.\",\n \"fieldEmptyForPostalCode\" : \"Vul een postcode in.\",\n \"fieldInvalidForCardholderName\" : \"Naam kaarthouder is ongeldig.\",\n \"fieldInvalidForCvv\" : \"Deze beveiligingscode is ongeldig.\",\n \"fieldInvalidForExpirationDate\" : \"Deze vervaldatum is ongeldig.\",\n \"fieldInvalidForNumber\" : \"Dit kaartnummer is ongeldig.\",\n \"fieldInvalidForPostalCode\" : \"Deze postcode is ongeldig.\",\n \"noticeOfCollection\" : \"Door met mijn kaart te betalen, ga ik akkoord met de PayPal Privacyverklaring.\",\n \"genericError\" : \"Er is aan onze kant iets fout gegaan.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Deze creditcard bestaat al als opgeslagen betaalmethode.\",\n \"hostedFieldsFailedTokenizationError\" : \"Controleer je gegevens en probeer het opnieuw.\",\n \"hostedFieldsFieldsInvalidError\" : \"Controleer je gegevens en probeer het opnieuw.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Netwerkfout. Probeer het opnieuw.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Verificatie van creditcard is mislukt. Controleer je gegevens en probeer het opnieuw.\",\n \"paypalButtonMustBeUsed\" : \"Gebruik de PayPal-knop om door te gaan met je betaling.\",\n \"venmoButtonMustBeUsed\": \"Gebruik de Venmo-knop om door te gaan met je betaling.\",\n \"applePayButtonMustBeUsed\": \"Gebruik de knop Apple Pay om door te gaan met je betaling.\",\n \"paypalAccountTokenizationFailedError\" : \"Er is iets fout gegaan bij het toevoegen van de PayPal-rekening. Probeer het opnieuw.\",\n \"paypalFlowFailedError\" : \"Er is iets fout gegaan bij het verbinden met PayPal. Probeer het opnieuw.\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal-betaalautorisatie is al in voortgang.\",\n \"venmoCanceledError\" : \"Er is iets fout gegaan. Zorg ervoor dat je de recentste versie van de Venmo-app op je apparaat geïnstalleerd hebt en dat je browser ondersteuning biedt voor overschakelen naar Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Kan betaalmethode niet verwijderen. Probeer het opnieuw.\",\n \"venmoAppFailedError\" : \"De Venmo-app is niet gevonden op je apparaat.\",\n \"unsupportedCardTypeError\" : \"Dit kaarttype wordt niet ondersteund. Gebruik een andere kaart.\",\n \"applePayTokenizationError\" : \"Er is een netwerkfout opgetreden bij het verwerken van de Apple Pay-betaling. Probeer het opnieuw.\",\n \"applePayActiveCardError\" : \"Voeg een ondersteunde kaart toe aan je Apple Pay-wallet.\",\n \"cardholderNameLabel\" : \"Naam kaarthouder\",\n \"cardNumberLabel\" : \"Kaartnummer\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 cijfers)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 cijfers)\",\n \"cardholderNamePlaceholder\" : \"Naam kaarthouder\",\n \"expirationDateLabel\" : \"Vervaldatum\",\n \"expirationDateLabelSubheading\" : \"(mm/jj)\",\n \"expirationDatePlaceholder\" : \"mm/jj\",\n \"postalCodeLabel\" : \"Postcode\",\n \"saveCardLabel\" : \"Kaart opslaan\",\n \"payWithCard\" : \"Betalen met kaart\",\n \"endingIn\" : \"Eindigend op {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Kaart\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],234:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Betaler med {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Velg en annen betalingsmåte\",\n \"chooseAWayToPay\" : \"Velg betalingsmåte\",\n \"otherWaysToPay\" : \"Andre betalingsmåter\",\n \"edit\" : \"Endre\",\n \"doneEditing\" : \"Ferdig\",\n \"editPaymentMethods\" : \"Rediger betalingsmetode\",\n \"CreditCardDeleteConfirmationMessage\" : \"Vil du slette {{secondaryIdentifier}}-kortet som slutter på {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Vil du slette PayPal-konto {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Er du sikker på at du vil slette Venmo-kontoen med brukernavnet {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Er du sikker på at du vil slette denne betalingsmetoden?\",\n \"deleteCancelButton\" : \"Avbryt\",\n \"deleteConfirmationButton\" : \"Slett\",\n \"fieldEmptyForCvv\" : \"Fyll ut sikkerhetskode (CVV).\",\n \"fieldEmptyForExpirationDate\" : \"Fyll ut utløpsdato.\",\n \"fieldEmptyForCardholderName\" : \"Fyll ut kortinnehavers navn.\",\n \"fieldTooLongForCardholderName\" : \"Kortinnehaverens må ha mindre enn 256 tegn.\",\n \"fieldEmptyForNumber\" : \"Fyll ut nummer.\",\n \"fieldEmptyForPostalCode\" : \"Fyll ut postnummer.\",\n \"fieldInvalidForCardholderName\" : \"Denne kortinnehaverens navn er ikke gyldig.\",\n \"fieldInvalidForCvv\" : \"Denne sikkerhetskoden er ikke gyldig.\",\n \"fieldInvalidForExpirationDate\" : \"Denne utløpsdatoen er ikke gyldig.\",\n \"fieldInvalidForNumber\" : \"Dette kortnummeret er ikke gyldig.\",\n \"fieldInvalidForPostalCode\" : \"Dette postnummeret er ikke gyldig.\",\n \"noticeOfCollection\" : \"Ved å betale med kortet godtar jeg PayPals personvernerklæring.\",\n \"genericError\" : \"Noe gikk galt hos oss.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Dette betalingskortet finnes allerede som en lagret betalingsmetode.\",\n \"hostedFieldsFailedTokenizationError\" : \"Kontroller informasjonen, og prøv på nytt.\",\n \"hostedFieldsFieldsInvalidError\" : \"Kontroller informasjonen, og prøv på nytt.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Nettverksfeil. Prøv på nytt.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Kontroll av betalingskort mislyktes. Kontroller informasjonen, og prøv på nytt.\",\n \"paypalButtonMustBeUsed\" : \"Bruk PayPal-knappen for å fortsette med betalingen.\",\n \"venmoButtonMustBeUsed\": \"Bruk Venmo-knappen for å fortsette med betalingen.\",\n \"applePayButtonMustBeUsed\": \"Bruk Apple Pay-knappen for å fortsette med betalingen.\",\n \"paypalAccountTokenizationFailedError\" : \"Kan ikke legge til PayPal-kontoen. Prøv på nytt.\",\n \"paypalFlowFailedError\" : \"Kan ikke koble til PayPal. Prøv på nytt.\",\n \"paypalTokenizationRequestActiveError\" : \"PayPals prosess for betalingsgodkjenning har allerede startet.\",\n \"venmoCanceledError\" : \"Noe gikk galt. Kontroller at den nyeste versjonen av Venmo-appen er installert på enheten din, og at nettleseren din støtter bruk av Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Kan ikke slette betalingsmetoden. Prøv på nytt.\",\n \"venmoAppFailedError\" : \"Finner ikke Venmo-appen på enheten.\",\n \"unsupportedCardTypeError\" : \"Denne korttypen støttes ikke. Prøv et annet kort.\",\n \"applePayTokenizationError\" : \"Nettverksfeil under behandling av Apple Pay-betalingen. Prøv på nytt.\",\n \"applePayActiveCardError\" : \"Legg til et støttet kort i e-lommeboken for Apple Pay.\",\n \"cardholderNameLabel\" : \"Kortinnehavers navn\",\n \"cardNumberLabel\" : \"Kortnummer\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 sifre)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 sifre)\",\n \"cardholderNamePlaceholder\" : \"Kortinnehavers navn\",\n \"expirationDateLabel\" : \"Utløpsdato\",\n \"expirationDateLabelSubheading\" : \"(MM/ÅÅ)\",\n \"expirationDatePlaceholder\" : \"MM/ÅÅ\",\n \"postalCodeLabel\" : \"Postnummer\",\n \"saveCardLabel\" : \"Lagre kort\",\n \"payWithCard\" : \"Betal med kort\",\n \"endingIn\" : \"Slutter på {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Kort\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],235:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Źródło finansowania płatności: {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Wybierz inny sposób płatności.\",\n \"chooseAWayToPay\" : \"Wybierz sposób płatności\",\n \"otherWaysToPay\" : \"Inne sposoby płatności\",\n \"edit\" : \"Edytuj\",\n \"doneEditing\" : \"Gotowe\",\n \"editPaymentMethods\" : \"Edytuj formy płatności\",\n \"CreditCardDeleteConfirmationMessage\" : \"Usunąć kartę {{secondaryIdentifier}} o numerze zakończonym cyframi {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Usunąć {{identifier}}konta PayPal?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Czy na pewno chcesz usunąć konto Venmo o nazwie użytkownika {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Na pewno chcesz usunąć tę formę płatności?\",\n \"deleteCancelButton\" : \"Anuluj\",\n \"deleteConfirmationButton\" : \"Usuń\",\n \"fieldEmptyForCvv\" : \"Wpisz kod CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Wpisz datę ważności.\",\n \"fieldEmptyForCardholderName\" : \"Podaj imię i nazwisko posiadacza karty.\",\n \"fieldTooLongForCardholderName\" : \"Imię i nazwisko posiadacza karty musi mieć mniej niż 256 znaków.\",\n \"fieldEmptyForNumber\" : \"Podaj numer.\",\n \"fieldEmptyForPostalCode\" : \"Podaj kod pocztowy.\",\n \"fieldInvalidForCardholderName\" : \"To imię i nazwisko posiadacza karty jest nieprawidłowe.\",\n \"fieldInvalidForCvv\" : \"Ten kod bezpieczeństwa jest nieprawidłowy.\",\n \"fieldInvalidForExpirationDate\" : \"Ta data ważności jest nieprawidłowa.\",\n \"fieldInvalidForNumber\" : \"Numer karty jest nieprawidłowy.\",\n \"fieldInvalidForPostalCode\" : \"Kod pocztowy jest nieprawidłowy.\",\n \"noticeOfCollection\" : \"Dokonując płatności kartą, akceptuję Informacje dotyczące zasad ochrony danych firmy PayPal.\",\n \"genericError\" : \"Wystąpił błąd po naszej stronie.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Ta karta kredytowa istnieje jako zapisana forma płatności.\",\n \"hostedFieldsFailedTokenizationError\" : \"Sprawdź swoje informacje i spróbuj ponownie.\",\n \"hostedFieldsFieldsInvalidError\" : \"Sprawdź swoje informacje i spróbuj ponownie.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Błąd sieci. Spróbuj ponownie.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Weryfikacja karty kredytowej nie powiodła się. Sprawdź swoje informacje i spróbuj ponownie.\",\n \"paypalButtonMustBeUsed\" : \"Aby kontynuować płatność, użyj przycisku PayPal.\",\n \"venmoButtonMustBeUsed\": \"Użyj przycisku Venmo, aby kontynuować płatność\",\n \"applePayButtonMustBeUsed\": \"Aby kontynuować płatność, użyj przycisku Apple Pay.\",\n \"paypalAccountTokenizationFailedError\" : \"Coś poszło nie tak przy dodawaniu konta PayPal. Spróbuj ponownie.\",\n \"paypalFlowFailedError\" : \"Wystąpił problem przy nawiązywaniu połączenia z PayPal. Spróbuj ponownie.\",\n \"paypalTokenizationRequestActiveError\" : \"Autoryzacja płatności PayPal jest w trakcie realizacji.\",\n \"venmoCanceledError\" : \"Coś poszło nie tak. Upewnij się, że na Twoim urządzeniu jest zainstalowana najnowsza wersja aplikacji Venmo, a Twoja przeglądarka obsługuje przełączanie na Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Nie można usunąć formy płatności, spróbuj ponownie.\",\n \"venmoAppFailedError\" : \"Aplikacja Venmo nie została odnaleziona na Twoim urządzeniu.\",\n \"unsupportedCardTypeError\" : \"Ten typ karty nie jest obsługiwany. Spróbuj użyć innej karty.\",\n \"applePayTokenizationError\" : \"Wystąpił błąd sieciowy podczas przetwarzania płatności Apple Pay. Spróbuj ponownie.\",\n \"applePayActiveCardError\" : \"Dodaj obsługiwaną kartę do portfela Apple Pay.\",\n \"cardholderNameLabel\" : \"Imię i nazwisko posiadacza karty\",\n \"cardNumberLabel\" : \"Numer karty\",\n \"cvvLabel\" : \"Kod CVV/CVC2\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 cyfry)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 cyfry)\",\n \"cardholderNamePlaceholder\" : \"Imię i nazwisko posiadacza karty\",\n \"expirationDateLabel\" : \"Data ważności\",\n \"expirationDateLabelSubheading\" : \"(MM/RR)\",\n \"expirationDatePlaceholder\" : \"MM/RR\",\n \"postalCodeLabel\" : \"Kod pocztowy\",\n \"saveCardLabel\" : \"Zapisz kartę\",\n \"payWithCard\" : \"Zapłać kartą\",\n \"endingIn\" : \"Numer zakończonym cyframi {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Karta\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],236:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Pagando com {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Escolha outro meio de pagamento\",\n \"chooseAWayToPay\" : \"Escolha um meio de pagamento\",\n \"otherWaysToPay\" : \"Outras formas de pagar\",\n \"edit\" : \"Editar\",\n \"doneEditing\" : \"Concluído\",\n \"editPaymentMethods\" : \"Editar meios de pagamento\",\n \"CreditCardDeleteConfirmationMessage\" : \"Excluir cartão {{secondaryIdentifier}} de final {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Excluir conta do PayPal {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Tem certeza de que deseja excluir a conta do Venmo com nome de usuário {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Tem certeza que deseja excluir este meio de pagamento?\",\n \"deleteCancelButton\" : \"Cancelar\",\n \"deleteConfirmationButton\" : \"Excluir\",\n \"fieldEmptyForCvv\" : \"Preencha um CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Preencha uma data de vencimento.\",\n \"fieldEmptyForCardholderName\" : \"Preencha um nome para o titular do cartão.\",\n \"fieldTooLongForCardholderName\" : \"O nome do titular do cartão deve ter menos de 256 caracteres.\",\n \"fieldEmptyForNumber\" : \"Preencha um número.\",\n \"fieldEmptyForPostalCode\" : \"Preencha um código postal.\",\n \"fieldInvalidForCardholderName\" : \"O nome do titular do cartão é inválido.\",\n \"fieldInvalidForCvv\" : \"Este código de segurança é inválido.\",\n \"fieldInvalidForExpirationDate\" : \"Esta data de vencimento é inválida.\",\n \"fieldInvalidForNumber\" : \"O número do cartão é inválido.\",\n \"fieldInvalidForPostalCode\" : \"Este código postal é inválido.\",\n \"noticeOfCollection\" : \"Ao pagar com o meu cartão, aceito a Declaração de Privacidade da PayPal.\",\n \"genericError\" : \"Ocorreu um erro.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Este cartão de crédito já existe como um meio de pagamento salvo.\",\n \"hostedFieldsFailedTokenizationError\" : \"Verifique as informações e tente novamente.\",\n \"hostedFieldsFieldsInvalidError\" : \"Verifique as informações e tente novamente.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Erro de rede. Tente novamente.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Falha na verificação do cartão de crédito. Verifique as informações e tente novamente.\",\n \"paypalButtonMustBeUsed\" : \"Use o botão do PayPal para prosseguir com o pagamento.\",\n \"venmoButtonMustBeUsed\": \"Utilize o botão Venmo para continuar o seu pagamento.\",\n \"applePayButtonMustBeUsed\": \"Use o botão Apple Pay para prosseguir com o pagamento.\",\n \"paypalAccountTokenizationFailedError\" : \"Ocorreu um erro ao adicionar a conta do PayPal. Tente novamente.\",\n \"paypalFlowFailedError\" : \"Ocorreu um erro na conexão com o PayPal. Tente novamente.\",\n \"paypalTokenizationRequestActiveError\" : \"A autorização de pagamento do PayPal já está em andamento.\",\n \"venmoCanceledError\" : \"Ocorreu um erro. Certifique-se de que você tenha a versão mais recente do aplicativo Venmo instalada no seu dispositivo, e que seu navegador aceite a mudança para o Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Não é possível excluir o meio de pagamento, tente novamente.\",\n \"venmoAppFailedError\" : \"O aplicativo Venmo não foi encontrado no seu dispositivo.\",\n \"unsupportedCardTypeError\" : \"Este tipo de cartão não é aceito. Tente outro cartão.\",\n \"applePayTokenizationError\" : \"Ocorreu um erro de rede ao processar o pagamento do Apple Pay. Tente novamente.\",\n \"applePayActiveCardError\" : \"Adicione um cartão compatível à sua carteira Apple Pay.\",\n \"cardholderNameLabel\" : \"Nome do titular do cartão\",\n \"cardNumberLabel\" : \"Número do cartão\",\n \"cvvLabel\" : \"CSC\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 dígitos)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 dígitos)\",\n \"cardholderNamePlaceholder\" : \"Nome do titular do cartão\",\n \"expirationDateLabel\" : \"Data de vencimento\",\n \"expirationDateLabelSubheading\" : \"(MM/AA)\",\n \"expirationDatePlaceholder\" : \"MM/AA\",\n \"postalCodeLabel\" : \"CEP\",\n \"saveCardLabel\" : \"Salvar cartão\",\n \"payWithCard\" : \"Pague com seu cartão de crédito\",\n \"endingIn\" : \"De final {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Cartão\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"Crédito do PayPal\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Descobrir\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],237:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Pagamento com {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Escolher outra forma de pagamento\",\n \"chooseAWayToPay\" : \"Escolher forma de pagamento\",\n \"otherWaysToPay\" : \"Outras formas de pagamento\",\n \"edit\" : \"Editar\",\n \"doneEditing\" : \"Concluído\",\n \"editPaymentMethods\" : \"Editar meios de pagamento\",\n \"CreditCardDeleteConfirmationMessage\" : \"Eliminar cartão {{secondaryIdentifier}} terminado em {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Eliminar conta PayPal {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Quer mesmo eliminar a conta Venmo com o nome de utilizador {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Quer mesmo eliminar este meio de pagamento?\",\n \"deleteCancelButton\" : \"Cancelar\",\n \"deleteConfirmationButton\" : \"Eliminar\",\n \"fieldEmptyForCvv\" : \"Introduza um CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Introduza uma data de validade.\",\n \"fieldEmptyForCardholderName\" : \"Introduza um nome do titular do cartão.\",\n \"fieldTooLongForCardholderName\" : \"O Nome do titular do cartão deve ter menos de 256 carateres.\",\n \"fieldEmptyForNumber\" : \"Introduza um número.\",\n \"fieldEmptyForPostalCode\" : \"Introduza um código postal.\",\n \"fieldInvalidForCardholderName\" : \"Este nome do titular do cartão não é válido.\",\n \"fieldInvalidForCvv\" : \"Este código de segurança não é válido.\",\n \"fieldInvalidForExpirationDate\" : \"Esta data de validade não é válida.\",\n \"fieldInvalidForNumber\" : \"Este número de cartão não é válido.\",\n \"fieldInvalidForPostalCode\" : \"Este código postal não é válido.\",\n \"noticeOfCollection\" : \"Ao pagar com o meu cartão, aceito a Declaração de Privacidade da PayPal.\",\n \"genericError\" : \"Tudo indica que houve um problema.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Este cartão de crédito já existe como meio de pagamento guardado.\",\n \"hostedFieldsFailedTokenizationError\" : \"Verifique as suas informações e tente novamente.\",\n \"hostedFieldsFieldsInvalidError\" : \"Verifique as suas informações e tente novamente.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Erro de rede. Tente novamente.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"A verificação do cartão de crédito falhou. Verifique as suas informações e tente novamente.\",\n \"paypalButtonMustBeUsed\" : \"Use o botão PayPal para continuar o seu pagamento.\",\n \"venmoButtonMustBeUsed\": \"Utilize o botão Venmo para continuar o seu pagamento.\",\n \"applePayButtonMustBeUsed\": \"Utilize o botão Apple Pay para continuar o seu pagamento.\",\n \"paypalAccountTokenizationFailedError\" : \"Ocorreu um erro ao adicionar a conta PayPal. Tente novamente.\",\n \"paypalFlowFailedError\" : \"Ocorreu um erro ao ligar ao PayPal. Tente novamente.\",\n \"paypalTokenizationRequestActiveError\" : \"A autorização de pagamento com PayPal já está em curso.\",\n \"venmoCanceledError\" : \"Ocorreu um erro. Certifique-se de que tem a versão mais recente da aplicação Venmo instalada no seu dispositivo e que o seu navegador suporta a mudança para Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Não é possível eliminar o meio de pagamento; tente novamente.\",\n \"venmoAppFailedError\" : \"A aplicação Venmo não foi encontrada no seu dispositivo.\",\n \"unsupportedCardTypeError\" : \"Este tipo de cartão não é suportado. Tente com outro cartão.\",\n \"applePayTokenizationError\" : \"Ocorreu um erro de rede ao processar o pagamento com Apple Pay. Tente novamente.\",\n \"applePayActiveCardError\" : \"Adicione um cartão suportado à sua carteira Apple Pay.\",\n \"cardholderNameLabel\" : \"Nome do titular do cartão\",\n \"cardNumberLabel\" : \"Número do cartão\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 dígitos)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 dígitos)\",\n \"cardholderNamePlaceholder\" : \"Nome do titular do cartão\",\n \"expirationDateLabel\" : \"Data de validade\",\n \"expirationDateLabelSubheading\" : \"(MM/AA)\",\n \"expirationDatePlaceholder\" : \"MM/AA\",\n \"postalCodeLabel\" : \"Código postal\",\n \"saveCardLabel\" : \"Guardar cartão\",\n \"payWithCard\" : \"Pagar com cartão\",\n \"endingIn\" : \"Termina em {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Cartão\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],238:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Оплата с помощью {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Выберите другой способ оплаты\",\n \"chooseAWayToPay\" : \"Выберите способ оплаты\",\n \"otherWaysToPay\" : \"Другие способы оплаты\",\n \"edit\" : \"Изменить\",\n \"doneEditing\" : \"Готово\",\n \"editPaymentMethods\" : \"Изменить способы оплаты\",\n \"CreditCardDeleteConfirmationMessage\" : \"Удалить карту {{secondaryIdentifier}} с номером, заканчивающимся на {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Удалить счет PayPal {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Вы действительно хотите удалить счет Venmo с именем пользователя {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Вы действительно хотите удалить этот способ оплаты?\",\n \"deleteCancelButton\" : \"Отмена\",\n \"deleteConfirmationButton\" : \"Удалить\",\n \"fieldEmptyForCvv\" : \"Укажите код безопасности.\",\n \"fieldEmptyForExpirationDate\" : \"Укажите дату окончания срока действия.\",\n \"fieldEmptyForCardholderName\" : \"Укажите имя владельца карты.\",\n \"fieldTooLongForCardholderName\" : \"Имя владельца карты должно содержать не более 256 символов.\",\n \"fieldEmptyForNumber\" : \"Укажите номер.\",\n \"fieldEmptyForPostalCode\" : \"Укажите почтовый индекс.\",\n \"fieldInvalidForCardholderName\" : \"Недопустимое имя владельца карты.\",\n \"fieldInvalidForCvv\" : \"Недопустимый код безопасности.\",\n \"fieldInvalidForExpirationDate\" : \"Недопустимая дата истечения срока действия.\",\n \"fieldInvalidForNumber\" : \"Недопустимый номер карты.\",\n \"fieldInvalidForPostalCode\" : \"Недопустимый почтовый индекс.\",\n \"noticeOfCollection\" : \"Выполняя оплату с помощью карты, я соглашаюсь с условиями Положения о конфиденциальности PayPal.\",\n \"genericError\" : \"Возникла проблема с нашей стороны.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Данная кредитная карта уже существует как сохраненный способ оплаты.\",\n \"hostedFieldsFailedTokenizationError\" : \"Проверьте правильность ввода данных и повторите попытку.\",\n \"hostedFieldsFieldsInvalidError\" : \"Проверьте правильность ввода данных и повторите попытку.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Сбой сети. Повторите попытку.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Сбой при проверке кредитной карты. Проверьте правильность ввода данных и повторите попытку.\",\n \"paypalButtonMustBeUsed\" : \"Используйте кнопку PayPal, чтобы продолжить оплату.\",\n \"venmoButtonMustBeUsed\": \"Используйте кнопку Venmo, чтобы продолжить оплату.\",\n \"applePayButtonMustBeUsed\": \"Нажмите кнопку Apple Pay, чтобы продолжить оплату.\",\n \"paypalAccountTokenizationFailedError\" : \"Возникла ошибка при добавлении счета PayPal. Повторите попытку.\",\n \"paypalFlowFailedError\" : \"Возникла ошибка при подключении к PayPal. Повторите попытку.\",\n \"paypalTokenizationRequestActiveError\" : \"Авторизация платежа через PayPal уже выполняется.\",\n \"venmoCanceledError\" : \"Возникла ошибка. Убедитесь, что на вашем устройстве установлена самая последняя версия приложения Venmo и браузер поддерживает переход на Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Не удалось удалить способ оплаты, повторите попытку.\",\n \"venmoAppFailedError\" : \"Приложение Venmo не удается обнаружить на вашем устройстве.\",\n \"unsupportedCardTypeError\" : \"Данный тип карты не поддерживается. Попробуйте воспользоваться другой картой.\",\n \"applePayTokenizationError\" : \"Возникла ошибка сети при обработке платежа Apple Pay. Повторите попытку.\",\n \"applePayActiveCardError\" : \"Добавьте поддерживаемую карту в ваш счет Apple Pay.\",\n \"cardholderNameLabel\" : \"Имя владельца карты\",\n \"cardNumberLabel\" : \"Номер карты\",\n \"cvvLabel\" : \"Код безопасности карты CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 цифры)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 цифры)\",\n \"cardholderNamePlaceholder\" : \"Имя владельца карты\",\n \"expirationDateLabel\" : \"Дата окончания срока действия\",\n \"expirationDateLabelSubheading\" : \"(ММ/ГГ)\",\n \"expirationDatePlaceholder\" : \"ММ/ГГ\",\n \"postalCodeLabel\" : \"Индекс\",\n \"saveCardLabel\" : \"Сохранить карту\",\n \"payWithCard\" : \"Оплатить банковской картой\",\n \"endingIn\" : \"Заканчивается на {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Карта\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Полезное\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],239:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Spôsob platby: {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Vyberte iný spôsob platby\",\n \"chooseAWayToPay\" : \"Zvoľte spôsob platby\",\n \"otherWaysToPay\" : \"Iné spôsoby platby\",\n \"edit\" : \"Upraviť\",\n \"doneEditing\" : \"Hotovo\",\n \"editPaymentMethods\" : \"Upraviť spôsoby platby\",\n \"CreditCardDeleteConfirmationMessage\" : \"Chcete odstrániť kartu {{secondaryIdentifier}} končiacu sa na {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Chcete odstrániť {{identifier}}účtu PayPal?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Naozaj chcete odstrániť účet Venmo s menom používateľa {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Ste si istí, že chcete tento spôsob platby odstrániť?\",\n \"deleteCancelButton\" : \"Zrušiť\",\n \"deleteConfirmationButton\" : \"Odstrániť\",\n \"fieldEmptyForCvv\" : \"Vyplňte kód CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Zadajte dátum skončenia platnosti.\",\n \"fieldEmptyForCardholderName\" : \"Zadajte meno majiteľa karty.\",\n \"fieldTooLongForCardholderName\" : \"Meno majiteľa karty musí obsahovať menej ako 256 znakov.\",\n \"fieldEmptyForNumber\" : \"Zadajte číslo.\",\n \"fieldEmptyForPostalCode\" : \"Zadajte PSČ.\",\n \"fieldInvalidForCardholderName\" : \"Toto meno majiteľa karty je neplatné.\",\n \"fieldInvalidForCvv\" : \"Tento bezpečnostný kód je neplatný.\",\n \"fieldInvalidForExpirationDate\" : \"Tento dátum skončenia platnosti je neplatný.\",\n \"fieldInvalidForNumber\" : \"Toto číslo karty je neplatné.\",\n \"fieldInvalidForPostalCode\" : \"Toto PSČ je neplatné.\",\n \"noticeOfCollection\" : \"Zaplatením kartou vyjadrujem súhlas s Vyhlásením spoločnosti PayPal o ochrane osobných údajov.\",\n \"genericError\" : \"Vyskytla sa chyba na našej strane.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Táto kreditná karta už existuje ako uložený spôsob platby.\",\n \"hostedFieldsFailedTokenizationError\" : \"Skontrolujte údaje a skúste to znova.\",\n \"hostedFieldsFieldsInvalidError\" : \"Skontrolujte údaje a skúste to znova.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Chyba v sieti. Skúste to znova.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Overenie kreditnej karty nebolo úspešné. Skontrolujte údaje a skúste to znova.\",\n \"paypalButtonMustBeUsed\" : \"Ak chcete pokračovať v platbe, použite tlačidlo PayPal.\",\n \"venmoButtonMustBeUsed\": \"Ak chcete pokračovať v platbe, použite tlačidlo Venmo.\",\n \"applePayButtonMustBeUsed\": \"Ak chcete pokračovať v platbe, použite tlačidlo Apple Pay.\",\n \"paypalAccountTokenizationFailedError\" : \"Vyskytla sa chyba pri pridávaní účtu PayPal. Skúste to znova.\",\n \"paypalFlowFailedError\" : \"Vyskytla sa chyba pri pripájaní do účtu PayPal. Skúste to znova.\",\n \"paypalTokenizationRequestActiveError\" : \"Autorizácia platby PayPal už prebieha.\",\n \"venmoCanceledError\" : \"Vyskytla sa chyba. Skontrolujte, či máte v zariadení nainštalovanú najnovšiu verziu aplikácie Venmo a či prehliadač podporuje prechod na aplikáciu Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Nebolo možné odstrániť spôsob platby, skúste to znova.\",\n \"venmoAppFailedError\" : \"Aplikáciu Venmo sa vo vašom zariadení nepodarilo nájsť.\",\n \"unsupportedCardTypeError\" : \"Tento typ karty nie je podporovaný. Prosím skúste inú kartu.\",\n \"applePayTokenizationError\" : \"Počas spracúvania platby cez Apple Pay došlo k chybe siete. Skúste to znova.\",\n \"applePayActiveCardError\" : \"Pridajte si podporovanú kartu do peňaženky Apple Pay.\",\n \"cardholderNameLabel\" : \"Meno majiteľa karty\",\n \"cardNumberLabel\" : \"Číslo karty\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 číslice)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 číslice)\",\n \"cardholderNamePlaceholder\" : \"Meno majiteľa karty\",\n \"expirationDateLabel\" : \"Dátum skončenia platnosti\",\n \"expirationDateLabelSubheading\" : \"(MM/RR)\",\n \"expirationDatePlaceholder\" : \"MM/RR\",\n \"postalCodeLabel\" : \"PSČ\",\n \"saveCardLabel\" : \"Uložiť kartu\",\n \"payWithCard\" : \"Zaplatiť kartou\",\n \"endingIn\" : \"Končí {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Karta\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],240:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"Betalar med {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"Välj ett annat sätt att betala\",\n \"chooseAWayToPay\" : \"Välj ett sätt att betala\",\n \"otherWaysToPay\" : \"Andra sätt att betala\",\n \"edit\" : \"Ändra\",\n \"doneEditing\" : \"Klart\",\n \"editPaymentMethods\" : \"Ändra betalningsmetoder\",\n \"CreditCardDeleteConfirmationMessage\" : \"Ta bort {{secondaryIdentifier}}-kortet som slutar på {{identifier}}?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"Ta bort PayPal-konto {{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"Är du säker på att du vill ta bort Venmo-kontot med användarnamnet {{identifier}}?\",\n \"genericDeleteConfirmationMessage\" : \"Är du säker på att du vill ta bort den här betalningsmetoden?\",\n \"deleteCancelButton\" : \"Avbryt\",\n \"deleteConfirmationButton\" : \"Ta bort\",\n \"fieldEmptyForCvv\" : \"Fyll i ett CVV.\",\n \"fieldEmptyForExpirationDate\" : \"Fyll i ett utgångsdatum.\",\n \"fieldEmptyForCardholderName\" : \"Fyll i kortinnehavarens namn.\",\n \"fieldTooLongForCardholderName\" : \"Namnet på kortinnehavaren måste vara kortare än 256 tecken.\",\n \"fieldEmptyForNumber\" : \"Fyll i ett nummer.\",\n \"fieldEmptyForPostalCode\" : \"Fyll i ett postnummer.\",\n \"fieldInvalidForCardholderName\" : \"Namnet på kortinnehavaren är ogiltigt.\",\n \"fieldInvalidForCvv\" : \"Den här säkerhetskoden är inte giltig.\",\n \"fieldInvalidForExpirationDate\" : \"Utgångsdatumet är ogiltigt.\",\n \"fieldInvalidForNumber\" : \"Det här kortnumret är ogiltigt.\",\n \"fieldInvalidForPostalCode\" : \"Postnumret är ogiltigt.\",\n \"noticeOfCollection\" : \"Genom att betala med mitt kort godkänner jag PayPals sekretessmeddelande.\",\n \"genericError\" : \"Ett fel uppstod.\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"Det här kreditkortet finns redan som en sparad betalningsmetod.\",\n \"hostedFieldsFailedTokenizationError\" : \"Kontrollera uppgifterna och försök igen.\",\n \"hostedFieldsFieldsInvalidError\" : \"Kontrollera uppgifterna och försök igen.\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"Nätverksfel. Försök igen.\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"Verifiering av kreditkortet misslyckades. Kontrollera uppgifterna och försök igen.\",\n \"paypalButtonMustBeUsed\" : \"Använd PayPal-knappen för att fortsätta med din betalning.\",\n \"venmoButtonMustBeUsed\": \"Använd Venmo-knappen för att fortsätta med din betalning.\",\n \"applePayButtonMustBeUsed\": \"Använd PayPal-knappen för att fortsätta med din betalning.\",\n \"paypalAccountTokenizationFailedError\" : \"Något gick fel när du lade till PayPal-kontot. Försök igen.\",\n \"paypalFlowFailedError\" : \"Något gick fel med att ansluta till PayPal. Försök igen.\",\n \"paypalTokenizationRequestActiveError\" : \"Godkännande av PayPal-betalning pågår redan.\",\n \"venmoCanceledError\" : \"Något gick fel. Se till att du har den senaste versionen av Venmo-appen installerad på din enhet och att din webbläsare stöder byte till Venmo.\",\n \"vaultManagerPaymentMethodDeletionError\" : \"Kan inte ta bort betalningsmetoden, försök igen.\",\n \"venmoAppFailedError\" : \"Det gick inte att hitta Venmo-appen på din enhet.\",\n \"unsupportedCardTypeError\" : \"Den här korttypen stöds inte. Prova med ett annat kort.\",\n \"applePayTokenizationError\" : \"Ett nätverksfel uppstod när Apple Pay-betalningen behandlades. Försök igen.\",\n \"applePayActiveCardError\" : \"Lägg till ett kort som stöds i din Apple Pay e-plånbok.\",\n \"cardholderNameLabel\" : \"Kortinnehavarens namn\",\n \"cardNumberLabel\" : \"Kortnummer\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 siffror)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 siffror)\",\n \"cardholderNamePlaceholder\" : \"Kortinnehavarens namn\",\n \"expirationDateLabel\" : \"Utgångsdatum\",\n \"expirationDateLabelSubheading\" : \"(MM/ÅÅ)\",\n \"expirationDatePlaceholder\" : \"MM/ÅÅ\",\n \"postalCodeLabel\" : \"Postnummer\",\n \"saveCardLabel\" : \"Spara kort\",\n \"payWithCard\" : \"Betala med kort\",\n \"endingIn\" : \"Slutar på {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"Kort\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],241:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"ชำระเงินด้วย {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"เลือกวิธีการชำระเงินอื่น\",\n \"chooseAWayToPay\" : \"โปรดเลือกวิธีชำระเงิน\",\n \"otherWaysToPay\" : \"วิธีอื่นในการชำระเงิน\",\n \"edit\" : \"แก้ไข\",\n \"doneEditing\" : \"เสร็จแล้ว\",\n \"editPaymentMethods\" : \"แก้ไขวิธีการชำระเงิน\",\n \"CreditCardDeleteConfirmationMessage\" : \"ลบบัตร {{secondaryIdentifier}} ที่ลงท้ายด้วย {{identifier}} หรือไม่\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"คุณต้องการลบบัญชี PayPal {{identifier}} หรือไม่\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"คุณแน่ใจหรือไม่ว่าต้องการลบบัญชี Venmo ที่มีชื่อผู้ใช้ {{identifier}}\",\n \"genericDeleteConfirmationMessage\" : \"คุณแน่ใจหรือไม่ว่าต้องการลบการชำระเงินรายการนี้ออก\",\n \"deleteCancelButton\" : \"ยกเลิก\",\n \"deleteConfirmationButton\" : \"ลบ\",\n \"fieldEmptyForCvv\" : \"โปรดกรอกข้อมูลในบัตร CVV\",\n \"fieldEmptyForExpirationDate\" : \"โปรดกรอกข้อมูลวันที่หมดอายุ\",\n \"fieldEmptyForCardholderName\" : \"โปรดกรอกชื่อผู้ถือบัตร\",\n \"fieldTooLongForCardholderName\" : \"ชื่อผู้ถือบัตรต้องไม่เกิน 256 อักขระ\",\n \"fieldEmptyForNumber\" : \"โปรดกรอกหมายเลข\",\n \"fieldEmptyForPostalCode\" : \"โปรดกรอกข้อมูลในรหัสไปรษณีย์\",\n \"fieldInvalidForCardholderName\" : \"ชื่อผู้ถือบัตรนี้ไม่ถูกต้อง\",\n \"fieldInvalidForCvv\" : \"รหัสความปลอดภัยนี้ไม่ถูกต้อง\",\n \"fieldInvalidForExpirationDate\" : \"วันที่หมดอายุนี้ไม่ถูกต้อง\",\n \"fieldInvalidForNumber\" : \"หมายเลขบัตรนี้ไม่ถูกต้อง\",\n \"fieldInvalidForPostalCode\" : \"รหัสไปรษณีย์นี้ไม่ถูกต้อง\",\n \"noticeOfCollection\" : \"การชําระเงินด้วยบัตรนี้ถือว่าข้าพเจ้ายอมรับนโยบายความเป็นส่วนตัวของ PayPal\",\n \"genericError\" : \"เกิดข้อผิดพลาดขึ้นในระบบของเรา\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"บัตรเครดิตนี้เป็นวิธีการชำระเงินที่บันทึกไว้แล้ว\",\n \"hostedFieldsFailedTokenizationError\" : \"โปรดตรวจสอบข้อมูลของคุณ แล้วลองใหม่อีกครั้ง\",\n \"hostedFieldsFieldsInvalidError\" : \"โปรดตรวจสอบข้อมูลของคุณ แล้วลองใหม่อีกครั้ง\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"ข้อผิดพลาดของเครือข่าย โปรดลองอีกครั้ง\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"การตรวจสอบยืนยันบัตรเครดิตไม่สำเร็จ โปรดตรวจสอบข้อมูลของคุณ แล้วลองใหม่อีกครั้ง\",\n \"paypalButtonMustBeUsed\" : \"ใช้ปุ่ม PayPal เพื่อดำเนินการชำระเงินต่อไป\",\n \"venmoButtonMustBeUsed\": \"ใช้ปุ่ม Venmo เพื่อดําเนินการชําระเงินต่อไป\",\n \"applePayButtonMustBeUsed\": \"ใช้ปุ่ม Apple Pay เพื่อดำเนินการชำระเงินต่อไป.\",\n \"paypalAccountTokenizationFailedError\" : \"เกิดข้อผิดพลาดบางอย่างในการเพิ่มบัญชี PayPal โปรดลองอีกครั้ง\",\n \"paypalFlowFailedError\" : \"เกิดข้อผิดพลาดในการเชื่อมต่อกับ PayPal โปรดลองอีกครั้ง\",\n \"paypalTokenizationRequestActiveError\" : \"การอนุมัติการชำระเงิน PayPal อยู่ในระหว่างดำเนินการแล้ว\",\n \"venmoCanceledError\" : \"เกิดข้อผิดพลาดบางประการ ตรวจสอบให้แน่ใจว่าคุณมีแอปพลิเคชัน Venmo เวอร์ชันล่าสุดที่ติดตั้งไว้ในอุปกรณ์ของคุณและเบราว์เซอร์ของคุณรองรับการเปลี่ยนเป็น Venmo\",\n \"vaultManagerPaymentMethodDeletionError\" : \"ไม่สามารถลบวิธีการชำระเงินได้โปรดลองอีกครั้ง\",\n \"venmoAppFailedError\" : \"ไม่พบแอป Venmo ในอุปกรณ์ของคุณ\",\n \"unsupportedCardTypeError\" : \"ไม่รองรับบัตรประเภทนี้ โปรดลองใช้บัตรใบอื่น\",\n \"applePayTokenizationError\" : \"เกิดข้อผิดพลาดในเครือข่ายขณะประมวลผลการชำระเงินของ Apple Pay โปรดลองอีกครั้ง\",\n \"applePayActiveCardError\" : \"เพิ่มบัตรที่รองรับไปยังกระเป๋าสตางค์ Apple Pay ของคุณ\",\n \"cardholderNameLabel\" : \"ชื่อของผู้ถือบัตร\",\n \"cardNumberLabel\" : \"หมายเลขบัตร\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 หลัก)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 หลัก)\",\n \"cardholderNamePlaceholder\" : \"ชื่อของผู้ถือบัตร\",\n \"expirationDateLabel\" : \"วันหมดอายุ\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"MM/YY\",\n \"postalCodeLabel\" : \"รหัสไปรษณีย์\",\n \"saveCardLabel\" : \"บันทึกบัตร\",\n \"payWithCard\" : \"ชำระด้วยบัตรเดบิตหรือบัตรเครดิต\",\n \"endingIn\" : \"ลงท้ายด้วย {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"บัตร\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],242:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"使用{{paymentSource}}付款\",\n \"chooseAnotherWayToPay\" : \"请选择其它付款方式。\",\n \"chooseAWayToPay\" : \"选择付款方式\",\n \"otherWaysToPay\" : \"其他付款方式\",\n \"edit\" : \"编辑\",\n \"doneEditing\" : \"完成\",\n \"editPaymentMethods\" : \"编辑付款方式\",\n \"CreditCardDeleteConfirmationMessage\" : \"删除尾号为{{identifier}}的{{secondaryIdentifier}}卡?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"删除PayPal账户{{identifier}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"您确定要删除用户名为{{identifier}}的Venmo账户吗?\",\n \"genericDeleteConfirmationMessage\" : \"确定要删除此付款方式吗?\",\n \"deleteCancelButton\" : \"取消\",\n \"deleteConfirmationButton\" : \"删除\",\n \"fieldEmptyForCvv\" : \"请填写CVV。\",\n \"fieldEmptyForExpirationDate\" : \"请填写有效期限。\",\n \"fieldEmptyForCardholderName\" : \"请填写持卡人姓名。\",\n \"fieldTooLongForCardholderName\" : \"持卡人姓名必须少于256个字符。\",\n \"fieldEmptyForNumber\" : \"请填写一个号码。\",\n \"fieldEmptyForPostalCode\" : \"请填写邮政编码。\",\n \"fieldInvalidForCardholderName\" : \"此持卡人姓名无效。\",\n \"fieldInvalidForCvv\" : \"此安全码无效。\",\n \"fieldInvalidForExpirationDate\" : \"此有效期限无效。\",\n \"fieldInvalidForNumber\" : \"此卡号无效。\",\n \"fieldInvalidForPostalCode\" : \"此邮政编码无效。\",\n \"noticeOfCollection\" : \"使用我的卡付款即表示我同意PayPal隐私声明。\",\n \"genericError\" : \"我们遇到了一些问题。\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"此信用卡已存在于已保存的付款方式。\",\n \"hostedFieldsFailedTokenizationError\" : \"请检查您的信息,然后重试。\",\n \"hostedFieldsFieldsInvalidError\" : \"请检查您的信息,然后重试。\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"网络错误。请重试。\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"信用卡验证失败。请检查您的信息,然后重试。\",\n \"paypalButtonMustBeUsed\" : \"使用PayPal按钮继续付款。\",\n \"venmoButtonMustBeUsed\": \"使用Venmo按钮继续付款。\",\n \"applePayButtonMustBeUsed\": \"使用Apple Pay按钮以便继续进行您的付款。\",\n \"paypalAccountTokenizationFailedError\" : \"添加PayPal账户时遇到了一些问题。请重试。\",\n \"paypalFlowFailedError\" : \"连接到PayPal遇到了一些问题。请重试。\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal付款授权已在处理中。\",\n \"venmoCanceledError\" : \"遇到了一些问题。请确保您的设备上安装了最新版本的Venmo应用,并且您的浏览器支持切换到Venmo。\",\n \"vaultManagerPaymentMethodDeletionError\" : \"无法删除付款方式,请重试。\",\n \"venmoAppFailedError\" : \"在您的设备上找不到Venmo应用程序。\",\n \"unsupportedCardTypeError\" : \"不支持该卡类型。请尝试其他卡。\",\n \"applePayTokenizationError\" : \"处理Apple Pay付款时发生了网络错误。请重试。\",\n \"applePayActiveCardError\" : \"在您的Apple Pay钱包中添加一张受支持的卡。\",\n \"cardholderNameLabel\" : \"持卡人姓名\",\n \"cardNumberLabel\" : \"卡号\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3位数)\",\n \"cvvFourDigitLabelSubheading\" : \"(4位数)\",\n \"cardholderNamePlaceholder\" : \"持卡人姓名\",\n \"expirationDateLabel\" : \"有效期限\",\n \"expirationDateLabelSubheading\" : \"(月/年)\",\n \"expirationDatePlaceholder\" : \"月/年\",\n \"postalCodeLabel\" : \"邮政编码\",\n \"saveCardLabel\" : \"保存此卡\",\n \"payWithCard\" : \"使用卡支付\",\n \"endingIn\" : \"尾号为{{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"卡\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"发现\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"银联\"\n}\n;\n\n},{}],243:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"付款方式為 {{paymentSource}}\",\n \"chooseAnotherWayToPay\" : \"請選擇其他付款方式\",\n \"chooseAWayToPay\" : \"選擇付款方式\",\n \"otherWaysToPay\" : \"其他付款方式\",\n \"edit\" : \"編輯\",\n \"doneEditing\" : \"完成\",\n \"editPaymentMethods\" : \"編輯付款方式\",\n \"CreditCardDeleteConfirmationMessage\" : \"刪除最後數字為 {{identifier}} 的 {{secondaryIdentifier}} 卡嗎?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"刪除 {{identifier}} PayPal 帳戶嗎?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"確定要刪除用戶名稱為 {{identifier}} 的 Venmo 帳戶嗎?\",\n \"genericDeleteConfirmationMessage\" : \"確定要刪除此付款方式嗎?\",\n \"deleteCancelButton\" : \"取消\",\n \"deleteConfirmationButton\" : \"刪除\",\n \"fieldEmptyForCvv\" : \"請填寫信用卡認證碼(CVV)。\",\n \"fieldEmptyForExpirationDate\" : \"請填寫到期日。\",\n \"fieldEmptyForCardholderName\" : \"請填寫持卡人姓名。\",\n \"fieldTooLongForCardholderName\" : \"持卡人姓名必須少於 256 個字元。\",\n \"fieldEmptyForNumber\" : \"請填寫數字。\",\n \"fieldEmptyForPostalCode\" : \"請填寫郵遞區號。\",\n \"fieldInvalidForCardholderName\" : \"持卡人姓名無效。\",\n \"fieldInvalidForCvv\" : \"此安全代碼無效。\",\n \"fieldInvalidForExpirationDate\" : \"此到期日無效。\",\n \"fieldInvalidForNumber\" : \"此卡號無效。\",\n \"fieldInvalidForPostalCode\" : \"郵遞區號無效。\",\n \"noticeOfCollection\" : \"一經使用信用卡付款,即表示我同意 PayPal 的《私隱權聲明》。\",\n \"genericError\" : \"系統發生錯誤。\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"此信用卡為已儲存的付款方式。\",\n \"hostedFieldsFailedTokenizationError\" : \"請檢查你的資料,然後重試。\",\n \"hostedFieldsFieldsInvalidError\" : \"請檢查你的資料,然後重試。\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"網絡錯誤。請再試一次。\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"信用卡認證失敗。請檢查你的資料,然後重試。\",\n \"paypalButtonMustBeUsed\" : \"使用「PayPal 按鈕」繼續付款。\",\n \"venmoButtonMustBeUsed\": \"使用 Venmo 按鈕以繼續付款。\",\n \"applePayButtonMustBeUsed\": \"使用 Apple Pay 按鈕繼續付款。\",\n \"paypalAccountTokenizationFailedError\" : \"新增 PayPal 帳戶出現問題,請再試一次。\",\n \"paypalFlowFailedError\" : \"連接至 PayPal 出現問題,請再試一次。\",\n \"paypalTokenizationRequestActiveError\" : \"正在處理 PayPal 授權付款。\",\n \"venmoCanceledError\" : \"系統出現錯誤,請確保裝置已安裝最新版本的 Venmo 應用程式,及瀏覽器支援切換至 Venmo。\",\n \"vaultManagerPaymentMethodDeletionError\" : \"無法刪除付款方式,請再試一次。\",\n \"venmoAppFailedError\" : \"無法在裝置上找到 Venmo 應用程式。\",\n \"unsupportedCardTypeError\" : \"不支援此卡類型。請改用其他信用卡。\",\n \"applePayTokenizationError\" : \"處理 Apple Pay 付款時網路發生錯誤。請再試一次。\",\n \"applePayActiveCardError\" : \"新增可用的信用卡到 Apple Pay 錢包。\",\n \"cardholderNameLabel\" : \"持卡人姓名\",\n \"cardNumberLabel\" : \"卡號\",\n \"cvvLabel\" : \"CVV\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 位數)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 位數)\",\n \"cardholderNamePlaceholder\" : \"持卡人姓名\",\n \"expirationDateLabel\" : \"到期日\",\n \"expirationDateLabelSubheading\" : \"(MM/YY)\",\n \"expirationDatePlaceholder\" : \"MM/YY\",\n \"postalCodeLabel\" : \"郵遞區號\",\n \"saveCardLabel\" : \"儲存卡\",\n \"payWithCard\" : \"使用扣帳卡或信用卡付款\",\n \"endingIn\" : \"最後數字為 {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"信用卡\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"Discover\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"UnionPay\"\n}\n;\n\n},{}],244:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"使用 {{paymentSource}} 付款\",\n \"chooseAnotherWayToPay\" : \"選擇其他付款方式\",\n \"chooseAWayToPay\" : \"選擇付款方式\",\n \"otherWaysToPay\" : \"其他付款方式\",\n \"edit\" : \"編輯\",\n \"doneEditing\" : \"完成\",\n \"editPaymentMethods\" : \"編輯付款方式\",\n \"CreditCardDeleteConfirmationMessage\" : \"刪除末碼為 {{identifier}} 的 {{secondaryIdentifier}} 卡片?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"刪除 {{identifier}} 的 PayPal 帳戶?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"確定要刪除用戶名稱為 {{identifier}} 的 Venmo 帳戶?\",\n \"genericDeleteConfirmationMessage\" : \"確定要刪除此付款方式?\",\n \"deleteCancelButton\" : \"取消\",\n \"deleteConfirmationButton\" : \"刪除\",\n \"fieldEmptyForCvv\" : \"填寫信用卡驗證碼。\",\n \"fieldEmptyForExpirationDate\" : \"填寫到期日。\",\n \"fieldEmptyForCardholderName\" : \"填寫持卡人姓名。\",\n \"fieldTooLongForCardholderName\" : \"持卡人姓名必須少於 256 個字元。\",\n \"fieldEmptyForNumber\" : \"填寫數字。\",\n \"fieldEmptyForPostalCode\" : \"填寫郵遞區號。\",\n \"fieldInvalidForCardholderName\" : \"此持卡人姓名無效。\",\n \"fieldInvalidForCvv\" : \"此安全代碼無效。\",\n \"fieldInvalidForExpirationDate\" : \"此到期日無效。\",\n \"fieldInvalidForNumber\" : \"此卡號無效。\",\n \"fieldInvalidForPostalCode\" : \"此郵遞區號無效。\",\n \"noticeOfCollection\" : \"使用我的卡片付款,即表示我同意「PayPal 隱私權聲明」。\",\n \"genericError\" : \"我們的系統發生問題。\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"此信用卡已經是儲存的付款方式。\",\n \"hostedFieldsFailedTokenizationError\" : \"請檢查你的資料並重試。\",\n \"hostedFieldsFieldsInvalidError\" : \"請檢查你的資料並重試。\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"網路錯誤。請重試。\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"信用卡認證失敗。請檢查你的資料並重試。\",\n \"paypalButtonMustBeUsed\" : \"使用 PayPal 按鈕繼續付款。\",\n \"venmoButtonMustBeUsed\": \"使用 Venmo 按鈕繼續付款。\",\n \"applePayButtonMustBeUsed\": \"使用 PayPal 按鈕繼續付款。\",\n \"paypalAccountTokenizationFailedError\" : \"新增 PayPal 帳戶時發生錯誤。請重試。\",\n \"paypalFlowFailedError\" : \"連結至 PayPal 時發生錯誤。請重試。\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal 付款授權已在進行中。\",\n \"venmoCanceledError\" : \"系統發生錯誤。確保你在裝置上安裝了最新版本的 Venmo 應用程式,且瀏覽器支援轉換至 Venmo。\",\n \"vaultManagerPaymentMethodDeletionError\" : \"無法刪除付款方式,請重試。\",\n \"venmoAppFailedError\" : \"你的裝置上找不到 Venmo 應用程式。\",\n \"unsupportedCardTypeError\" : \"不支援此卡片類型,請改用其他卡片。\",\n \"applePayTokenizationError\" : \"處理 Apple Pay 付款時發生網路連線錯誤。請重試。\",\n \"applePayActiveCardError\" : \"將支援卡片新增至你的 Apple Pay 錢包。\",\n \"cardholderNameLabel\" : \"持卡人姓名\",\n \"cardNumberLabel\" : \"卡號\",\n \"cvvLabel\" : \"信用卡驗證碼\",\n \"cvvThreeDigitLabelSubheading\" : \"(3 位數)\",\n \"cvvFourDigitLabelSubheading\" : \"(4 位數)\",\n \"cardholderNamePlaceholder\" : \"持卡人姓名\",\n \"expirationDateLabel\" : \"到期日\",\n \"expirationDateLabelSubheading\" : \"(月 / 年)\",\n \"expirationDatePlaceholder\" : \"月 / 年\",\n \"postalCodeLabel\" : \"郵遞區號\",\n \"saveCardLabel\" : \"儲存卡片\",\n \"payWithCard\" : \"使用卡片付款\",\n \"endingIn\" : \"末碼為 {{lastFourCardDigits}}\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"卡片\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"美國運通\",\n \"Discover\" : \"發現卡\",\n \"Diners Club\" : \"大來卡\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"銀聯\"\n}\n;\n\n},{}],245:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n \"payingWith\" : \"使用{{paymentSource}}付款\",\n \"chooseAnotherWayToPay\" : \"选择其他付款方式\",\n \"chooseAWayToPay\" : \"选择付款方式\",\n \"otherWaysToPay\" : \"其他付款方式\",\n \"edit\" : \"编辑\",\n \"doneEditing\" : \"完成\",\n \"editPaymentMethods\" : \"编辑付款方式\",\n \"CreditCardDeleteConfirmationMessage\" : \"删除以{{identifier}}}结尾的{{secondaryIdentifier}}}卡?\",\n \"PayPalAccountDeleteConfirmationMessage\" : \"删除PayPal账户{{identifier}}}?\",\n \"VenmoAccountDeleteConfirmationMessage\" : \"确定要删除用户名为{{identifier}}}的Venmo账户吗?\",\n \"genericDeleteConfirmationMessage\" : \"确定要删除此付款方式吗?\",\n \"deleteCancelButton\" : \"取消\",\n \"deleteConfirmationButton\" : \"删除\",\n \"fieldEmptyForCvv\" : \"请填写卡校验值。\",\n \"fieldEmptyForExpirationDate\" : \"请填写有效期限。\",\n \"fieldEmptyForCardholderName\" : \"请填写持卡人姓名。\",\n \"fieldTooLongForCardholderName\" : \"持卡人姓名必须少于256个字符。\",\n \"fieldEmptyForNumber\" : \"请填写号码。\",\n \"fieldEmptyForPostalCode\" : \"请填写邮政编码。\",\n \"fieldInvalidForCardholderName\" : \"此持卡人姓名无效。\",\n \"fieldInvalidForCvv\" : \"此验证码无效。\",\n \"fieldInvalidForExpirationDate\" : \"此有效期限无效。\",\n \"fieldInvalidForNumber\" : \"此卡号无效。\",\n \"fieldInvalidForPostalCode\" : \"此邮政编码无效。\",\n \"noticeOfCollection\" : \"使用我的卡付款即表示我同意PayPal隐私声明。\",\n \"genericError\" : \"我们遇到了一些问题。\",\n \"hostedFieldsTokenizationFailOnDuplicateError\" : \"此信用卡已存在于已保存的付款方式中。\",\n \"hostedFieldsFailedTokenizationError\" : \"请检查您的信息,然后重试。\",\n \"hostedFieldsFieldsInvalidError\" : \"请检查您的信息,然后重试。\",\n \"hostedFieldsTokenizationNetworkErrorError\" : \"网络错误。请重试。\",\n \"hostedFieldsTokenizationCvvVerificationFailedError\" : \"信用卡认证失败。请检查您的信息,然后重试。\",\n \"paypalButtonMustBeUsed\" : \"使用PayPal按钮以便继续进行您的付款。\",\n \"venmoButtonMustBeUsed\": \"使用Venmo按钮继续付款。\",\n \"applePayButtonMustBeUsed\": \"使用Apple Pay按钮以便继续进行您的付款。\",\n \"paypalAccountTokenizationFailedError\" : \"添加PayPal账户时遇到了问题。请重试。\",\n \"paypalFlowFailedError\" : \"连接到PayPal时遇到了问题。请重试。\",\n \"paypalTokenizationRequestActiveError\" : \"PayPal付款授权正在处理中。\",\n \"venmoCanceledError\" : \"遇到了一些问题。请确保您的设备上安装了最新版本的Venmo应用,并且您的浏览器支持切换到Venmo。\",\n \"vaultManagerPaymentMethodDeletionError\" : \"无法删除付款方式,请重试。\",\n \"venmoAppFailedError\" : \"未能在您的设备上找到Venmo应用。\",\n \"unsupportedCardTypeError\" : \"不支持该卡类型。请尝试其它卡。\",\n \"applePayTokenizationError\" : \"处理Apple Pay付款时出现了网络错误。请重试。\",\n \"applePayActiveCardError\" : \"在您的Apple Pay钱包中添加一张受支持的卡。\",\n \"cardholderNameLabel\" : \"持卡人姓名\",\n \"cardNumberLabel\" : \"卡号\",\n \"cvvLabel\" : \"卡校验值\",\n \"cvvThreeDigitLabelSubheading\" : \"(3位数)\",\n \"cvvFourDigitLabelSubheading\" : \"(4位数)\",\n \"cardholderNamePlaceholder\" : \"持卡人姓名\",\n \"expirationDateLabel\" : \"有效期限\",\n \"expirationDateLabelSubheading\" : \"(月/年)\",\n \"expirationDatePlaceholder\" : \"月/年\",\n \"postalCodeLabel\" : \"邮政编码\",\n \"saveCardLabel\" : \"保存卡\",\n \"payWithCard\" : \"使用卡支付\",\n \"endingIn\" : \"以{{lastFourCardDigits}}}结尾\",\n \"Apple Pay\" : \"Apple Pay\",\n \"Venmo\" : \"Venmo\",\n \"Card\" : \"卡\",\n \"PayPal\" : \"PayPal\",\n \"PayPal Credit\" : \"PayPal Credit\",\n \"Google Pay\" : \"Google Pay\",\n \"American Express\" : \"American Express\",\n \"Discover\" : \"发现\",\n \"Diners Club\" : \"Diners Club\",\n \"Elo\" : \"Elo\",\n \"Hiper\" : \"Hiper\",\n \"Hipercard\" : \"Hipercard\",\n \"MasterCard\" : \"Mastercard\",\n \"Visa\" : \"Visa\",\n \"JCB\" : \"JCB\",\n \"Maestro\" : \"Maestro\",\n \"UnionPay\" : \"银联\"\n}\n;\n\n},{}],246:[function(require,module,exports){\n'use strict';\n\nvar assign = require('../lib/assign').assign;\nvar DropinError = require('../lib/dropin-error');\nvar errors = require('../constants').errors;\n\nfunction BaseView(options) {\n options = options || {};\n\n assign(this, options);\n}\n\nBaseView.prototype.getElementById = function (id) {\n if (!this.element) { return null; }\n\n return this.element.querySelector('[data-braintree-id=\"' + id + '\"]');\n};\n\nBaseView.prototype.requestPaymentMethod = function () {\n return Promise.reject(new DropinError(errors.NO_PAYMENT_METHOD_ERROR));\n};\n\nBaseView.prototype.getPaymentMethod = function () {\n return this.activeMethodView && this.activeMethodView.paymentMethod;\n};\n\nBaseView.prototype.onSelection = function () {};\n\nBaseView.prototype.teardown = function () {\n return Promise.resolve();\n};\n\nBaseView.prototype.preventUserAction = function () {\n if (this.element) {\n this.element.classList.add('braintree-sheet--loading');\n }\n\n this.model.preventUserAction();\n};\n\nBaseView.prototype.allowUserAction = function () {\n if (this.element) {\n this.element.classList.remove('braintree-sheet--loading');\n }\n\n this.model.allowUserAction();\n};\n\nmodule.exports = BaseView;\n\n},{\"../constants\":189,\"../lib/assign\":195,\"../lib/dropin-error\":199}],247:[function(require,module,exports){\n'use strict';\n\nvar BaseView = require('./base-view');\nvar addSelectionEventHandler = require('../lib/add-selection-event-handler');\nvar paymentMethodTypes = require('../constants').paymentMethodTypes;\n\nfunction DeleteConfirmationView() {\n BaseView.apply(this, arguments);\n\n this._initialize();\n}\n\nDeleteConfirmationView.prototype = Object.create(BaseView.prototype);\nDeleteConfirmationView.prototype.constructor = DeleteConfirmationView;\nDeleteConfirmationView.ID = DeleteConfirmationView.prototype.ID = 'delete-confirmation';\n\nDeleteConfirmationView.prototype._initialize = function () {\n this._yesButton = this.getElementById('delete-confirmation__yes');\n this._noButton = this.getElementById('delete-confirmation__no');\n this._messageBox = this.getElementById('delete-confirmation__message');\n\n addSelectionEventHandler(this._yesButton, function () {\n this.model.deleteVaultedPaymentMethod();\n }.bind(this));\n addSelectionEventHandler(this._noButton, function () {\n this.model.cancelDeleteVaultedPaymentMethod();\n }.bind(this));\n};\n\nDeleteConfirmationView.prototype.applyPaymentMethod = function (paymentMethod) {\n var identifier, secondaryIdentifier;\n var messageText = this.strings[paymentMethod.type + 'DeleteConfirmationMessage'];\n\n if (messageText) {\n switch (paymentMethod.type) {\n case paymentMethodTypes.card:\n identifier = paymentMethod.details.lastFour;\n secondaryIdentifier = paymentMethod.details.cardType;\n secondaryIdentifier = this.strings[secondaryIdentifier] || secondaryIdentifier;\n break;\n case paymentMethodTypes.paypal:\n identifier = paymentMethod.details.email;\n break;\n case paymentMethodTypes.venmo:\n identifier = paymentMethod.details.username;\n break;\n default:\n break;\n }\n\n messageText = messageText.replace('{{identifier}}', identifier);\n if (secondaryIdentifier) {\n messageText = messageText.replace('{{secondaryIdentifier}}', secondaryIdentifier);\n }\n } else {\n messageText = this.strings.genericDeleteConfirmationMessage;\n }\n this._messageBox.innerText = messageText;\n};\n\nDeleteConfirmationView.prototype.onSelection = function () {\n window.requestAnimationFrame(function () {\n this._yesButton.focus();\n }.bind(this));\n};\n\nmodule.exports = DeleteConfirmationView;\n\n},{\"../constants\":189,\"../lib/add-selection-event-handler\":193,\"./base-view\":246}],248:[function(require,module,exports){\n'use strict';\n\nvar analytics = require('../lib/analytics');\nvar analyticsKinds = require('../constants').analyticsKinds;\nvar BaseView = require('./base-view');\nvar sheetViews = require('./payment-sheet-views');\nvar PaymentMethodsView = require('./payment-methods-view');\nvar PaymentOptionsView = require('./payment-options-view');\nvar DeleteConfirmationView = require('./delete-confirmation-view');\nvar addSelectionEventHandler = require('../lib/add-selection-event-handler');\nvar wait = require('../lib/wait');\nvar supportsFlexbox = require('../lib/supports-flexbox');\n\nvar CHANGE_ACTIVE_PAYMENT_METHOD_TIMEOUT = require('../constants').CHANGE_ACTIVE_PAYMENT_METHOD_TIMEOUT;\nvar DEVELOPER_MISCONFIGURATION_MESSAGE = require('../constants').errors.DEVELOPER_MISCONFIGURATION_MESSAGE;\n\nfunction MainView() {\n BaseView.apply(this, arguments);\n\n this.dependenciesInitializing = 0;\n\n this._initialize();\n}\n\nMainView.prototype = Object.create(BaseView.prototype);\nMainView.prototype.constructor = MainView;\n\nMainView.prototype._initialize = function () {\n var paymentOptionsView;\n\n this._hasMultiplePaymentOptions = this.model.supportedPaymentOptions.length > 1;\n\n this._views = {};\n\n this.sheetContainer = this.getElementById('sheet-container');\n this.sheetErrorText = this.getElementById('sheet-error-text');\n\n this.toggle = this.getElementById('toggle');\n this.disableWrapper = this.getElementById('disable-wrapper');\n this.lowerContainer = this.getElementById('lower-container');\n\n this.loadingContainer = this.getElementById('loading-container');\n this.dropinContainer = this.element.querySelector('.braintree-dropin');\n\n this.supportsFlexbox = supportsFlexbox();\n\n this.model.on('asyncDependenciesReady', this.hideLoadingIndicator.bind(this));\n\n this.model.on('errorOccurred', this.showSheetError.bind(this));\n this.model.on('errorCleared', this.hideSheetError.bind(this));\n this.model.on('preventUserAction', this.preventUserAction.bind(this));\n this.model.on('allowUserAction', this.allowUserAction.bind(this));\n\n this.paymentSheetViewIDs = Object.keys(sheetViews).reduce(function (ids, sheetViewKey) {\n var PaymentSheetView, paymentSheetView;\n\n if (this.model.supportedPaymentOptions.indexOf(sheetViewKey) !== -1) {\n PaymentSheetView = sheetViews[sheetViewKey];\n\n paymentSheetView = new PaymentSheetView({\n element: this.getElementById(PaymentSheetView.ID),\n mainView: this,\n model: this.model,\n client: this.client,\n strings: this.strings\n });\n paymentSheetView.initialize();\n\n this.addView(paymentSheetView);\n ids.push(paymentSheetView.ID);\n }\n\n return ids;\n }.bind(this), []);\n\n this.paymentMethodsViews = new PaymentMethodsView({\n element: this.element,\n model: this.model,\n client: this.client,\n strings: this.strings\n });\n this.addView(this.paymentMethodsViews);\n\n this.deleteConfirmationView = new DeleteConfirmationView({\n element: this.getElementById('delete-confirmation'),\n model: this.model,\n strings: this.strings\n });\n this.addView(this.deleteConfirmationView);\n\n addSelectionEventHandler(this.toggle, this.toggleAdditionalOptions.bind(this));\n\n this.model.on('changeActivePaymentMethod', function () {\n wait.delay(CHANGE_ACTIVE_PAYMENT_METHOD_TIMEOUT).then(function () {\n var id = PaymentMethodsView.ID;\n\n // if Drop-in gets into the state where it's told to go to the methods\n // view, but there are no saved payment methods, it should instead\n // redirect to the view it started on\n if (!this.model.hasPaymentMethods()) {\n id = this.model.getInitialViewId();\n }\n\n this.setPrimaryView(id);\n }.bind(this));\n }.bind(this));\n\n this.model.on('changeActiveView', this._onChangeActiveView.bind(this));\n\n this.model.on('removeActivePaymentMethod', function () {\n var activePaymentView = this.getView(this.model.getActivePaymentViewId());\n\n if (activePaymentView && typeof activePaymentView.removeActivePaymentMethod === 'function') {\n activePaymentView.removeActivePaymentMethod();\n }\n }.bind(this));\n\n this.model.on('enableEditMode', this.enableEditMode.bind(this));\n\n this.model.on('disableEditMode', this.disableEditMode.bind(this));\n\n this.model.on('confirmPaymentMethodDeletion', this.openConfirmPaymentMethodDeletionDialog.bind(this));\n this.model.on('cancelVaultedPaymentMethodDeletion', this.cancelVaultedPaymentMethodDeletion.bind(this));\n this.model.on('startVaultedPaymentMethodDeletion', this.startVaultedPaymentMethodDeletion.bind(this));\n this.model.on('finishVaultedPaymentMethodDeletion', this.finishVaultedPaymentMethodDeletion.bind(this));\n\n if (this._hasMultiplePaymentOptions) {\n paymentOptionsView = new PaymentOptionsView({\n client: this.client,\n element: this.getElementById(PaymentOptionsView.ID),\n mainView: this,\n model: this.model,\n strings: this.strings\n });\n\n this.addView(paymentOptionsView);\n }\n\n this._sendToDefaultView();\n};\n\nMainView.prototype._onChangeActiveView = function (data) {\n var id = data.newViewId;\n var activePaymentView = this.getView(id);\n\n if (id === PaymentMethodsView.ID) {\n this.paymentMethodsViews.container.classList.add('braintree-methods--active');\n this.sheetContainer.classList.remove('braintree-sheet--active');\n } else {\n wait.delay(0).then(function () {\n this.sheetContainer.classList.add('braintree-sheet--active');\n }.bind(this));\n this.paymentMethodsViews.container.classList.remove('braintree-methods--active');\n if (!this.getView(id).getPaymentMethod()) {\n this.model.setPaymentMethodRequestable({\n isRequestable: false\n });\n }\n }\n\n activePaymentView.onSelection();\n};\n\nMainView.prototype.addView = function (view) {\n this._views[view.ID] = view;\n};\n\nMainView.prototype.getView = function (id) {\n return this._views[id];\n};\n\nMainView.prototype.setPrimaryView = function (id, secondaryViewId) {\n var paymentMethod;\n\n wait.delay(0).then(function () {\n this.element.className = prefixShowClass(id);\n if (secondaryViewId) {\n this.element.classList.add(prefixShowClass(secondaryViewId));\n }\n }.bind(this));\n\n this.primaryView = this.getView(id);\n this.model.changeActiveView(id);\n\n if (this.paymentSheetViewIDs.indexOf(id) !== -1) {\n if (this.model.getPaymentMethods().length > 0 || this.getView(PaymentOptionsView.ID)) {\n this.showToggle();\n } else {\n this.hideToggle();\n }\n } else if (id === PaymentMethodsView.ID) {\n this.showToggle();\n // Move options below the upper-container\n this.getElementById('lower-container').appendChild(this.getElementById('options'));\n } else if (id === PaymentOptionsView.ID) {\n this.hideToggle();\n }\n\n if (!this.supportsFlexbox) {\n this.element.setAttribute('data-braintree-no-flexbox', true);\n }\n\n paymentMethod = this.primaryView.getPaymentMethod();\n\n this.model.setPaymentMethodRequestable({\n isRequestable: Boolean(paymentMethod && !this.model.isInEditMode()),\n type: paymentMethod && paymentMethod.type,\n selectedPaymentMethod: paymentMethod\n });\n\n this.model.clearError();\n};\n\nMainView.prototype.requestPaymentMethod = function () {\n var activePaymentView = this.getView(this.model.getActivePaymentViewId());\n\n return activePaymentView.requestPaymentMethod().then(function (payload) {\n analytics.sendEvent(this.client, 'request-payment-method.' + analyticsKinds[payload.type]);\n\n return payload;\n }.bind(this)).catch(function (err) {\n analytics.sendEvent(this.client, 'request-payment-method.error');\n\n return Promise.reject(err);\n }.bind(this));\n};\n\nMainView.prototype.hideLoadingIndicator = function () {\n this.dropinContainer.classList.remove('braintree-loading');\n this.dropinContainer.classList.add('braintree-loaded');\n this.loadingContainer.classList.add('braintree-hidden');\n};\n\nMainView.prototype.showLoadingIndicator = function () {\n this.dropinContainer.classList.add('braintree-loading');\n this.dropinContainer.classList.remove('braintree-loaded');\n this.loadingContainer.classList.remove('braintree-hidden');\n};\n\nMainView.prototype.toggleAdditionalOptions = function () {\n var sheetViewID;\n var isPaymentSheetView = this.paymentSheetViewIDs.indexOf(this.primaryView.ID) !== -1;\n\n this.hideToggle();\n\n if (!this._hasMultiplePaymentOptions) {\n sheetViewID = this.paymentSheetViewIDs[0];\n\n this.element.classList.add(prefixShowClass(sheetViewID));\n this.model.changeActiveView(sheetViewID);\n } else if (isPaymentSheetView) {\n if (this.model.getPaymentMethods().length === 0) {\n this.setPrimaryView(PaymentOptionsView.ID);\n } else {\n this.setPrimaryView(PaymentMethodsView.ID, PaymentOptionsView.ID);\n this.hideToggle();\n }\n } else {\n this.element.classList.add(prefixShowClass(PaymentOptionsView.ID));\n }\n};\n\nMainView.prototype.showToggle = function () {\n if (this.model.isInEditMode()) {\n return;\n }\n this.toggle.classList.remove('braintree-hidden');\n this.lowerContainer.classList.add('braintree-hidden');\n};\n\nMainView.prototype.hideToggle = function () {\n this.toggle.classList.add('braintree-hidden');\n this.lowerContainer.classList.remove('braintree-hidden');\n};\n\nMainView.prototype.showSheetError = function (error) {\n var errorMessage;\n var genericErrorMessage = this.strings.genericError;\n\n if (this.strings.hasOwnProperty(error)) {\n errorMessage = this.strings[error];\n } else if (error && typeof error.code === 'string') {\n errorMessage = this.strings[snakeCaseToCamelCase(error.code) + 'Error'] || genericErrorMessage;\n } else if (error === 'developerError') {\n errorMessage = DEVELOPER_MISCONFIGURATION_MESSAGE;\n } else {\n errorMessage = genericErrorMessage;\n }\n\n this.dropinContainer.classList.add('braintree-sheet--has-error');\n this.sheetErrorText.innerHTML = errorMessage;\n};\n\nMainView.prototype.hideSheetError = function () {\n this.dropinContainer.classList.remove('braintree-sheet--has-error');\n};\n\nMainView.prototype.getOptionsElements = function () {\n return this._views.options.elements;\n};\n\nMainView.prototype.preventUserAction = function () {\n this.disableWrapper.classList.remove('braintree-hidden');\n};\n\nMainView.prototype.allowUserAction = function () {\n this.disableWrapper.classList.add('braintree-hidden');\n};\n\nMainView.prototype.teardown = function () {\n var error;\n var viewNames = Object.keys(this._views);\n var teardownPromises = viewNames.map(function (view) {\n return this._views[view].teardown().catch(function (err) {\n error = err;\n });\n }.bind(this));\n\n return Promise.all(teardownPromises).then(function () {\n if (error) {\n return Promise.reject(error);\n }\n\n return Promise.resolve();\n });\n};\n\nMainView.prototype.enableEditMode = function () {\n this.setPrimaryView(this.paymentMethodsViews.ID);\n this.paymentMethodsViews.enableEditMode();\n this.hideToggle();\n\n this.model.setPaymentMethodRequestable({\n isRequestable: false\n });\n};\n\nMainView.prototype.disableEditMode = function () {\n var paymentMethod;\n\n this.hideSheetError();\n this.paymentMethodsViews.disableEditMode();\n this.showToggle();\n\n paymentMethod = this.primaryView.getPaymentMethod();\n\n this.model.setPaymentMethodRequestable({\n isRequestable: Boolean(paymentMethod),\n type: paymentMethod && paymentMethod.type,\n selectedPaymentMethod: paymentMethod\n });\n};\n\nMainView.prototype.openConfirmPaymentMethodDeletionDialog = function (paymentMethod) {\n this.deleteConfirmationView.applyPaymentMethod(paymentMethod);\n this.setPrimaryView(this.deleteConfirmationView.ID);\n};\n\nMainView.prototype.cancelVaultedPaymentMethodDeletion = function () {\n this.setPrimaryView(this.paymentMethodsViews.ID);\n};\n\nMainView.prototype.startVaultedPaymentMethodDeletion = function () {\n this.element.className = '';\n this.showLoadingIndicator();\n};\n\nMainView.prototype.finishVaultedPaymentMethodDeletion = function (error) {\n var self = this;\n\n this.paymentMethodsViews.refreshPaymentMethods();\n\n if (error && this.model.getPaymentMethods().length > 0) {\n this.model.enableEditMode();\n this.showSheetError('vaultManagerPaymentMethodDeletionError');\n } else {\n this._sendToDefaultView();\n }\n\n return new Promise(function (resolve) {\n wait.delay(500).then(function () {\n // allow all the views to reset before hiding the loading indicator\n self.hideLoadingIndicator();\n resolve();\n });\n });\n};\n\nMainView.prototype._sendToDefaultView = function () {\n var paymentMethods = this.model.getPaymentMethods();\n var preselectVaultedPaymentMethod = this.model.merchantConfiguration.preselectVaultedPaymentMethod !== false;\n\n if (paymentMethods.length > 0) {\n if (preselectVaultedPaymentMethod) {\n analytics.sendEvent(this.client, 'vaulted-card.preselect');\n\n this.model.changeActivePaymentMethod(paymentMethods[0]);\n } else {\n this.setPrimaryView(this.paymentMethodsViews.ID);\n }\n } else if (this._hasMultiplePaymentOptions) {\n this.setPrimaryView(PaymentOptionsView.ID);\n } else {\n this.setPrimaryView(this.paymentSheetViewIDs[0]);\n }\n};\nfunction snakeCaseToCamelCase(s) {\n return s.toLowerCase().replace(/(\\_\\w)/g, function (m) {\n return m[1].toUpperCase();\n });\n}\n\nfunction prefixShowClass(classname) {\n return 'braintree-show-' + classname;\n}\n\nmodule.exports = MainView;\n\n},{\"../constants\":189,\"../lib/add-selection-event-handler\":193,\"../lib/analytics\":194,\"../lib/supports-flexbox\":207,\"../lib/wait\":210,\"./base-view\":246,\"./delete-confirmation-view\":247,\"./payment-methods-view\":250,\"./payment-options-view\":251,\"./payment-sheet-views\":256}],249:[function(require,module,exports){\n'use strict';\n\nvar analytics = require('../lib/analytics');\nvar BaseView = require('./base-view');\nvar constants = require('../constants');\n\nvar addSelectionEventHandler = require('../lib/add-selection-event-handler');\n\nvar paymentMethodHTML = \"
    \\n
    \\n \\n \\n \\n
    \\n
    \\n\\n
    \\n \\n \\n \\n
    \\n\\n
    @TITLE
    @SUBTITLE
    \\n\\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n\";\n\nfunction PaymentMethodView() {\n BaseView.apply(this, arguments);\n\n this._initialize();\n}\n\nPaymentMethodView.prototype = Object.create(BaseView.prototype);\nPaymentMethodView.prototype.constructor = PaymentMethodView;\n\nPaymentMethodView.prototype._initialize = function () {\n var endingInText;\n var html = paymentMethodHTML;\n var paymentMethodCardTypes = constants.paymentMethodCardTypes;\n var paymentMethodTypes = constants.paymentMethodTypes;\n\n this.element = document.createElement('div');\n this.element.className = 'braintree-method';\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('role', 'button');\n\n addSelectionEventHandler(this.element, function () {\n if (this.model.isInEditMode()) {\n this._selectDelete();\n } else {\n this._choosePaymentMethod();\n }\n }.bind(this));\n\n switch (this.paymentMethod.type) {\n case paymentMethodTypes.applePay:\n html = html.replace(/@ICON/g, 'logoApplePay')\n .replace(/@CLASSNAME/g, '')\n .replace(/@TITLE/g, this.strings['Apple Pay'])\n .replace(/@SUBTITLE/g, '');\n break;\n case paymentMethodTypes.card:\n endingInText = this.strings.endingIn.replace('{{lastFourCardDigits}}', this.paymentMethod.details.lastFour);\n html = html.replace(/@ICON/g, 'icon-' + paymentMethodCardTypes[this.paymentMethod.details.cardType])\n .replace(/@CLASSNAME/g, ' braintree-icon--bordered')\n .replace(/@TITLE/g, endingInText)\n .replace(/@SUBTITLE/g, this.strings[this.paymentMethod.details.cardType]);\n break;\n case paymentMethodTypes.googlePay:\n html = html.replace(/@ICON/g, 'logoGooglePay')\n .replace(/@CLASSNAME/g, '')\n .replace(/@TITLE/g, this.strings['Google Pay'])\n .replace(/@SUBTITLE/g, '');\n break;\n case paymentMethodTypes.paypal:\n html = html.replace(/@ICON/g, 'logoPayPal')\n .replace(/@CLASSNAME/g, '')\n .replace(/@TITLE/g, this.paymentMethod.details.email)\n .replace(/@SUBTITLE/g, this.strings.PayPal);\n break;\n case paymentMethodTypes.venmo:\n html = html.replace(/@ICON/g, 'logoVenmo')\n .replace(/@CLASSNAME/g, '')\n .replace(/@TITLE/g, this.paymentMethod.details.username)\n .replace(/@SUBTITLE/g, this.strings.Venmo);\n break;\n default:\n break;\n }\n\n this.element.innerHTML = html;\n this.checkMark = this.element.querySelector('.braintree-method__check-container');\n};\n\nPaymentMethodView.prototype.setActive = function (isActive) {\n // setTimeout required to animate addition of new payment methods\n setTimeout(function () {\n this.element.classList.toggle('braintree-method--active', isActive);\n }.bind(this), 0);\n};\n\nPaymentMethodView.prototype.enableEditMode = function () {\n this.checkMark.classList.add('braintree-hidden');\n if (this.paymentMethod.hasSubscription) {\n this.element.classList.add('braintree-method--disabled');\n }\n};\n\nPaymentMethodView.prototype.disableEditMode = function () {\n this.checkMark.classList.remove('braintree-hidden');\n this.element.classList.remove('braintree-method--disabled');\n};\n\nPaymentMethodView.prototype.teardown = function () {\n if (this.element.parentNode) {\n this.element.parentNode.removeChild(this.element);\n }\n};\n\nPaymentMethodView.prototype._choosePaymentMethod = function () {\n if (this.paymentMethod.vaulted) {\n analytics.sendEvent(this.client, 'vaulted-' + constants.analyticsKinds[this.paymentMethod.type] + '.select');\n }\n\n this.model.changeActivePaymentMethod(this.paymentMethod);\n};\n\nPaymentMethodView.prototype._selectDelete = function () {\n this.model.confirmPaymentMethodDeletion(this.paymentMethod);\n};\n\nmodule.exports = PaymentMethodView;\n\n},{\"../constants\":189,\"../lib/add-selection-event-handler\":193,\"../lib/analytics\":194,\"./base-view\":246}],250:[function(require,module,exports){\n'use strict';\n\nvar BaseView = require('./base-view');\nvar PaymentMethodView = require('./payment-method-view');\nvar DropinError = require('../lib/dropin-error');\nvar errors = require('../constants').errors;\nvar addSelectionEventHandler = require('../lib/add-selection-event-handler');\n\nvar PAYMENT_METHOD_TYPE_TO_TRANSLATION_STRING = {\n CreditCard: 'Card',\n PayPalAccount: 'PayPal',\n ApplePayCard: 'Apple Pay',\n AndroidPayCard: 'Google Pay',\n VenmoAccount: 'Venmo'\n};\n\nfunction PaymentMethodsView() {\n BaseView.apply(this, arguments);\n\n this._initialize();\n}\n\nPaymentMethodsView.prototype = Object.create(BaseView.prototype);\nPaymentMethodsView.prototype.constructor = PaymentMethodsView;\nPaymentMethodsView.ID = PaymentMethodsView.prototype.ID = 'methods';\n\nPaymentMethodsView.prototype._initialize = function () {\n this.views = [];\n this.container = this.getElementById('methods-container');\n this._headingLabel = this.getElementById('methods-label');\n this._editButton = this.getElementById('methods-edit');\n\n this.model.on('addPaymentMethod', this._addPaymentMethod.bind(this));\n this.model.on('changeActivePaymentMethod', this._changeActivePaymentMethodView.bind(this));\n this.model.on('refreshPaymentMethods', this.refreshPaymentMethods.bind(this));\n\n this.refreshPaymentMethods();\n\n if (this.model.merchantConfiguration.vaultManager) {\n this.model.on('removePaymentMethod', this._removePaymentMethod.bind(this));\n\n addSelectionEventHandler(this._editButton, function () {\n if (this.model.isInEditMode()) {\n this.model.disableEditMode();\n } else {\n this.model.enableEditMode();\n }\n }.bind(this));\n\n this._editButton.classList.remove('braintree-hidden');\n }\n};\n\nPaymentMethodsView.prototype.removeActivePaymentMethod = function () {\n if (!this.activeMethodView) {\n return;\n }\n this.activeMethodView.setActive(false);\n this.activeMethodView = null;\n this._headingLabel.classList.add('braintree-no-payment-method-selected');\n};\n\nPaymentMethodsView.prototype._getPaymentMethodString = function () {\n var stringKey, paymentMethodTypeString;\n\n if (!this.activeMethodView) {\n return '';\n }\n\n stringKey = PAYMENT_METHOD_TYPE_TO_TRANSLATION_STRING[this.activeMethodView.paymentMethod.type];\n paymentMethodTypeString = this.strings[stringKey];\n\n return this.strings.payingWith.replace('{{paymentSource}}', paymentMethodTypeString);\n};\n\nPaymentMethodsView.prototype.enableEditMode = function () {\n this.container.classList.add('braintree-methods--edit');\n\n this._editButton.innerHTML = this.strings.deleteCancelButton;\n this._headingLabel.innerHTML = this.strings.editPaymentMethods;\n\n this.views.forEach(function (view) {\n view.enableEditMode();\n });\n};\n\nPaymentMethodsView.prototype.disableEditMode = function () {\n this.container.classList.remove('braintree-methods--edit');\n\n this._editButton.innerHTML = this.strings.edit;\n this._headingLabel.innerHTML = this._getPaymentMethodString();\n\n this.views.forEach(function (view) {\n view.disableEditMode();\n });\n};\n\nPaymentMethodsView.prototype._addPaymentMethod = function (paymentMethod) {\n var paymentMethodView = new PaymentMethodView({\n model: this.model,\n paymentMethod: paymentMethod,\n client: this.client,\n strings: this.strings\n });\n\n if (this.model.isGuestCheckout && this.container.firstChild) {\n this.views[0].teardown();\n this.views.pop();\n }\n\n if (this.container.firstChild) {\n this.container.insertBefore(paymentMethodView.element, this.container.firstChild);\n } else {\n this.container.appendChild(paymentMethodView.element);\n }\n\n this.views.push(paymentMethodView);\n};\n\nPaymentMethodsView.prototype._removePaymentMethod = function (paymentMethod) {\n var i;\n\n for (i = 0; i < this.views.length; i++) {\n if (this.views[i].paymentMethod === paymentMethod) {\n this.views[i].teardown();\n this._headingLabel.innerHTML = ' ';\n this.views.splice(i, 1);\n break;\n }\n }\n};\n\nPaymentMethodsView.prototype._changeActivePaymentMethodView = function (paymentMethod) {\n var i;\n var previousActiveMethodView = this.activeMethodView;\n\n for (i = 0; i < this.views.length; i++) {\n if (this.views[i].paymentMethod === paymentMethod) {\n this.activeMethodView = this.views[i];\n this._headingLabel.innerHTML = this._getPaymentMethodString();\n break;\n }\n }\n\n if (previousActiveMethodView) {\n previousActiveMethodView.setActive(false);\n }\n this.activeMethodView.setActive(true);\n this._headingLabel.classList.remove('braintree-no-payment-method-selected');\n};\n\nPaymentMethodsView.prototype.requestPaymentMethod = function () {\n if (!this.activeMethodView || this.model.isInEditMode()) {\n return Promise.reject(new DropinError(errors.NO_PAYMENT_METHOD_ERROR));\n }\n\n return Promise.resolve(this.activeMethodView.paymentMethod);\n};\n\nPaymentMethodsView.prototype.refreshPaymentMethods = function () {\n var i;\n var paymentMethods = this.model.getPaymentMethods();\n\n this.views.forEach(function (view) {\n view.teardown();\n });\n\n this.views = [];\n\n for (i = paymentMethods.length - 1; i >= 0; i--) {\n this._addPaymentMethod(paymentMethods[i]);\n }\n};\n\nmodule.exports = PaymentMethodsView;\n\n},{\"../constants\":189,\"../lib/add-selection-event-handler\":193,\"../lib/dropin-error\":199,\"./base-view\":246,\"./payment-method-view\":249}],251:[function(require,module,exports){\n'use strict';\n\nvar analytics = require('../lib/analytics');\nvar addSelectionEventHandler = require('../lib/add-selection-event-handler');\nvar BaseView = require('./base-view');\n\nvar paymentOptionIDs = require('../constants').paymentOptionIDs;\n\nvar paymentMethodOptionHTML = \"
    \\n \\n \\n \\n
    \\n\\n
    \\n @OPTION_TITLE\\n
    \\n
    \\n\";\n\nfunction PaymentOptionsView() {\n BaseView.apply(this, arguments);\n\n this._initialize();\n}\n\nPaymentOptionsView.prototype = Object.create(BaseView.prototype);\nPaymentOptionsView.prototype.constructor = PaymentOptionsView;\nPaymentOptionsView.ID = PaymentOptionsView.prototype.ID = 'options';\n\nPaymentOptionsView.prototype._initialize = function () {\n this.container = this.getElementById('payment-options-container');\n this.elements = {};\n\n this.model.supportedPaymentOptions.forEach(function (paymentOptionID) {\n this._addPaymentOption(paymentOptionID);\n }.bind(this));\n};\n\nPaymentOptionsView.prototype._addPaymentOption = function (paymentOptionID) {\n var paymentSource;\n var div = document.createElement('div');\n var html = paymentMethodOptionHTML;\n var clickHandler = function clickHandler() {\n this.mainView.setPrimaryView(paymentOptionID);\n this.model.selectPaymentOption(paymentOptionID);\n analytics.sendEvent(this.client, 'selected.' + paymentOptionIDs[paymentOptionID]);\n }.bind(this);\n\n div.className = 'braintree-option braintree-option__' + paymentOptionID;\n div.setAttribute('tabindex', '0');\n div.setAttribute('role', 'button');\n\n switch (paymentOptionID) {\n case paymentOptionIDs.applePay:\n paymentSource = this.strings['Apple Pay'];\n html = html.replace(/@ICON/g, 'logoApplePay');\n break;\n case paymentOptionIDs.card:\n paymentSource = this.strings.Card;\n html = html.replace(/@ICON/g, 'iconCardFront');\n html = html.replace(/@CLASSNAME/g, 'braintree-icon--bordered');\n break;\n case paymentOptionIDs.googlePay:\n paymentSource = this.strings['Google Pay'];\n html = html.replace(/@ICON/g, 'logoGooglePay');\n break;\n case paymentOptionIDs.paypal:\n paymentSource = this.strings.PayPal;\n html = html.replace(/@ICON/g, 'logoPayPal');\n break;\n case paymentOptionIDs.paypalCredit:\n paymentSource = this.strings['PayPal Credit'];\n html = html.replace(/@ICON/g, 'logoPayPalCredit');\n break;\n case paymentOptionIDs.venmo:\n paymentSource = this.strings.Venmo;\n html = html.replace(/@ICON/g, 'logoVenmo');\n break;\n default:\n break;\n }\n\n html = html.replace(/@OPTION_LABEL/g, this._generateOptionLabel(paymentSource));\n html = html.replace(/@OPTION_TITLE/g, paymentSource);\n html = html.replace(/@CLASSNAME/g, '');\n\n div.innerHTML = html;\n\n addSelectionEventHandler(div, clickHandler);\n\n this.container.appendChild(div);\n this.elements[paymentOptionID] = {\n div: div,\n clickHandler: clickHandler\n };\n};\n\nPaymentOptionsView.prototype._generateOptionLabel = function (paymentSourceString) {\n return this.strings.payingWith.replace('{{paymentSource}}', paymentSourceString);\n};\n\nmodule.exports = PaymentOptionsView;\n\n},{\"../constants\":189,\"../lib/add-selection-event-handler\":193,\"../lib/analytics\":194,\"./base-view\":246}],252:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar assign = require('../../lib/assign').assign;\nvar BaseView = require('../base-view');\nvar btApplePay = require('braintree-web/apple-pay');\nvar DropinError = require('../../lib/dropin-error');\nvar isHTTPS = require('../../lib/is-https');\nvar paymentOptionIDs = require('../../constants').paymentOptionIDs;\n\nvar DEFAULT_APPLE_PAY_SESSION_VERSION = 2;\n\nfunction ApplePayView() {\n BaseView.apply(this, arguments);\n}\n\nApplePayView.prototype = Object.create(BaseView.prototype);\nApplePayView.prototype.constructor = ApplePayView;\nApplePayView.ID = ApplePayView.prototype.ID = paymentOptionIDs.applePay;\n\nApplePayView.prototype.initialize = function () {\n var self = this;\n\n self.applePayConfiguration = assign({}, self.model.merchantConfiguration.applePay);\n self.applePaySessionVersion = self.applePayConfiguration.applePaySessionVersion || DEFAULT_APPLE_PAY_SESSION_VERSION;\n\n delete self.applePayConfiguration.applePaySessionVersion;\n\n return btApplePay.create({client: this.client}).then(function (applePayInstance) {\n self.buttonDiv = self.getElementById('apple-pay-button');\n\n self.applePayInstance = applePayInstance;\n\n self.buttonDiv.onclick = self._showPaymentSheet.bind(self);\n self.buttonDiv.style['-apple-pay-button-style'] = self.model.merchantConfiguration.applePay.buttonStyle || 'black';\n\n self.model.asyncDependencyReady(ApplePayView.ID);\n }).catch(function (err) {\n self.model.asyncDependencyFailed({\n view: self.ID,\n error: new DropinError(err)\n });\n });\n};\n\nApplePayView.prototype.requestPaymentMethod = function () {\n this.model.reportError('applePayButtonMustBeUsed');\n\n return BaseView.prototype.requestPaymentMethod.call(this);\n};\n\nApplePayView.prototype._showPaymentSheet = function () {\n var self = this;\n var request, session;\n\n if (this._sessionInProgress) {\n return false;\n }\n\n this._sessionInProgress = true;\n\n request = this.applePayInstance.createPaymentRequest(this.applePayConfiguration.paymentRequest);\n session = new global.ApplePaySession(self.applePaySessionVersion, request);\n\n session.onvalidatemerchant = function (event) {\n self.applePayInstance.performValidation({\n validationURL: event.validationURL,\n displayName: self.applePayConfiguration.displayName\n }).then(function (validationData) {\n session.completeMerchantValidation(validationData);\n }).catch(function (validationErr) {\n self.model.reportError(validationErr);\n self._sessionInProgress = false;\n session.abort();\n });\n };\n\n session.onpaymentauthorized = function (event) {\n self.applePayInstance.tokenize({\n token: event.payment.token\n }).then(function (payload) {\n self._sessionInProgress = false;\n session.completePayment(global.ApplePaySession.STATUS_SUCCESS);\n payload.rawPaymentData = event.payment;\n self.model.addPaymentMethod(payload);\n }).catch(function (tokenizeErr) {\n self.model.reportError(tokenizeErr);\n self._sessionInProgress = false;\n session.completePayment(global.ApplePaySession.STATUS_FAILURE);\n });\n };\n\n session.oncancel = function () {\n self._sessionInProgress = false;\n };\n\n session.begin();\n\n return false;\n};\n\nApplePayView.prototype.updateConfiguration = function (key, value) {\n this.applePayConfiguration[key] = value;\n};\n\nApplePayView.isEnabled = function (options) {\n var gatewayConfiguration = options.client.getConfiguration().gatewayConfiguration;\n var applePayEnabled = gatewayConfiguration.applePayWeb && Boolean(options.merchantConfiguration.applePay);\n var applePaySessionVersion = options.merchantConfiguration.applePay && options.merchantConfiguration.applePay.applePaySessionVersion;\n var applePayBrowserSupported;\n\n applePaySessionVersion = applePaySessionVersion || DEFAULT_APPLE_PAY_SESSION_VERSION;\n\n if (!applePayEnabled) {\n return Promise.resolve(false);\n }\n\n applePayBrowserSupported = global.ApplePaySession && isHTTPS.isHTTPS();\n\n if (!applePayBrowserSupported) {\n return Promise.resolve(false);\n }\n\n if (!global.ApplePaySession.supportsVersion(applePaySessionVersion)) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(Boolean(global.ApplePaySession.canMakePayments()));\n};\n\nmodule.exports = ApplePayView;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../../constants\":189,\"../../lib/assign\":195,\"../../lib/dropin-error\":199,\"../../lib/is-https\":202,\"../base-view\":246,\"braintree-web/apple-pay\":50}],253:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar analytics = require('../../lib/analytics');\nvar assign = require('../../lib/assign').assign;\nvar browserDetection = require('../../lib/browser-detection');\nvar BaseView = require('../base-view');\nvar btPaypal = require('braintree-web/paypal-checkout');\nvar DropinError = require('../../lib/dropin-error');\nvar constants = require('../../constants');\nvar assets = require('@braintree/asset-loader');\nvar translations = require('../../translations').fiveCharacterLocales;\n\nvar ASYNC_DEPENDENCY_TIMEOUT = 30000;\nvar READ_ONLY_CONFIGURATION_OPTIONS = ['offerCredit', 'locale'];\nvar DEFAULT_CHECKOUTJS_LOG_LEVEL = 'warn';\n\nvar paypalScriptLoadInProgressPromise;\n\nfunction BasePayPalView() {\n BaseView.apply(this, arguments);\n}\n\nBasePayPalView.prototype = Object.create(BaseView.prototype);\n\nBasePayPalView.prototype.initialize = function () {\n var asyncDependencyTimeoutHandler;\n var isCredit = Boolean(this._isPayPalCredit);\n var setupComplete = false;\n var self = this;\n var paypalType = isCredit ? 'paypalCredit' : 'paypal';\n var paypalConfiguration = this.model.merchantConfiguration[paypalType];\n var dropinWrapperId = '#braintree--dropin__' + this.model.componentID;\n\n this.paypalConfiguration = assign({}, paypalConfiguration);\n\n asyncDependencyTimeoutHandler = setTimeout(function () {\n self.model.asyncDependencyFailed({\n view: self.ID,\n error: new DropinError('There was an error connecting to PayPal.')\n });\n }, ASYNC_DEPENDENCY_TIMEOUT);\n\n return btPaypal.create({client: this.client}).then(function (paypalInstance) {\n var checkoutJSConfiguration;\n var buttonSelector = '[data-braintree-id=\"paypal-button\"]';\n var environment = self.client.getConfiguration().gatewayConfiguration.environment === 'production' ? 'production' : 'sandbox';\n var locale = self.model.merchantConfiguration.locale;\n\n self.paypalInstance = paypalInstance;\n\n self.paypalConfiguration.offerCredit = Boolean(isCredit);\n checkoutJSConfiguration = {\n env: environment,\n style: self.paypalConfiguration.buttonStyle || {},\n commit: self.paypalConfiguration.commit,\n payment: function () {\n return paypalInstance.createPayment(self.paypalConfiguration).catch(reportError);\n },\n onAuthorize: function (data) {\n // NEXT_MAJOR_VERSION change out this vaultPayPal property\n // to something more generic, such as vaultOnTokenization so\n // all the vault objects can have the same shape (instead\n // of being specific to PayPal accounts here)\n var shouldNotVault = self.paypalConfiguration.vault && self.paypalConfiguration.vault.vaultPayPal === false;\n\n if (shouldNotVault) {\n data.vault = false;\n }\n\n return paypalInstance.tokenizePayment(data).then(function (tokenizePayload) {\n if (!shouldNotVault && self.paypalConfiguration.flow === 'vault' && !self.model.isGuestCheckout) {\n tokenizePayload.vaulted = true;\n }\n self.model.addPaymentMethod(tokenizePayload);\n }).catch(reportError);\n },\n onError: reportError\n };\n\n if (locale && locale in translations) {\n self.paypalConfiguration.locale = locale;\n checkoutJSConfiguration.locale = locale;\n }\n checkoutJSConfiguration.funding = {\n disallowed: []\n };\n\n Object.keys(global.paypal.FUNDING).forEach(function (key) {\n if (key === 'PAYPAL' || key === 'CREDIT') {\n return;\n }\n checkoutJSConfiguration.funding.disallowed.push(global.paypal.FUNDING[key]);\n });\n\n if (isCredit) {\n buttonSelector = '[data-braintree-id=\"paypal-credit-button\"]';\n checkoutJSConfiguration.style.label = 'credit';\n } else {\n checkoutJSConfiguration.funding.disallowed.push(global.paypal.FUNDING.CREDIT);\n }\n\n buttonSelector = dropinWrapperId + ' ' + buttonSelector;\n\n return global.paypal.Button.render(checkoutJSConfiguration, buttonSelector).then(function () {\n self.model.asyncDependencyReady(paypalType);\n setupComplete = true;\n clearTimeout(asyncDependencyTimeoutHandler);\n });\n }).catch(reportError);\n\n function reportError(err) {\n if (setupComplete) {\n self.model.reportError(err);\n } else {\n self.model.asyncDependencyFailed({\n view: self.ID,\n error: err\n });\n clearTimeout(asyncDependencyTimeoutHandler);\n }\n }\n};\n\nBasePayPalView.prototype.requestPaymentMethod = function () {\n this.model.reportError('paypalButtonMustBeUsed');\n\n return BaseView.prototype.requestPaymentMethod.call(this);\n};\n\nBasePayPalView.prototype.updateConfiguration = function (key, value) {\n if (READ_ONLY_CONFIGURATION_OPTIONS.indexOf(key) === -1) {\n this.paypalConfiguration[key] = value;\n }\n};\n\nBasePayPalView.isEnabled = function (options) {\n var gatewayConfiguration = options.client.getConfiguration().gatewayConfiguration;\n var merchantPayPalConfig = options.merchantConfiguration.paypal || options.merchantConfiguration.paypalCredit;\n\n if (!gatewayConfiguration.paypalEnabled) {\n return Promise.resolve(false);\n }\n\n if (browserDetection.isIe9() || browserDetection.isIe10()) {\n analytics.sendEvent(options.client, options.viewID + '.checkout.js-browser-not-supported');\n\n return Promise.resolve(false);\n }\n\n if (global.paypal && global.paypal.Button) {\n return Promise.resolve(true);\n }\n\n if (paypalScriptLoadInProgressPromise) {\n return paypalScriptLoadInProgressPromise;\n }\n\n paypalScriptLoadInProgressPromise = assets.loadScript({\n src: constants.CHECKOUT_JS_SOURCE,\n id: constants.PAYPAL_CHECKOUT_SCRIPT_ID,\n dataAttributes: {\n 'log-level': merchantPayPalConfig.logLevel || DEFAULT_CHECKOUTJS_LOG_LEVEL\n }\n }).then(function () {\n return Promise.resolve(true);\n }).catch(function () {\n return Promise.resolve(false);\n }).then(function (result) {\n paypalScriptLoadInProgressPromise = null;\n\n return Promise.resolve(result);\n });\n\n return paypalScriptLoadInProgressPromise;\n};\n\nmodule.exports = BasePayPalView;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../../constants\":189,\"../../lib/analytics\":194,\"../../lib/assign\":195,\"../../lib/browser-detection\":196,\"../../lib/dropin-error\":199,\"../../translations\":229,\"../base-view\":246,\"@braintree/asset-loader\":1,\"braintree-web/paypal-checkout\":129}],254:[function(require,module,exports){\n'use strict';\n\nvar assign = require('../../lib/assign').assign;\n\nvar BaseView = require('../base-view');\nvar constants = require('../../constants');\nvar DropinError = require('../../lib/dropin-error');\nvar hostedFields = require('braintree-web/hosted-fields');\nvar isUtf8 = require('../../lib/is-utf-8');\nvar transitionHelper = require('../../lib/transition-helper');\n\nvar cardIconHTML = \"
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n\\n
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n\\n
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n
    \\n\";\n\nvar PASSTHROUGH_EVENTS = [\n 'empty',\n // TODO should intercept this event and call tokenize\n 'inputSubmitRequest',\n 'binAvailable'\n];\n\nvar HOSTED_FIELDS = [\n 'number',\n 'expirationDate',\n 'cvv',\n 'postalCode',\n 'cardholderName'\n];\n\nfunction CardView() {\n BaseView.apply(this, arguments);\n}\n\nCardView.prototype = Object.create(BaseView.prototype);\nCardView.prototype.constructor = CardView;\nCardView.ID = CardView.prototype.ID = constants.paymentOptionIDs.card;\n\nCardView.prototype.initialize = function () {\n var cvvFieldGroup, postalCodeFieldGroup, hfOptions;\n var cardholderNameGroup = this.getElementById('cardholder-name-field-group');\n\n // If merchant explicty passes a value of `true` for card configuration,\n // we need to treat it as if no card configuration was passed, and provide\n // the default configuration\n if (this.model.merchantConfiguration.card && this.model.merchantConfiguration.card !== true) {\n this.merchantConfiguration = this.model.merchantConfiguration.card;\n } else {\n this.merchantConfiguration = {};\n }\n this.merchantConfiguration.vault = this.merchantConfiguration.vault || {};\n this.hasCardholderName = Boolean(this.merchantConfiguration.cardholderName);\n this.cardholderNameRequired = this.hasCardholderName && this.merchantConfiguration.cardholderName.required === true;\n hfOptions = this._generateHostedFieldsOptions();\n\n this._renderCardIcons();\n this._hideUnsupportedCardIcons();\n\n this.hasCVV = hfOptions.fields.cvv;\n this.saveCardInput = this.getElementById('save-card-input');\n this.cardNumberIcon = this.getElementById('card-number-icon');\n this.cardNumberIconSvg = this.getElementById('card-number-icon-svg');\n this.cvvIcon = this.getElementById('cvv-icon');\n this.cvvIconSvg = this.getElementById('cvv-icon-svg');\n this.cvvLabelDescriptor = this.getElementById('cvv-label-descriptor');\n this.fieldErrors = {};\n\n if (!this.hasCardholderName) {\n cardholderNameGroup.parentNode.removeChild(cardholderNameGroup);\n HOSTED_FIELDS = HOSTED_FIELDS.filter(function (field) {\n return field !== 'cardholderName';\n });\n }\n\n if (!this.hasCVV) {\n cvvFieldGroup = this.getElementById('cvv-field-group');\n cvvFieldGroup.parentNode.removeChild(cvvFieldGroup);\n HOSTED_FIELDS = HOSTED_FIELDS.filter(function (field) {\n return field !== 'cvv';\n });\n }\n\n if (!hfOptions.fields.postalCode) {\n postalCodeFieldGroup = this.getElementById('postal-code-field-group');\n postalCodeFieldGroup.parentNode.removeChild(postalCodeFieldGroup);\n HOSTED_FIELDS = HOSTED_FIELDS.filter(function (field) {\n return field !== 'postalCode';\n });\n }\n\n if (!this.model.isGuestCheckout && this.merchantConfiguration.vault.allowVaultCardOverride === true) {\n this.getElementById('save-card-field-group').classList.remove('braintree-hidden');\n }\n\n // NEXT_MAJOR_VERSION change out this vaultCard property\n // to something more generic, such as vaultOnTokenization so\n // all the vault objects can have the same shape (instead\n // of being specific to cards here)\n if (this.merchantConfiguration.vault.vaultCard === false) {\n this.saveCardInput.checked = false;\n }\n\n return hostedFields.create(hfOptions).then(function (hostedFieldsInstance) {\n this.hostedFieldsInstance = hostedFieldsInstance;\n this.hostedFieldsInstance.on('blur', this._onBlurEvent.bind(this));\n this.hostedFieldsInstance.on('cardTypeChange', this._onCardTypeChangeEvent.bind(this));\n this.hostedFieldsInstance.on('focus', this._onFocusEvent.bind(this));\n this.hostedFieldsInstance.on('notEmpty', this._onNotEmptyEvent.bind(this));\n this.hostedFieldsInstance.on('validityChange', this._onValidityChangeEvent.bind(this));\n HOSTED_FIELDS.forEach(function (hostedField) {\n this.hostedFieldsInstance.setAttribute({\n field: hostedField, attribute: 'aria-required', value: true\n });\n }.bind(this));\n\n PASSTHROUGH_EVENTS.forEach(function (eventName) {\n this.hostedFieldsInstance.on(eventName, function (event) {\n this.model._emit('card:' + eventName, event);\n }.bind(this));\n }.bind(this));\n\n this.model.asyncDependencyReady(CardView.ID);\n }.bind(this)).catch(function (err) {\n this.model.asyncDependencyFailed({\n view: this.ID,\n error: err\n });\n }.bind(this));\n};\n\nCardView.prototype._sendRequestableEvent = function () {\n if (!this._isTokenizing) {\n this.model.setPaymentMethodRequestable({\n isRequestable: this._validateForm(),\n type: constants.paymentMethodTypes.card\n });\n }\n};\n\nCardView.prototype._renderCardIcons = function () {\n var overrides = this.merchantConfiguration.overrides;\n var cardIcons = this.getElementById('card-view-icons');\n var supportedCardBrands = overrides && overrides.fields && overrides.fields.number && overrides.fields.number.supportedCardBrands;\n\n cardIcons.innerHTML = cardIconHTML;\n\n if (supportedCardBrands) {\n Object.keys(supportedCardBrands).forEach(function (cardBrand) {\n var value = supportedCardBrands[cardBrand];\n var selector, iconDiv;\n\n if (value === false) {\n selector = 'div[data-braintree-id=\"' + constants.cardTypeIcons[cardBrand] + '-card-icon\"]';\n iconDiv = document.querySelector(selector);\n hideCardIcon(iconDiv);\n }\n });\n }\n};\n\nCardView.prototype._generateHostedFieldsOptions = function () {\n var challenges = this.client.getConfiguration().gatewayConfiguration.challenges;\n var hasCVVChallenge = challenges.indexOf('cvv') !== -1;\n var hasPostalCodeChallenge = challenges.indexOf('postal_code') !== -1;\n var overrides = this.merchantConfiguration.overrides;\n var options = {\n client: this.client,\n fields: {\n cardholderName: {\n container: this._getFieldContainer('cardholder-name'),\n placeholder: this.strings.cardholderNamePlaceholder\n },\n number: {\n container: this._getFieldContainer('number'),\n placeholder: generateCardNumberPlaceholder()\n },\n expirationDate: {\n container: this._getFieldContainer('expiration'),\n placeholder: this.strings.expirationDatePlaceholder\n },\n cvv: {\n container: this._getFieldContainer('cvv'),\n placeholder: addBullets(3)\n },\n postalCode: {\n container: this._getFieldContainer('postal-code')\n }\n },\n styles: {\n input: {\n 'font-size': '16px',\n 'font-family': '-apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif',\n color: '#000'\n },\n ':focus': {\n color: 'black'\n },\n '::-webkit-input-placeholder': {\n color: '#6a6a6a'\n },\n ':-moz-placeholder': {\n color: '#6a6a6a'\n },\n '::-moz-placeholder': {\n color: '#6a6a6a'\n },\n ':-ms-input-placeholder ': {\n color: '#6a6a6a'\n },\n 'input::-ms-clear': {\n color: 'transparent'\n }\n }\n };\n\n if (!this.hasCardholderName) {\n delete options.fields.cardholderName;\n }\n\n if (!hasCVVChallenge) {\n delete options.fields.cvv;\n }\n\n if (!hasPostalCodeChallenge) {\n delete options.fields.postalCode;\n }\n\n if (!overrides) { return options; }\n\n if (overrides.fields) {\n if (overrides.fields.cvv && typeof overrides.fields.cvv.placeholder !== 'undefined') {\n this._hasCustomCVVPlaceholder = true;\n }\n\n Object.keys(overrides.fields).forEach(function (field) {\n if ((field === 'cvv' || field === 'postalCode') && overrides.fields[field] === null) {\n delete options.fields[field];\n\n return;\n }\n\n if (!options.fields[field]) {\n return;\n }\n\n assign(options.fields[field], overrides.fields[field], {\n selector: options.fields[field].selector\n });\n });\n }\n\n if (overrides.styles) {\n Object.keys(overrides.styles).forEach(function (style) {\n if (overrides.styles[style] === null) {\n delete options.styles[style];\n\n return;\n } else if (typeof overrides.styles[style] === 'string') {\n // it's a class name, and should override the configured styles entirely\n options.styles[style] = overrides.styles[style];\n\n return;\n }\n\n normalizeStyles(overrides.styles[style]);\n options.styles[style] = options.styles[style] || {};\n\n assign(options.styles[style], overrides.styles[style]);\n });\n }\n\n return options;\n};\n\nCardView.prototype._validateForm = function (showFieldErrors) {\n var card, cardType, cardTypeSupported, state;\n var isValid = true;\n var supportedCardTypes = this.client.getConfiguration().gatewayConfiguration.creditCards.supportedCardTypes;\n\n if (!this.hostedFieldsInstance) {\n return false;\n }\n\n state = this.hostedFieldsInstance.getState();\n\n Object.keys(state.fields).forEach(function (key) {\n var field = state.fields[key];\n\n if (!showFieldErrors && !isValid) {\n // return early if form is already invalid\n // and we don't need to display all field errors\n return;\n }\n\n if (field.isEmpty) {\n if (!this.cardholderNameRequired && key === 'cardholderName') {\n isValid = true;\n } else {\n isValid = false;\n\n if (showFieldErrors) {\n this.showFieldError(key, this.strings['fieldEmptyFor' + capitalize(key)]);\n }\n }\n } else if (!field.isValid) {\n isValid = false;\n\n if (showFieldErrors) {\n this.showFieldError(key, this.strings['fieldInvalidFor' + capitalize(key)]);\n }\n }\n }.bind(this));\n\n if (state.fields.number.isValid) {\n card = state.cards[0];\n cardType = card && constants.configurationCardTypes[card.type];\n cardTypeSupported = cardType && supportedCardTypes.indexOf(cardType) !== -1;\n\n if (!cardTypeSupported) {\n isValid = false;\n\n if (showFieldErrors) {\n this.showFieldError('number', this.strings.unsupportedCardTypeError);\n }\n }\n }\n\n return isValid;\n};\n\nCardView.prototype.getPaymentMethod = function () { // eslint-disable-line consistent-return\n var formIsValid = this._validateForm();\n\n if (formIsValid) {\n return {\n type: constants.paymentMethodTypes.card\n };\n }\n};\n\nCardView.prototype.tokenize = function () {\n var transitionCallback;\n var self = this;\n var state = self.hostedFieldsInstance.getState();\n var tokenizeOptions = {\n vault: this._shouldVault()\n };\n\n this.model.clearError();\n\n if (!this._validateForm(true)) {\n self.model.reportError('hostedFieldsFieldsInvalidError');\n self.allowUserAction();\n\n return Promise.reject(new DropinError(constants.errors.NO_PAYMENT_METHOD_ERROR));\n }\n\n if (!this.cardholderNameRequired && state.fields.cardholderName && state.fields.cardholderName.isEmpty) {\n tokenizeOptions.fieldsToTokenize = Object.keys(state.fields).filter(function (field) {\n return field !== 'cardholderName';\n });\n }\n\n self._isTokenizing = true;\n\n return self.hostedFieldsInstance.tokenize(tokenizeOptions).then(function (payload) {\n var retainCardFields = self.merchantConfiguration.clearFieldsAfterTokenization === false;\n\n if (!retainCardFields) {\n Object.keys(state.fields).forEach(function (field) {\n self.hostedFieldsInstance.clear(field);\n });\n }\n\n if (self._shouldVault()) {\n payload.vaulted = true;\n }\n\n return new Promise(function (resolve) {\n transitionCallback = function () {\n // Wait for braintree-sheet--tokenized class to be added in IE 9\n // before attempting to remove it\n setTimeout(function () {\n self.model.addPaymentMethod(payload);\n resolve(payload);\n self.element.classList.remove('braintree-sheet--tokenized');\n }, 0);\n };\n\n transitionHelper.onTransitionEnd(self.element, 'max-height', transitionCallback);\n\n setTimeout(function () {\n self.allowUserAction();\n self._isTokenizing = false;\n }, constants.CHANGE_ACTIVE_PAYMENT_METHOD_TIMEOUT);\n\n self.element.classList.add('braintree-sheet--tokenized');\n });\n }).catch(function (err) {\n self._isTokenizing = false;\n // this is a little magical, but if the code property exists\n // in the translations with the word Error appended to the end,\n // then reportError will automatically print that translation.\n // See https://github.com/braintree/braintree-web-drop-in/blob/6ecba73f2f16e8b7ae2119702ac162a1a985908e/src/views/main-view.js#L255-L256\n self.model.reportError(err);\n self.allowUserAction();\n\n return Promise.reject(new DropinError({\n message: constants.errors.NO_PAYMENT_METHOD_ERROR,\n braintreeWebError: err\n }));\n });\n};\n\nCardView.prototype.showFieldError = function (field, errorMessage) {\n var fieldError;\n var fieldGroup = this.getElementById(camelCaseToKebabCase(field) + '-field-group');\n var input = fieldGroup.querySelector('input');\n\n if (!this.fieldErrors.hasOwnProperty(field)) {\n this.fieldErrors[field] = this.getElementById(camelCaseToKebabCase(field) + '-field-error');\n }\n\n fieldGroup.classList.add('braintree-form__field-group--has-error');\n\n fieldError = this.fieldErrors[field];\n fieldError.innerHTML = errorMessage;\n\n if (input) {\n input.setAttribute('aria-invalid', true);\n } else {\n this.hostedFieldsInstance.setAttribute({\n field: field,\n attribute: 'aria-invalid',\n value: true\n });\n this.hostedFieldsInstance.setMessage({\n field: field,\n message: errorMessage\n });\n }\n};\n\nCardView.prototype.hideFieldError = function (field) {\n var fieldGroup = this.getElementById(camelCaseToKebabCase(field) + '-field-group');\n var input = fieldGroup.querySelector('input');\n\n if (!this.fieldErrors.hasOwnProperty(field)) {\n this.fieldErrors[field] = this.getElementById(camelCaseToKebabCase(field) + '-field-error');\n }\n\n fieldGroup.classList.remove('braintree-form__field-group--has-error');\n\n if (input) {\n input.removeAttribute('aria-invalid');\n } else {\n this.hostedFieldsInstance.removeAttribute({\n field: field,\n attribute: 'aria-invalid'\n });\n this.hostedFieldsInstance.setMessage({\n field: field,\n message: ''\n });\n }\n};\n\nCardView.prototype.teardown = function () {\n return this.hostedFieldsInstance.teardown();\n};\n\nCardView.prototype._shouldVault = function () {\n return !this.model.isGuestCheckout && this.saveCardInput.checked;\n};\n\nCardView.prototype._getFieldContainer = function (field) {\n // we committed to not changing the data-braintree-id fields\n // so we need to convert this field to the id used in the HTML\n if (field === 'expiration') {\n field = 'expiration-date';\n }\n\n return this.getElementById(field + '-field-group').querySelector('.braintree-form__hosted-field');\n};\n\nCardView.prototype._onBlurEvent = function (event) {\n var field = event.fields[event.emittedBy];\n var fieldGroup = this.getElementById(camelCaseToKebabCase(event.emittedBy) + '-field-group');\n\n fieldGroup.classList.remove('braintree-form__field-group--is-focused');\n\n if (field.isPotentiallyValid) {\n this.hideFieldError(event.emittedBy);\n }\n\n if (this._shouldApplyFieldEmptyError(event.emittedBy, field)) {\n this.showFieldError(event.emittedBy, this.strings['fieldEmptyFor' + capitalize(event.emittedBy)]);\n } else if (!field.isEmpty && !field.isValid) {\n this.showFieldError(event.emittedBy, this.strings['fieldInvalidFor' + capitalize(event.emittedBy)]);\n } else if (event.emittedBy === 'number' && !this._isCardTypeSupported(event.cards[0])) {\n this.showFieldError('number', this.strings.unsupportedCardTypeError);\n }\n\n this.model._emit('card:blur', event);\n\n setTimeout(function () {\n // when focusing on a field by clicking the label,\n // we need to wait a bit for the iframe to be\n // focused properly before applying validations\n if (this._shouldApplyFieldEmptyError(event.emittedBy, field)) {\n this.showFieldError(event.emittedBy, this.strings['fieldEmptyFor' + capitalize(event.emittedBy)]);\n }\n }.bind(this), 150);\n};\n\nCardView.prototype._onCardTypeChangeEvent = function (event) {\n var cardType;\n var cardNumberHrefLink = '#iconCardFront';\n var cvvHrefLink = '#iconCVVBack';\n var cvvDescriptor = this.strings.cvvThreeDigitLabelSubheading;\n var cvvPlaceholder = addBullets(3);\n var numberFieldGroup = this.getElementById('number-field-group');\n\n if (event.cards.length === 1) {\n cardType = event.cards[0].type;\n cardNumberHrefLink = '#icon-' + cardType;\n if (cardType === 'american-express') {\n cvvHrefLink = '#iconCVVFront';\n cvvDescriptor = this.strings.cvvFourDigitLabelSubheading;\n cvvPlaceholder = addBullets(4);\n }\n // Keep icon visible when field is not focused\n numberFieldGroup.classList.add('braintree-form__field-group--card-type-known');\n } else {\n numberFieldGroup.classList.remove('braintree-form__field-group--card-type-known');\n }\n\n // if the number field emitted the card change event fires\n // and the card type is supported, we need to clear out the errors\n // field in case that there was a \"card type is unsupported\" error\n if (event.emittedBy === 'number' && this._isCardTypeSupported(event.cards[0])) {\n this.hideFieldError(event.emittedBy);\n }\n\n this.cardNumberIconSvg.setAttribute('xlink:href', cardNumberHrefLink);\n\n if (this.hasCVV) {\n this.cvvIconSvg.setAttribute('xlink:href', cvvHrefLink);\n this.cvvLabelDescriptor.innerHTML = cvvDescriptor;\n\n if (!this._hasCustomCVVPlaceholder) {\n this.hostedFieldsInstance.setAttribute({\n field: 'cvv',\n attribute: 'placeholder',\n value: cvvPlaceholder\n });\n }\n }\n\n this.model._emit('card:cardTypeChange', event);\n};\n\nCardView.prototype._onFocusEvent = function (event) {\n var fieldGroup = this.getElementById(camelCaseToKebabCase(event.emittedBy) + '-field-group');\n\n fieldGroup.classList.add('braintree-form__field-group--is-focused');\n\n this.model._emit('card:focus', event);\n};\n\nCardView.prototype._onNotEmptyEvent = function (event) {\n this.hideFieldError(event.emittedBy);\n\n this.model._emit('card:notEmpty', event);\n};\n\nCardView.prototype._onValidityChangeEvent = function (event) {\n var isValid;\n var field = event.fields[event.emittedBy];\n\n if (event.emittedBy === 'number' && event.cards[0]) {\n isValid = field.isValid && this._isCardTypeSupported(event.cards[0]);\n } else {\n isValid = field.isValid;\n }\n\n field.container.classList.toggle('braintree-form__field--valid', isValid);\n\n if (field.isPotentiallyValid) {\n this.hideFieldError(event.emittedBy);\n }\n\n this._sendRequestableEvent();\n\n this.model._emit('card:validityChange', event);\n};\n\nCardView.prototype.requestPaymentMethod = function () {\n this.preventUserAction();\n\n return this.tokenize();\n};\n\nCardView.prototype.onSelection = function () {\n if (!this.hostedFieldsInstance) {\n return;\n }\n\n setTimeout(function () {\n if (this.hasCardholderName) {\n this.hostedFieldsInstance.focus('cardholderName');\n } else {\n this.hostedFieldsInstance.focus('number');\n }\n }.bind(this), 50);\n\n this._sendRequestableEvent();\n};\n\nCardView.prototype._hideUnsupportedCardIcons = function () {\n var supportedCardTypes = this.client.getConfiguration().gatewayConfiguration.creditCards.supportedCardTypes;\n\n Object.keys(constants.configurationCardTypes).forEach(function (paymentMethodCardType) {\n var cardIcon;\n var configurationCardType = constants.configurationCardTypes[paymentMethodCardType];\n\n if (supportedCardTypes.indexOf(configurationCardType) === -1) {\n cardIcon = this.getElementById(paymentMethodCardType + '-card-icon');\n cardIcon.classList.add('braintree-hidden');\n }\n }.bind(this));\n};\n\nCardView.prototype._isCardTypeSupported = function (card) {\n var cardType = card && card.type;\n var configurationCardType = constants.configurationCardTypes[cardType];\n var supportedCardTypes = this.client.getConfiguration().gatewayConfiguration.creditCards.supportedCardTypes;\n\n return supportedCardTypes.indexOf(configurationCardType) !== -1;\n};\n\nCardView.isEnabled = function (options) {\n var gatewayConfiguration = options.client.getConfiguration().gatewayConfiguration;\n var disabledByMerchant = options.merchantConfiguration.card === false;\n\n return Promise.resolve(!disabledByMerchant && gatewayConfiguration.creditCards.supportedCardTypes.length > 0);\n};\n\nCardView.prototype._shouldApplyFieldEmptyError = function (fieldId, field) {\n if (!field.isEmpty) {\n return false;\n }\n\n if (fieldId === 'cardholderName' && !this.cardholderNameRequired) {\n return false;\n }\n\n return isCardViewElement();\n};\n\nfunction hideCardIcon(icon) {\n if (icon) {\n icon.classList.add('braintree-hidden');\n }\n}\n\nfunction isCardViewElement() {\n var activeId = document.activeElement && document.activeElement.id;\n var isHostedFieldsElement = document.activeElement instanceof HTMLIFrameElement && activeId.indexOf('braintree-hosted-field') !== -1;\n\n return isHostedFieldsElement;\n}\n\nfunction camelCaseToKebabCase(string) {\n return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction capitalize(string) {\n return string[0].toUpperCase() + string.substr(1);\n}\n\nfunction normalizeStyles(styles) {\n Object.keys(styles).forEach(function (style) {\n var transformedKeyName = camelCaseToKebabCase(style);\n\n styles[transformedKeyName] = styles[style];\n });\n}\n\nfunction addBullets(number) {\n var bulletCharacter = isUtf8() ? '•' : '*';\n\n return Array(number + 1).join(bulletCharacter);\n}\n\nfunction generateCardNumberPlaceholder() {\n var four = addBullets(4);\n\n return [four, four, four, four].join(' ');\n}\n\nmodule.exports = CardView;\n\n},{\"../../constants\":189,\"../../lib/assign\":195,\"../../lib/dropin-error\":199,\"../../lib/is-utf-8\":203,\"../../lib/transition-helper\":209,\"../base-view\":246,\"braintree-web/hosted-fields\":78}],255:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar assign = require('../../lib/assign').assign;\nvar BaseView = require('../base-view');\nvar btGooglePay = require('braintree-web/google-payment');\nvar DropinError = require('../../lib/dropin-error');\nvar constants = require('../../constants');\nvar assets = require('@braintree/asset-loader');\nvar analytics = require('../../lib/analytics');\n\nfunction GooglePayView() {\n BaseView.apply(this, arguments);\n}\n\nGooglePayView.prototype = Object.create(BaseView.prototype);\nGooglePayView.prototype.constructor = GooglePayView;\nGooglePayView.ID = GooglePayView.prototype.ID = constants.paymentOptionIDs.googlePay;\n\nGooglePayView.prototype.initialize = function () {\n var self = this;\n var buttonOptions, googlePayVersion, merchantId;\n\n self.googlePayConfiguration = assign({}, self.model.merchantConfiguration.googlePay);\n googlePayVersion = self.googlePayConfiguration.googlePayVersion;\n merchantId = self.googlePayConfiguration.merchantId;\n\n buttonOptions = assign({\n buttonType: 'short'\n }, self.googlePayConfiguration.button, {\n onClick: function (event) {\n event.preventDefault();\n\n self.preventUserAction();\n\n self.tokenize().then(function () {\n self.allowUserAction();\n });\n }\n });\n\n delete self.googlePayConfiguration.googlePayVersion;\n delete self.googlePayConfiguration.merchantId;\n delete self.googlePayConfiguration.button;\n\n return btGooglePay.create({\n client: self.client,\n googlePayVersion: googlePayVersion,\n googleMerchantId: merchantId\n }).then(function (googlePayInstance) {\n self.googlePayInstance = googlePayInstance;\n self.paymentsClient = createPaymentsClient(self.client);\n }).then(function () {\n var buttonContainer = self.getElementById('google-pay-button');\n\n buttonContainer.appendChild(self.paymentsClient.createButton(buttonOptions));\n\n self.model.asyncDependencyReady(GooglePayView.ID);\n }).catch(function (err) {\n self.model.asyncDependencyFailed({\n view: self.ID,\n error: new DropinError(err)\n });\n });\n};\n\nGooglePayView.prototype.tokenize = function () {\n var self = this;\n var paymentDataRequest = self.googlePayInstance.createPaymentDataRequest(self.googlePayConfiguration);\n var rawPaymentData;\n\n return self.paymentsClient.loadPaymentData(paymentDataRequest).then(function (paymentData) {\n rawPaymentData = paymentData;\n\n return self.googlePayInstance.parseResponse(paymentData);\n }).then(function (tokenizePayload) {\n tokenizePayload.rawPaymentData = rawPaymentData;\n self.model.addPaymentMethod(tokenizePayload);\n }).catch(function (err) {\n var reportedError = err;\n\n if (err.statusCode === 'DEVELOPER_ERROR') {\n console.error(err); // eslint-disable-line no-console\n reportedError = 'developerError';\n } else if (err.statusCode === 'CANCELED') {\n analytics.sendEvent(self.client, 'googlepay.loadPaymentData.canceled');\n\n return;\n } else if (err.statusCode) {\n analytics.sendEvent(self.client, 'googlepay.loadPaymentData.failed');\n }\n\n self.model.reportError(reportedError);\n });\n};\n\nGooglePayView.prototype.updateConfiguration = function (key, value) {\n this.googlePayConfiguration[key] = value;\n};\n\nGooglePayView.isEnabled = function (options) {\n var gatewayConfiguration = options.client.getConfiguration().gatewayConfiguration;\n\n if (!(gatewayConfiguration.androidPay && Boolean(options.merchantConfiguration.googlePay))) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve().then(function () {\n if (!(global.google && global.google.payments && global.google.payments.api && global.google.payments.api.PaymentsClient)) {\n return assets.loadScript({\n id: constants.GOOGLE_PAYMENT_SCRIPT_ID,\n src: constants.GOOGLE_PAYMENT_SOURCE\n });\n }\n\n return Promise.resolve();\n }).then(function () {\n var paymentsClient = createPaymentsClient(options.client);\n\n return paymentsClient.isReadyToPay({\n allowedPaymentMethods: ['CARD', 'TOKENIZED_CARD']\n });\n }).then(function (response) {\n return Boolean(response.result);\n });\n};\n\nfunction createPaymentsClient(client) {\n return new global.google.payments.api.PaymentsClient({\n environment: client.getConfiguration().gatewayConfiguration.environment === 'production' ? 'PRODUCTION' : 'TEST'\n });\n}\n\nmodule.exports = GooglePayView;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../../constants\":189,\"../../lib/analytics\":194,\"../../lib/assign\":195,\"../../lib/dropin-error\":199,\"../base-view\":246,\"@braintree/asset-loader\":1,\"braintree-web/google-payment\":71}],256:[function(require,module,exports){\n'use strict';\n\nvar paymentOptionIDs = require('../../constants').paymentOptionIDs;\n\nvar result = {};\n\nresult[paymentOptionIDs.applePay] = require('./apple-pay-view');\nresult[paymentOptionIDs.card] = require('./card-view');\nresult[paymentOptionIDs.googlePay] = require('./google-pay-view');\nresult[paymentOptionIDs.paypal] = require('./paypal-view');\nresult[paymentOptionIDs.paypalCredit] = require('./paypal-credit-view');\nresult[paymentOptionIDs.venmo] = require('./venmo-view');\n\nmodule.exports = result;\n\n},{\"../../constants\":189,\"./apple-pay-view\":252,\"./card-view\":254,\"./google-pay-view\":255,\"./paypal-credit-view\":257,\"./paypal-view\":258,\"./venmo-view\":259}],257:[function(require,module,exports){\n'use strict';\n\nvar assign = require('../../lib/assign').assign;\nvar paymentOptionIDs = require('../../constants').paymentOptionIDs;\nvar BasePayPalView = require('./base-paypal-view');\n\nfunction PayPalCreditView() {\n BasePayPalView.apply(this, arguments);\n\n this._isPayPalCredit = true;\n}\n\nPayPalCreditView.prototype = Object.create(BasePayPalView.prototype);\nPayPalCreditView.prototype.constructor = PayPalCreditView;\nPayPalCreditView.ID = PayPalCreditView.prototype.ID = paymentOptionIDs.paypalCredit;\n\nPayPalCreditView.isEnabled = function (options) {\n if (!options.merchantConfiguration.paypalCredit) {\n return Promise.resolve(false);\n }\n\n return BasePayPalView.isEnabled(assign({\n viewID: PayPalCreditView.ID\n }, options));\n};\nmodule.exports = PayPalCreditView;\n\n},{\"../../constants\":189,\"../../lib/assign\":195,\"./base-paypal-view\":253}],258:[function(require,module,exports){\n'use strict';\n\nvar assign = require('../../lib/assign').assign;\nvar paymentOptionIDs = require('../../constants').paymentOptionIDs;\nvar BasePayPalView = require('./base-paypal-view');\n\nfunction PayPalView() {\n BasePayPalView.apply(this, arguments);\n}\n\nPayPalView.prototype = Object.create(BasePayPalView.prototype);\nPayPalView.prototype.constructor = PayPalView;\nPayPalView.ID = PayPalView.prototype.ID = paymentOptionIDs.paypal;\n\nPayPalView.isEnabled = function (options) {\n if (!options.merchantConfiguration.paypal) {\n return Promise.resolve(false);\n }\n\n return BasePayPalView.isEnabled(assign({\n viewID: PayPalView.ID\n }, options));\n};\n\nmodule.exports = PayPalView;\n\n},{\"../../constants\":189,\"../../lib/assign\":195,\"./base-paypal-view\":253}],259:[function(require,module,exports){\n'use strict';\n\nvar assign = require('../../lib/assign').assign;\nvar BaseView = require('../base-view');\nvar btVenmo = require('braintree-web/venmo');\nvar DropinError = require('../../lib/dropin-error');\nvar paymentOptionIDs = require('../../constants').paymentOptionIDs;\n\nfunction VenmoView() {\n BaseView.apply(this, arguments);\n}\n\nVenmoView.prototype = Object.create(BaseView.prototype);\nVenmoView.prototype.constructor = VenmoView;\nVenmoView.ID = VenmoView.prototype.ID = paymentOptionIDs.venmo;\n\nVenmoView.prototype.initialize = function () {\n var self = this;\n var venmoConfiguration = assign({}, self.model.merchantConfiguration.venmo, {client: this.client});\n\n return btVenmo.create(venmoConfiguration).then(function (venmoInstance) {\n self.venmoInstance = venmoInstance;\n\n if (!self.venmoInstance.hasTokenizationResult()) {\n return Promise.resolve();\n }\n\n return self.venmoInstance.tokenize().then(function (payload) {\n self.model.reportAppSwitchPayload(payload);\n }).catch(function (err) {\n if (self._isIgnorableError(err)) {\n return;\n }\n self.model.reportAppSwitchError(paymentOptionIDs.venmo, err);\n });\n }).then(function () {\n var button = self.getElementById('venmo-button');\n\n button.addEventListener('click', function (event) {\n event.preventDefault();\n\n self.preventUserAction();\n\n return self.venmoInstance.tokenize().then(function (payload) {\n self.model.addPaymentMethod(payload);\n }).catch(function (tokenizeErr) {\n if (self._isIgnorableError(tokenizeErr)) {\n return;\n }\n\n self.model.reportError(tokenizeErr);\n }).then(function () {\n self.allowUserAction();\n });\n });\n\n self.model.asyncDependencyReady(VenmoView.ID);\n }).catch(function (err) {\n self.model.asyncDependencyFailed({\n view: self.ID,\n error: new DropinError(err)\n });\n });\n};\n\nVenmoView.prototype.requestPaymentMethod = function () {\n this.model.reportError('venmoButtonMustBeUsed');\n\n return BaseView.prototype.requestPaymentMethod.call(this);\n};\n\nVenmoView.prototype._isIgnorableError = function (error) {\n // customer cancels the flow in the app\n // we don't emit an error because the customer\n // initiated that action\n return error.code === 'VENMO_APP_CANCELED' || error.code === 'VENMO_DESKTOP_CANCELED';\n};\n\nVenmoView.isEnabled = function (options) {\n var gatewayConfiguration = options.client.getConfiguration().gatewayConfiguration;\n var venmoEnabled = gatewayConfiguration.payWithVenmo && Boolean(options.merchantConfiguration.venmo);\n\n if (!venmoEnabled) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(btVenmo.isBrowserSupported(options.merchantConfiguration.venmo));\n};\n\nmodule.exports = VenmoView;\n\n},{\"../../constants\":189,\"../../lib/assign\":195,\"../../lib/dropin-error\":199,\"../base-view\":246,\"braintree-web/venmo\":150}]},{},[192])(192)\n});\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n","// Generated file. Do not edit\nexport var StatusCodes;\n(function (StatusCodes) {\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.1\n *\n * This interim response indicates that everything so far is OK and that the client should continue with the request or ignore it if it is already finished.\n */\n StatusCodes[StatusCodes[\"CONTINUE\"] = 100] = \"CONTINUE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.2\n *\n * This code is sent in response to an Upgrade request header by the client, and indicates the protocol the server is switching too.\n */\n StatusCodes[StatusCodes[\"SWITCHING_PROTOCOLS\"] = 101] = \"SWITCHING_PROTOCOLS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.1\n *\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n */\n StatusCodes[StatusCodes[\"PROCESSING\"] = 102] = \"PROCESSING\";\n /**\n * Official Documentation @ https://www.rfc-editor.org/rfc/rfc8297#page-3\n *\n * This code indicates to the client that the server is likely to send a final response with the header fields included in the informational response.\n */\n StatusCodes[StatusCodes[\"EARLY_HINTS\"] = 103] = \"EARLY_HINTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.1\n *\n * The request has succeeded. The meaning of a success varies depending on the HTTP method:\n * GET: The resource has been fetched and is transmitted in the message body.\n * HEAD: The entity headers are in the message body.\n * POST: The resource describing the result of the action is transmitted in the message body.\n * TRACE: The message body contains the request message as received by the server\n */\n StatusCodes[StatusCodes[\"OK\"] = 200] = \"OK\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.2\n *\n * The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.\n */\n StatusCodes[StatusCodes[\"CREATED\"] = 201] = \"CREATED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.3\n *\n * The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.\n */\n StatusCodes[StatusCodes[\"ACCEPTED\"] = 202] = \"ACCEPTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.4\n *\n * This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.\n */\n StatusCodes[StatusCodes[\"NON_AUTHORITATIVE_INFORMATION\"] = 203] = \"NON_AUTHORITATIVE_INFORMATION\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.5\n *\n * There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.\n */\n StatusCodes[StatusCodes[\"NO_CONTENT\"] = 204] = \"NO_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.6\n *\n * This response code is sent after accomplishing request to tell user agent reset document view which sent this request.\n */\n StatusCodes[StatusCodes[\"RESET_CONTENT\"] = 205] = \"RESET_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.1\n *\n * This response code is used because of range header sent by the client to separate download into multiple streams.\n */\n StatusCodes[StatusCodes[\"PARTIAL_CONTENT\"] = 206] = \"PARTIAL_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.2\n *\n * A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.\n */\n StatusCodes[StatusCodes[\"MULTI_STATUS\"] = 207] = \"MULTI_STATUS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.1\n *\n * The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.\n */\n StatusCodes[StatusCodes[\"MULTIPLE_CHOICES\"] = 300] = \"MULTIPLE_CHOICES\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.2\n *\n * This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.\n */\n StatusCodes[StatusCodes[\"MOVED_PERMANENTLY\"] = 301] = \"MOVED_PERMANENTLY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.3\n *\n * This response code means that URI of requested resource has been changed temporarily. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.\n */\n StatusCodes[StatusCodes[\"MOVED_TEMPORARILY\"] = 302] = \"MOVED_TEMPORARILY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.4\n *\n * Server sent this response to directing client to get requested resource to another URI with an GET request.\n */\n StatusCodes[StatusCodes[\"SEE_OTHER\"] = 303] = \"SEE_OTHER\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.1\n *\n * This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.\n */\n StatusCodes[StatusCodes[\"NOT_MODIFIED\"] = 304] = \"NOT_MODIFIED\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6\n *\n * Was defined in a previous version of the HTTP specification to indicate that a requested response must be accessed by a proxy. It has been deprecated due to security concerns regarding in-band configuration of a proxy.\n */\n StatusCodes[StatusCodes[\"USE_PROXY\"] = 305] = \"USE_PROXY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.7\n *\n * Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"TEMPORARY_REDIRECT\"] = 307] = \"TEMPORARY_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7538#section-3\n *\n * This means that the resource is now permanently located at another URI, specified by the Location: HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"PERMANENT_REDIRECT\"] = 308] = \"PERMANENT_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.1\n *\n * This response means that server could not understand the request due to invalid syntax.\n */\n StatusCodes[StatusCodes[\"BAD_REQUEST\"] = 400] = \"BAD_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.1\n *\n * Although the HTTP standard specifies \"unauthorized\", semantically this response means \"unauthenticated\". That is, the client must authenticate itself to get the requested response.\n */\n StatusCodes[StatusCodes[\"UNAUTHORIZED\"] = 401] = \"UNAUTHORIZED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.2\n *\n * This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.\n */\n StatusCodes[StatusCodes[\"PAYMENT_REQUIRED\"] = 402] = \"PAYMENT_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.3\n *\n * The client does not have access rights to the content, i.e. they are unauthorized, so server is rejecting to give proper response. Unlike 401, the client's identity is known to the server.\n */\n StatusCodes[StatusCodes[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.4\n *\n * The server can not find requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client. This response code is probably the most famous one due to its frequent occurence on the web.\n */\n StatusCodes[StatusCodes[\"NOT_FOUND\"] = 404] = \"NOT_FOUND\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.5\n *\n * The request method is known by the server but has been disabled and cannot be used. For example, an API may forbid DELETE-ing a resource. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.\n */\n StatusCodes[StatusCodes[\"METHOD_NOT_ALLOWED\"] = 405] = \"METHOD_NOT_ALLOWED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.6\n *\n * This response is sent when the web server, after performing server-driven content negotiation, doesn't find any content following the criteria given by the user agent.\n */\n StatusCodes[StatusCodes[\"NOT_ACCEPTABLE\"] = 406] = \"NOT_ACCEPTABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.2\n *\n * This is similar to 401 but authentication is needed to be done by a proxy.\n */\n StatusCodes[StatusCodes[\"PROXY_AUTHENTICATION_REQUIRED\"] = 407] = \"PROXY_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.7\n *\n * This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up surfing. Also note that some servers merely shut down the connection without sending this message.\n */\n StatusCodes[StatusCodes[\"REQUEST_TIMEOUT\"] = 408] = \"REQUEST_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.8\n *\n * This response is sent when a request conflicts with the current state of the server.\n */\n StatusCodes[StatusCodes[\"CONFLICT\"] = 409] = \"CONFLICT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.9\n *\n * This response would be sent when the requested content has been permenantly deleted from server, with no forwarding address. Clients are expected to remove their caches and links to the resource. The HTTP specification intends this status code to be used for \"limited-time, promotional services\". APIs should not feel compelled to indicate resources that have been deleted with this status code.\n */\n StatusCodes[StatusCodes[\"GONE\"] = 410] = \"GONE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.10\n *\n * The server rejected the request because the Content-Length header field is not defined and the server requires it.\n */\n StatusCodes[StatusCodes[\"LENGTH_REQUIRED\"] = 411] = \"LENGTH_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.2\n *\n * The client has indicated preconditions in its headers which the server does not meet.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_FAILED\"] = 412] = \"PRECONDITION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.11\n *\n * Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.\n */\n StatusCodes[StatusCodes[\"REQUEST_TOO_LONG\"] = 413] = \"REQUEST_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.12\n *\n * The URI requested by the client is longer than the server is willing to interpret.\n */\n StatusCodes[StatusCodes[\"REQUEST_URI_TOO_LONG\"] = 414] = \"REQUEST_URI_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.13\n *\n * The media format of the requested data is not supported by the server, so the server is rejecting the request.\n */\n StatusCodes[StatusCodes[\"UNSUPPORTED_MEDIA_TYPE\"] = 415] = \"UNSUPPORTED_MEDIA_TYPE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.4\n *\n * The range specified by the Range header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.\n */\n StatusCodes[StatusCodes[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = 416] = \"REQUESTED_RANGE_NOT_SATISFIABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.14\n *\n * This response code means the expectation indicated by the Expect request header field can't be met by the server.\n */\n StatusCodes[StatusCodes[\"EXPECTATION_FAILED\"] = 417] = \"EXPECTATION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2324#section-2.3.2\n *\n * Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n */\n StatusCodes[StatusCodes[\"IM_A_TEAPOT\"] = 418] = \"IM_A_TEAPOT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The 507 (Insufficient Storage) status code means the method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request. This condition is considered to be temporary. If the request which received this status code was the result of a user action, the request MUST NOT be repeated until it is requested by a separate user action.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_SPACE_ON_RESOURCE\"] = 419] = \"INSUFFICIENT_SPACE_ON_RESOURCE\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt\n *\n * A deprecated response used by the Spring Framework when a method has failed.\n */\n StatusCodes[StatusCodes[\"METHOD_FAILURE\"] = 420] = \"METHOD_FAILURE\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2\n *\n * Defined in the specification of HTTP/2 to indicate that a server is not able to produce a response for the combination of scheme and authority that are included in the request URI.\n */\n StatusCodes[StatusCodes[\"MISDIRECTED_REQUEST\"] = 421] = \"MISDIRECTED_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.3\n *\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n StatusCodes[StatusCodes[\"UNPROCESSABLE_ENTITY\"] = 422] = \"UNPROCESSABLE_ENTITY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.4\n *\n * The resource that is being accessed is locked.\n */\n StatusCodes[StatusCodes[\"LOCKED\"] = 423] = \"LOCKED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.5\n *\n * The request failed due to failure of a previous request.\n */\n StatusCodes[StatusCodes[\"FAILED_DEPENDENCY\"] = 424] = \"FAILED_DEPENDENCY\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.15\n *\n * The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.\n */\n StatusCodes[StatusCodes[\"UPGRADE_REQUIRED\"] = 426] = \"UPGRADE_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-3\n *\n * The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_REQUIRED\"] = 428] = \"PRECONDITION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-4\n *\n * The user has sent too many requests in a given amount of time (\"rate limiting\").\n */\n StatusCodes[StatusCodes[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-5\n *\n * The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.\n */\n StatusCodes[StatusCodes[\"REQUEST_HEADER_FIELDS_TOO_LARGE\"] = 431] = \"REQUEST_HEADER_FIELDS_TOO_LARGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7725\n *\n * The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government.\n */\n StatusCodes[StatusCodes[\"UNAVAILABLE_FOR_LEGAL_REASONS\"] = 451] = \"UNAVAILABLE_FOR_LEGAL_REASONS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.1\n *\n * The server encountered an unexpected condition that prevented it from fulfilling the request.\n */\n StatusCodes[StatusCodes[\"INTERNAL_SERVER_ERROR\"] = 500] = \"INTERNAL_SERVER_ERROR\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.2\n *\n * The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.\n */\n StatusCodes[StatusCodes[\"NOT_IMPLEMENTED\"] = 501] = \"NOT_IMPLEMENTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.3\n *\n * This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.\n */\n StatusCodes[StatusCodes[\"BAD_GATEWAY\"] = 502] = \"BAD_GATEWAY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.4\n *\n * The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.\n */\n StatusCodes[StatusCodes[\"SERVICE_UNAVAILABLE\"] = 503] = \"SERVICE_UNAVAILABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.5\n *\n * This error response is given when the server is acting as a gateway and cannot get a response in time.\n */\n StatusCodes[StatusCodes[\"GATEWAY_TIMEOUT\"] = 504] = \"GATEWAY_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.6\n *\n * The HTTP version used in the request is not supported by the server.\n */\n StatusCodes[StatusCodes[\"HTTP_VERSION_NOT_SUPPORTED\"] = 505] = \"HTTP_VERSION_NOT_SUPPORTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_STORAGE\"] = 507] = \"INSUFFICIENT_STORAGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-6\n *\n * The 511 status code indicates that the client needs to authenticate to gain network access.\n */\n StatusCodes[StatusCodes[\"NETWORK_AUTHENTICATION_REQUIRED\"] = 511] = \"NETWORK_AUTHENTICATION_REQUIRED\";\n})(StatusCodes || (StatusCodes = {}));\n","var n=function(){return n=Object.assign||function(n){for(var t,i=1,e=arguments.length;i0?1:0)-(n<0?1:0)||+n}function f(n){var t=n.getBoundingClientRect();return{height:e(t.height,n.offsetHeight),width:e(t.width,n.offsetWidth)}}function p(n,t,i,e){var r=n&&n[t];return null==r?i:e&&\"function\"==typeof r?r():r}function v(n){return Math.round(1e6*n)/1e6}function h(n){var t,i,e,r,a,o;function u(t){o||(o=t),s(!0);var a=t-o;a>e&&(a=e);var l=r[i];if(l[3]0?1:-1),{abs:u+i*s*a,origin:o,rel:u}}function I(n,t,i){var e;if(t||!S())return A(n,i);if(!D(n))return null;var r=z(null!=i?i:T),a=r.abs,o=n-r.rel,u=a+o;e=A(u);var c=A(u-s*l(o));return(null!==c&&Math.abs(c)6&&(w=w.slice(-6)),T=v(t);var e=H().abs;if(e!==M){var a=null!==M;M=e,a&&n.emit(\"slideChanged\")}}function H(t){var r=t?null:function(){if(s){var n=S(),t=n?(T%e+e)%e:T,i=(n?T%e:T)-u[0][2],r=0-(i<0&&n?e-Math.abs(i):i),c=0,d=z(T),f=d.abs,p=d.rel,v=u[p][2],y=u.map((function(t,i){var a=r+c;(a<0-t[0]||a>1)&&(a+=(Math.abs(a)>e-1&&n?e:0)*l(-a));var u=i-p,d=l(u),h=u+f;n&&(-1===d&&a>v&&(h+=s),1===d&&ab&&(a-=e));var m=a+t[0]+t[1],x=Math.max(a>=0&&m<=1?1:m<0||a>1?0:a<0?Math.min(1,(t[0]+a)/t[0]):(1-a)/t[0],0);return c+=t[0]+t[1],{abs:h,distance:o.rtl?-1*a+1-t[0]:a,portion:x,size:t[0]}}));return f=L(f),p=O(f),{abs:L(f),length:a,max:k,maxIdx:m,min:x,minIdx:h,position:T,progress:n?t/e:T/a,rel:p,slides:y,slidesLength:e}}}();return i.details=r,n.emit(\"detailsChanged\"),r}return i={absToRel:O,add:C,details:null,distToIdx:E,idxToDist:I,init:function(t){if(function(){if(o=n.options,u=(o.trackConfig||[]).map((function(n){return[p(n,\"size\",1),p(n,\"spacing\",0),p(n,\"origin\",0)]})),s=u.length){e=v(u.reduce((function(n,t){return n+t[0]+t[1]}),0));var t,i=s-1;a=v(e+u[0][2]-u[i][0]-u[i][2]-u[i][1]),c=u.reduce((function(n,i){if(!n)return[0];var e=u[n.length-1],r=n[n.length-1]+(e[0]+e[2])+e[1];return r-=i[2],n[n.length-1]>r&&(r=n[n.length-1]),r=v(r),n.push(r),(!t||t200||(l(e)!==l(t.distance)&&t.distance&&(t={distance:0,lastTimestamp:0,time:0}),t.time&&(t.distance+=e),t.lastTimestamp&&(t.time+=r-t.lastTimestamp),t.lastTimestamp=r),t}),{distance:0,lastTimestamp:0,time:0});return t.distance/t.time||0}}}function g(n){var t,i,e,r,a,o,u,s;function c(n){return 2*n}function f(n){return d(n,u,s)}function p(n){return 1-Math.pow(1-n,3)}function v(){return e?n.track.velocity():0}function h(){b();var t=\"free-snap\"===n.options.mode,i=n.track,e=v();r=l(e);var u=n.track.details,s=[];if(e||!t){var d=m(e),h=d.dist,g=d.dur;if(g=c(g),h*=r,t){var x=i.idxToDist(i.distToIdx(h),!0);x&&(h=x)}s.push({distance:h,duration:g,easing:p});var k=u.position,y=k+h;if(yo){var w=yo||u=M)return t;if(u0||u>T&&i<0)return t;var c=(uM&&x0||x===T&&i<0)&&s(t),g+=c,!b&&Math.abs(g*r)>5&&(b=!0),n.track.add(c),m=o,n.emit(\"dragged\")}}function z(t){!f&&n.track.details&&n.track.details.length&&(g=0,f=!0,b=!1,h=!0,v=t.id,A(t),m=D(t),n.emit(\"dragStarted\"))}function I(t){f&&v===t.idChanged&&(f=!1,n.emit(\"dragEnded\"))}function A(n){var t=L(),i=t?n.y:n.x,e=t?n.x:n.y,r=void 0!==x&&void 0!==k&&Math.abs(k-e)<=Math.abs(x-i);return x=i,k=e,r}function D(n){return L()?n.y:n.x}function L(){return n.options.vertical}function S(){r=n.size,a=L()?window.innerHeight:window.innerWidth;var t=n.track.details;t&&(M=t.min,T=t.max)}function O(n){b&&(s(n),u(n))}function _(){if(C.purge(),n.options.drag&&!n.options.disabled){var i;i=n.options.dragSpeed||1,p=\"function\"==typeof i?i:function(n){return n*i},e=n.options.rtl?-1:1,S(),t=n.container,function(){var n=\"data-keen-slider-clickable\";o(\"[\".concat(n,\"]:not([\").concat(n,\"=false])\"),t).map((function(n){C.add(n,\"dragstart\",s),C.add(n,\"mousedown\",s),C.add(n,\"touchstart\",s)}))}(),C.add(t,\"dragstart\",(function(n){u(n)})),C.add(t,\"click\",O,{capture:!0}),C.input(t,\"ksDragStart\",z),C.input(t,\"ksDrag\",E),C.input(t,\"ksDragEnd\",I),C.input(t,\"mousedown\",z),C.input(t,\"mousemove\",E),C.input(t,\"mouseleave\",I),C.input(t,\"mouseup\",I),C.input(t,\"touchstart\",z,{passive:!0}),C.input(t,\"touchmove\",E,{passive:!1}),C.input(t,\"touchend\",I),C.input(t,\"touchcancel\",I),C.add(window,\"wheel\",(function(n){f&&u(n)}));var r=\"data-keen-slider-scrollable\";o(\"[\".concat(r,\"]:not([\").concat(r,\"=false])\"),n.container).map((function(n){return function(n){var t;C.input(n,\"touchstart\",(function(n){t=D(n),w=!0,y=!0}),{passive:!0}),C.input(n,\"touchmove\",(function(i){var e=L(),r=e?n.scrollHeight-n.clientHeight:n.scrollWidth-n.clientWidth,a=t-D(i),o=e?n.scrollTop:n.scrollLeft,s=e&&\"scroll\"===n.style.overflowY||!e&&\"scroll\"===n.style.overflowX;if(t=D(i),(a<0&&o>0||a>0&&o=1||(n.origin=1-t-(d>1?0:1-d)),n}))}e.options.trackConfig=a}function E(){I();var n=e.size;e.options.disabled||n===u||(u=n,T())}function z(){E(),setTimeout(E,500),setTimeout(E,2e3)}function I(){var n=f(e.container);e.size=(e.options.vertical?n.height:n.width)||1}function A(){e.slides=o(e.options.selector,e.container)}e.container=(v=o(t,l||document)).length?v[0]:null,e.destroy=function(){h.purge(),e.emit(\"destroyed\"),m(!0)},e.prev=function(){e.moveToIdx(e.track.details.abs-1,!0)},e.next=function(){e.moveToIdx(e.track.details.abs+1,!0)},e.update=T,y(e.options)}}var y=function(n,i,e){try{return function(n,t){var i,e={};return i={emit:function(n){e[n]&&e[n].forEach((function(n){n(i)}));var t=i.options&&i.options[n];t&&t(i)},moveToIdx:function(n,t,e){var r=i.track.idxToDist(n,t);if(r){var a=i.options.defaultAnimation;i.animator.start([{distance:r,duration:p(e||a,\"duration\",500),easing:p(e||a,\"easing\",(function(n){return 1+--n*n*n*n*n}))}])}},on:function(n,t,i){void 0===i&&(i=!1),e[n]||(e[n]=[]);var r=e[n].indexOf(t);r>-1?i&&delete e[n][r]:i||e[n].push(t)},options:n},function(){if(i.track=m(i),i.animator=h(i),t)for(var n=0,e=t;n\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** Create a metareducer that sends data to LogRocket */\nfunction createMetaReducer(\n/** LogRocket instance, after calling init() */\nlogrocket, \n/** Sanitizer options, same as LogRocket.reduxMiddleware */\noptions) {\n var reduxMiddleware = logrocket.reduxMiddleware(options);\n var currentState;\n var store;\n // return a metareducer\n return function (reducer) {\n return function (state, action) {\n var newState = reducer(state, action);\n currentState = state;\n if (!store) {\n store = reduxMiddleware({\n getState: function () { return currentState; },\n });\n }\n store(function () { return newState; })(action);\n return newState;\n };\n };\n}\nexports.default = createMetaReducer;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/createClass.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/defineProperty.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/interopRequireWildcard.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/iterableToArray.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/nonIterableSpread.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!\n \\*****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ \"./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\");\n\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ \"./node_modules/@babel/runtime/helpers/iterableToArray.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ \"./node_modules/@babel/runtime/helpers/nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/typeof.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/console/src/index.js\":\n/*!**************************************************!*\\\n !*** ./packages/@logrocket/console/src/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _registerConsole = _interopRequireDefault(__webpack_require__(/*! ./registerConsole */ \"./packages/@logrocket/console/src/registerConsole.js\"));\n\nvar _default = _registerConsole.default;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/console/src/registerConsole.js\":\n/*!************************************************************!*\\\n !*** ./packages/@logrocket/console/src/registerConsole.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = registerConsole;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\"));\n\nvar _enhanceFunc = _interopRequireDefault(__webpack_require__(/*! @logrocket/utils/src/enhanceFunc */ \"./packages/@logrocket/utils/src/enhanceFunc.js\"));\n\nvar _exceptions = __webpack_require__(/*! @logrocket/exceptions */ \"./packages/@logrocket/exceptions/src/index.js\");\n\n// eslint-disable-line no-restricted-imports\nfunction registerConsole(logger) {\n var unsubFunctions = [];\n var methods = ['log', 'warn', 'info', 'error', 'debug'];\n methods.forEach(function (method) {\n unsubFunctions.push((0, _enhanceFunc.default)(console, method, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logger.addEvent('lr.core.LogEvent', function () {\n var consoleOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var isEnabled = consoleOptions.isEnabled;\n\n if ((0, _typeof2.default)(isEnabled) === 'object' && isEnabled[method] === false || isEnabled === false) {\n return null;\n }\n\n if (method === 'error' && consoleOptions.shouldAggregateConsoleErrors) {\n _exceptions.Capture.captureMessage(logger, args[0], args, {}, true);\n }\n\n return {\n logLevel: method.toUpperCase(),\n args: args\n };\n });\n }));\n });\n return function () {\n unsubFunctions.forEach(function (unsubFunction) {\n return unsubFunction();\n });\n };\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/exceptions/src/Capture.js\":\n/*!*******************************************************!*\\\n !*** ./packages/@logrocket/exceptions/src/Capture.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.captureMessage = captureMessage;\nexports.captureException = captureException;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\"));\n\nvar _TraceKit = _interopRequireDefault(__webpack_require__(/*! @logrocket/utils/src/TraceKit */ \"./packages/@logrocket/utils/src/TraceKit.js\"));\n\nvar _stackTraceFromError = _interopRequireDefault(__webpack_require__(/*! ./stackTraceFromError */ \"./packages/@logrocket/exceptions/src/stackTraceFromError.js\"));\n\n/* eslint-disable no-param-reassign */\n// eslint-disable-line no-restricted-imports\nfunction isScalar(value) {\n return /boolean|number|string/.test((0, _typeof2.default)(value));\n}\n\nfunction scrub(data, options) {\n if (options) {\n var optionalScalars = [// Valid values for 'level' are 'fatal', 'error', 'warning', 'info',\n // and 'debug'. Defaults to 'error'.\n 'level', 'logger'];\n\n for (var _i = 0, _optionalScalars = optionalScalars; _i < _optionalScalars.length; _i++) {\n var field = _optionalScalars[_i];\n var value = options[field];\n\n if (isScalar(value)) {\n data[field] = value.toString();\n }\n }\n\n var optionalMaps = ['tags', 'extra'];\n\n for (var _i2 = 0, _optionalMaps = optionalMaps; _i2 < _optionalMaps.length; _i2++) {\n var _field = _optionalMaps[_i2];\n var dirty = options[_field] || {};\n var scrubbed = {};\n\n for (var _i3 = 0, _Object$keys = Object.keys(dirty); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n var _value = dirty[key];\n\n if (isScalar(_value)) {\n scrubbed[key.toString()] = _value.toString();\n }\n }\n\n data[_field] = scrubbed;\n }\n }\n}\n\nfunction captureMessage(logger, message, messageArgs) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var isConsole = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var data = {\n exceptionType: isConsole ? 'CONSOLE' : 'MESSAGE',\n message: message,\n messageArgs: messageArgs,\n browserHref: window.location ? window.location.href : ''\n };\n scrub(data, options);\n logger.addEvent('lr.core.Exception', function () {\n return data;\n });\n}\n\nfunction captureException(logger, exception) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var preppedTrace = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var trace = preppedTrace || _TraceKit.default.computeStackTrace(exception);\n\n var data = {\n exceptionType: 'WINDOW',\n errorType: trace.name,\n message: trace.message,\n browserHref: window.location ? window.location.href : ''\n };\n scrub(data, options);\n var addEventOptions = {\n _stackTrace: (0, _stackTraceFromError.default)(trace)\n };\n logger.addEvent('lr.core.Exception', function () {\n return data;\n }, addEventOptions);\n}\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/exceptions/src/index.js\":\n/*!*****************************************************!*\\\n !*** ./packages/@logrocket/exceptions/src/index.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"registerExceptions\", {\n enumerable: true,\n get: function get() {\n return _registerExceptions.default;\n }\n});\nexports.Capture = void 0;\n\nvar _registerExceptions = _interopRequireDefault(__webpack_require__(/*! ./registerExceptions */ \"./packages/@logrocket/exceptions/src/registerExceptions.js\"));\n\nvar Capture = _interopRequireWildcard(__webpack_require__(/*! ./Capture */ \"./packages/@logrocket/exceptions/src/Capture.js\"));\n\nexports.Capture = Capture;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/exceptions/src/raven/raven.js\":\n/*!***********************************************************!*\\\n !*** ./packages/@logrocket/exceptions/src/raven/raven.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _TraceKit = _interopRequireDefault(__webpack_require__(/*! @logrocket/utils/src/TraceKit */ \"./packages/@logrocket/utils/src/TraceKit.js\"));\n\n/* eslint-disable */\n\n/*\nSome contents of this file were originaly from raven-js, BSD-2 Clause\n\nCopyright (c) 2018 Sentry (https://sentry.io) and individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar objectPrototype = Object.prototype;\n\nfunction isUndefined(what) {\n return what === void 0;\n}\n\nfunction isFunction(what) {\n return typeof what === 'function';\n}\n\nfunction each(obj, callback) {\n var i, j;\n\n if (isUndefined(obj.length)) {\n for (i in obj) {\n if (hasKey(obj, i)) {\n callback.call(null, i, obj[i]);\n }\n }\n } else {\n j = obj.length;\n\n if (j) {\n for (i = 0; i < j; i++) {\n callback.call(null, i, obj[i]);\n }\n }\n }\n}\n/**\n * hasKey, a better form of hasOwnProperty\n * Example: hasKey(MainHostObject, property) === true/false\n *\n * @param {Object} host object to check property\n * @param {string} key to check\n */\n\n\nfunction hasKey(object, key) {\n return objectPrototype.hasOwnProperty.call(object, key);\n}\n/**\n * Polyfill a method\n * @param obj object e.g. `document`\n * @param name method name present on object e.g. `addEventListener`\n * @param replacement replacement function\n * @param track {optional} record instrumentation to an array\n */\n\n\nfunction fill(obj, name, replacement, track) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n\n if (track) {\n track.push([obj, name, orig]);\n }\n}\n\nvar _window = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar _document = _window.document;\n\nvar Handler = /*#__PURE__*/function () {\n function Handler(_ref) {\n var captureException = _ref.captureException;\n (0, _classCallCheck2.default)(this, Handler);\n this._errorHandler = this._errorHandler.bind(this);\n this._ignoreOnError = 0;\n this._wrappedBuiltIns = [];\n this.captureException = captureException;\n\n _TraceKit.default.report.subscribe(this._errorHandler);\n\n this._instrumentTryCatch();\n }\n\n (0, _createClass2.default)(Handler, [{\n key: \"uninstall\",\n value: function uninstall() {\n _TraceKit.default.report.unsubscribe(this._errorHandler); // restore any wrapped builtins\n\n\n var builtin;\n\n while (this._wrappedBuiltIns.length) {\n builtin = this._wrappedBuiltIns.shift();\n var obj = builtin[0],\n name = builtin[1],\n orig = builtin[2];\n obj[name] = orig;\n }\n }\n }, {\n key: \"_errorHandler\",\n value: function _errorHandler(report) {\n if (!this._ignoreOnError) {\n this.captureException(report);\n }\n }\n }, {\n key: \"_ignoreNextOnError\",\n value: function _ignoreNextOnError() {\n var _this = this;\n\n this._ignoreOnError += 1;\n setTimeout(function () {\n // onerror should trigger before setTimeout\n _this._ignoreOnError -= 1;\n });\n }\n /*\n * Wrap code within a context so Handler can capture errors\n * reliably across domains that is executed immediately.\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The callback to be immediately executed within the context\n * @param {array} args An array of arguments to be called with the callback [optional]\n */\n\n }, {\n key: \"context\",\n value: function context(options, func, args) {\n if (isFunction(options)) {\n args = func || [];\n func = options;\n options = undefined;\n }\n\n return this.wrap(options, func).apply(this, args);\n }\n }, {\n key: \"wrap\",\n value:\n /*\n * Wrap code within a context and returns back a new function to be executed\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The function to be wrapped in a new context\n * @param {function} func A function to call before the try/catch wrapper [optional, private]\n * @return {function} The newly wrapped functions with a context\n */\n function wrap(options, func, _before) {\n var self = this; // 1 argument has been passed, and it's not a function\n // so just return it\n\n if (isUndefined(func) && !isFunction(options)) {\n return options;\n } // options is optional\n\n\n if (isFunction(options)) {\n func = options;\n options = undefined;\n } // At this point, we've passed along 2 arguments, and the second one\n // is not a function either, so we'll just return the second argument.\n\n\n if (!isFunction(func)) {\n return func;\n } // We don't wanna wrap it twice!\n\n\n try {\n if (func.__lr__) {\n return func;\n } // If this has already been wrapped in the past, return that\n\n\n if (func.__lr_wrapper__) {\n return func.__lr_wrapper__;\n } // If func is not extensible, return the function as-is to prevent TypeErrors\n // when trying to add new props & to assure immutable funcs aren't changed\n\n\n if (!Object.isExtensible(func)) {\n return func;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see lr-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return func;\n }\n\n function wrapped() {\n var args = [],\n i = arguments.length,\n deep = !options || options && options.deep !== false;\n\n if (_before && isFunction(_before)) {\n _before.apply(this, arguments);\n } // Recursively wrap all of a function's arguments that are\n // functions themselves.\n\n\n while (i--) {\n args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n }\n\n try {\n // Attempt to invoke user-land function. This is part of the LogRocket SDK.\n // If you're seeing this frame in a stack trace, it means that LogRocket caught\n // an unhandled error thrown by your application code, reported it, then bubbled\n // it up. This is expected behavior and is not a bug with LogRocket.\n return func.apply(this, args);\n } catch (e) {\n self._ignoreNextOnError();\n\n self.captureException(_TraceKit.default.computeStackTrace(e), options);\n throw e;\n }\n } // copy over properties of the old function\n\n\n for (var property in func) {\n if (hasKey(func, property)) {\n wrapped[property] = func[property];\n }\n }\n\n wrapped.prototype = func.prototype;\n func.__lr_wrapper__ = wrapped; // Signal that this function has been wrapped already\n // for both debugging and to prevent it to being wrapped twice\n\n wrapped.__lr__ = true;\n wrapped.__inner__ = func;\n return wrapped;\n }\n }, {\n key: \"_instrumentTryCatch\",\n value:\n /**\n * Install any queued plugins\n */\n function _instrumentTryCatch() {\n var self = this;\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapTimeFn(orig) {\n return function (fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n\n var originalCallback = args[0];\n\n if (isFunction(originalCallback)) {\n args[0] = self.wrap(originalCallback);\n } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also supports only two arguments and doesn't care what this is, so we\n // can just call the original function directly.\n\n\n if (orig.apply) {\n return orig.apply(this, args);\n } else {\n return orig(args[0], args[1]);\n }\n };\n }\n\n function wrapEventTarget(global) {\n var proto = _window[global] && _window[global].prototype;\n\n if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n fill(proto, 'addEventListener', function (orig) {\n return function (evtName, fn, capture, secure) {\n // preserve arity\n try {\n if (fn && fn.handleEvent) {\n fn.handleEvent = self.wrap(fn.handleEvent);\n }\n } catch (err) {// can sometimes get 'Permission denied to access property \"handle Event'\n } // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n // so that we don't have more than one wrapper function\n\n\n var before;\n return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure);\n };\n }, wrappedBuiltIns);\n fill(proto, 'removeEventListener', function (orig) {\n return function (evt, fn, capture, secure) {\n try {\n fn = fn && (fn.__lr_wrapper__ ? fn.__lr_wrapper__ : fn);\n } catch (e) {// ignore, accessing __lr_wrapper__ will throw in some Selenium environments\n }\n\n return orig.call(this, evt, fn, capture, secure);\n };\n }, wrappedBuiltIns);\n }\n }\n\n fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n\n if (_window.requestAnimationFrame) {\n fill(_window, 'requestAnimationFrame', function (orig) {\n return function (cb) {\n return orig(self.wrap(cb));\n };\n }, wrappedBuiltIns);\n } // event targets borrowed from bugsnag-js:\n // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n\n\n var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'];\n\n for (var i = 0; i < eventTargets.length; i++) {\n wrapEventTarget(eventTargets[i]);\n }\n\n var $ = _window.jQuery || _window.$;\n\n if ($ && $.fn && $.fn.ready) {\n fill($.fn, 'ready', function (orig) {\n return function (fn) {\n return orig.call(this, self.wrap(fn));\n };\n }, wrappedBuiltIns);\n }\n }\n }]);\n return Handler;\n}();\n\nexports.default = Handler;\n;\nmodule.exports = exports.default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../node_modules/webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/exceptions/src/registerExceptions.js\":\n/*!******************************************************************!*\\\n !*** ./packages/@logrocket/exceptions/src/registerExceptions.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = registerCore;\n\nvar _raven = _interopRequireDefault(__webpack_require__(/*! ./raven/raven */ \"./packages/@logrocket/exceptions/src/raven/raven.js\"));\n\nvar Capture = _interopRequireWildcard(__webpack_require__(/*! ./Capture */ \"./packages/@logrocket/exceptions/src/Capture.js\"));\n\nfunction registerCore(logger) {\n var raven = new _raven.default({\n captureException: function captureException(errorReport) {\n Capture.captureException(logger, null, null, errorReport);\n }\n });\n\n var rejectionHandler = function rejectionHandler(evt) {\n // http://2ality.com/2016/04/unhandled-rejections.html\n logger.addEvent('lr.core.Exception', function () {\n return {\n exceptionType: 'UNHANDLED_REJECTION',\n message: evt.reason || 'Unhandled Promise rejection'\n };\n });\n };\n\n window.addEventListener('unhandledrejection', rejectionHandler);\n return function () {\n window.removeEventListener('unhandledrejection', rejectionHandler);\n raven.uninstall();\n };\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/exceptions/src/stackTraceFromError.js\":\n/*!*******************************************************************!*\\\n !*** ./packages/@logrocket/exceptions/src/stackTraceFromError.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stackTraceFromError;\n\nfunction stackTraceFromError(errorReport) {\n function makeNotNull(val) {\n return val === null ? undefined : val;\n }\n\n return errorReport.stack ? errorReport.stack.map(function (frame) {\n return {\n lineNumber: makeNotNull(frame.line),\n columnNumber: makeNotNull(frame.column),\n fileName: makeNotNull(frame.url),\n functionName: makeNotNull(frame.func)\n };\n }) : undefined;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/network/src/fetchIntercept.js\":\n/*!***********************************************************!*\\\n !*** ./packages/@logrocket/network/src/fetchIntercept.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\"));\n\nvar _registerXHR = __webpack_require__(/*! ./registerXHR */ \"./packages/@logrocket/network/src/registerXHR.js\");\n\nvar interceptors = [];\n\nfunction makeInterceptor(fetch, fetchId) {\n var reversedInterceptors = interceptors.reduce(function (array, interceptor) {\n return [interceptor].concat(array);\n }, []); // if a browser supports fetch, it supports promise\n // eslint-disable-next-line compat/compat\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var promise = Promise.resolve(args); // Register request interceptors\n\n reversedInterceptors.forEach(function (_ref) {\n var request = _ref.request,\n requestError = _ref.requestError;\n\n if (request || requestError) {\n promise = promise.then(function (args) {\n return request.apply(void 0, [fetchId].concat((0, _toConsumableArray2.default)(args)));\n }, function (args) {\n return requestError.apply(void 0, [fetchId].concat((0, _toConsumableArray2.default)(args)));\n });\n }\n });\n promise = promise.then(function (args) {\n (0, _registerXHR.setActive)(false);\n var res;\n var err;\n\n try {\n res = fetch.apply(void 0, (0, _toConsumableArray2.default)(args));\n } catch (_err) {\n err = _err;\n }\n\n (0, _registerXHR.setActive)(true);\n\n if (err) {\n throw err;\n }\n\n return res;\n });\n reversedInterceptors.forEach(function (_ref2) {\n var response = _ref2.response,\n responseError = _ref2.responseError;\n\n if (response || responseError) {\n promise = promise.then(function (res) {\n return response(fetchId, res);\n }, function (err) {\n return responseError && responseError(fetchId, err);\n });\n }\n });\n return promise;\n}\n\nfunction attach(env) {\n if (!env.fetch || !env.Promise) {\n // Make sure fetch is available in the given environment. If it's not, then\n // default to using XHR intercept.\n return;\n }\n\n var isPolyfill = env.fetch.polyfill; // eslint-disable-next-line no-param-reassign\n\n env.fetch = function (fetch) {\n var fetchId = 0;\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return makeInterceptor.apply(void 0, [fetch, fetchId++].concat(args));\n };\n }(env.fetch); // Forward the polyfill properly from fetch (set by github/whatwg-fetch).\n\n\n if (isPolyfill) {\n // eslint-disable-next-line no-param-reassign\n env.fetch.polyfill = isPolyfill;\n }\n} // TODO: React Native\n// attach(global);\n\n\nvar didAttach = false;\nvar _default = {\n register: function register(interceptor) {\n if (!didAttach) {\n didAttach = true;\n attach(window);\n }\n\n interceptors.push(interceptor);\n return function () {\n var index = interceptors.indexOf(interceptor);\n\n if (index >= 0) {\n interceptors.splice(index, 1);\n }\n };\n },\n clear: function clear() {\n interceptors = [];\n }\n};\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/network/src/index.js\":\n/*!**************************************************!*\\\n !*** ./packages/@logrocket/network/src/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = registerNetwork;\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\"));\n\nvar _registerFetch = _interopRequireDefault(__webpack_require__(/*! ./registerFetch */ \"./packages/@logrocket/network/src/registerFetch.js\"));\n\nvar _registerNetworkInformation = _interopRequireDefault(__webpack_require__(/*! ./registerNetworkInformation */ \"./packages/@logrocket/network/src/registerNetworkInformation.js\"));\n\nvar _registerXHR = _interopRequireDefault(__webpack_require__(/*! ./registerXHR */ \"./packages/@logrocket/network/src/registerXHR.js\"));\n\nvar _mapValues = _interopRequireDefault(__webpack_require__(/*! @logrocket/utils/src/mapValues */ \"./packages/@logrocket/utils/src/mapValues.js\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n// eslint-disable-line no-restricted-imports\nfunction registerNetwork(logger) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n isReactNative: false\n };\n var isReactNative = config.isReactNative,\n shouldAugmentNPS = config.shouldAugmentNPS,\n shouldParseXHRBlob = config.shouldParseXHRBlob;\n var ignoredNetwork = {}; // truncate if > 4MB in size\n\n var truncate = function truncate(data) {\n var limit = 1024 * 1000 * 4;\n var str = data;\n\n if ((0, _typeof2.default)(data) === 'object' && data != null) {\n var proto = Object.getPrototypeOf(data);\n\n if (proto === Object.prototype || proto === null) {\n // plain object - jsonify for the size check\n str = JSON.stringify(data);\n }\n }\n\n if (str && str.length && str.length > limit && typeof str === 'string') {\n var beginning = str.substring(0, 1000);\n return \"\".concat(beginning, \" ... LogRocket truncating to first 1000 characters.\\n Keep data under 4MB to prevent truncation. https://docs.logrocket.com/reference#network\");\n }\n\n return data;\n };\n\n var addRequest = function addRequest(reqId, request) {\n var method = request.method;\n logger.addEvent('lr.network.RequestEvent', function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$isEnabled = _ref.isEnabled,\n isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,\n _ref$requestSanitizer = _ref.requestSanitizer,\n requestSanitizer = _ref$requestSanitizer === void 0 ? function (f) {\n return f;\n } : _ref$requestSanitizer;\n\n if (!isEnabled) {\n return null;\n }\n\n var sanitized = null;\n\n try {\n // only try catch user defined functions\n sanitized = requestSanitizer(_objectSpread(_objectSpread({}, request), {}, {\n reqId: reqId\n }));\n } catch (err) {\n console.error(err);\n }\n\n if (sanitized) {\n var url = sanitized.url;\n\n if (typeof document !== 'undefined' && typeof document.createElement === 'function') {\n // Writing and then reading from an a tag turns a relative\n // url into an absolute one.\n var a = document.createElement('a');\n a.href = sanitized.url;\n url = a.href;\n }\n\n return {\n reqId: reqId,\n // default\n url: url,\n // sanitized\n headers: (0, _mapValues.default)(sanitized.headers, function (headerValue) {\n // sanitized\n return \"\".concat(headerValue);\n }),\n body: truncate(sanitized.body),\n // sanitized\n method: method,\n // default\n referrer: sanitized.referrer || undefined,\n // sanitized\n mode: sanitized.mode || undefined,\n // sanitized\n credentials: sanitized.credentials || undefined // sanitized\n\n };\n }\n\n ignoredNetwork[reqId] = true;\n return null;\n });\n };\n\n var addResponse = function addResponse(reqId, response) {\n var method = response.method,\n status = response.status;\n logger.addEvent('lr.network.ResponseEvent', function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$isEnabled = _ref2.isEnabled,\n isEnabled = _ref2$isEnabled === void 0 ? true : _ref2$isEnabled,\n _ref2$responseSanitiz = _ref2.responseSanitizer,\n responseSanitizer = _ref2$responseSanitiz === void 0 ? function (f) {\n return f;\n } : _ref2$responseSanitiz;\n\n if (!isEnabled) {\n return null;\n } else if (ignoredNetwork[reqId]) {\n delete ignoredNetwork[reqId];\n return null;\n }\n\n var sanitized = null;\n\n try {\n // only try catch user defined functions\n sanitized = responseSanitizer(_objectSpread(_objectSpread({}, response), {}, {\n reqId: reqId\n }));\n } catch (err) {\n console.error(err); // fall through to redacted log\n }\n\n if (sanitized) {\n return {\n reqId: reqId,\n // default\n status: sanitized.status,\n // sanitized\n headers: (0, _mapValues.default)(sanitized.headers, function (headerValue) {\n // sanitized\n return \"\".concat(headerValue);\n }),\n body: truncate(sanitized.body),\n // sanitized\n method: method // default\n\n };\n }\n\n return {\n reqId: reqId,\n // default\n status: status,\n // default\n headers: {},\n // redacted\n body: null,\n // redacted\n method: method // default\n\n };\n });\n };\n\n var isIgnored = function isIgnored(reqId) {\n return logger.isDisabled || ignoredNetwork[reqId] === true;\n };\n\n var unsubFetch = (0, _registerFetch.default)({\n addRequest: addRequest,\n addResponse: addResponse,\n isIgnored: isIgnored\n });\n var unsubXHR = (0, _registerXHR.default)({\n addRequest: addRequest,\n addResponse: addResponse,\n isIgnored: isIgnored,\n logger: logger,\n shouldAugmentNPS: shouldAugmentNPS,\n shouldParseXHRBlob: shouldParseXHRBlob\n });\n var unsubNetworkInformation = isReactNative ? function () {} : (0, _registerNetworkInformation.default)(logger);\n return function () {\n unsubNetworkInformation();\n unsubFetch();\n unsubXHR();\n };\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/network/src/registerFetch.js\":\n/*!**********************************************************!*\\\n !*** ./packages/@logrocket/network/src/registerFetch.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = registerFetch;\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _mapValues = _interopRequireDefault(__webpack_require__(/*! @logrocket/utils/src/mapValues */ \"./packages/@logrocket/utils/src/mapValues.js\"));\n\nvar _fetchIntercept = _interopRequireDefault(__webpack_require__(/*! ./fetchIntercept */ \"./packages/@logrocket/network/src/fetchIntercept.js\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction makeObjectFromHeaders(headers) {\n // If using real fetch, we must stringify the Headers object.\n if (headers == null || typeof headers.forEach !== 'function') {\n return headers;\n }\n\n var result = {};\n headers.forEach(function (value, key) {\n if (result[key]) {\n result[key] = \"\".concat(result[key], \",\").concat(value);\n } else {\n result[key] = \"\".concat(value);\n }\n });\n return result;\n} // XHR specification is unclear of what types to allow in value so using toString method for now\n\n\nvar stringifyHeaders = function stringifyHeaders(headers) {\n return (0, _mapValues.default)(makeObjectFromHeaders(headers), function (value) {\n return \"\".concat(value);\n });\n};\n\nfunction pluckFetchFields() {\n var arg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n url: arg.url,\n headers: stringifyHeaders(arg.headers),\n method: arg.method && arg.method.toUpperCase(),\n referrer: arg.referrer || undefined,\n mode: arg.mode || undefined,\n credentials: arg.credentials || undefined\n };\n}\n\nfunction registerFetch(_ref) {\n var addRequest = _ref.addRequest,\n addResponse = _ref.addResponse,\n isIgnored = _ref.isIgnored;\n var LOGROCKET_FETCH_LABEL = 'fetch-';\n var fetchMethodMap = {};\n\n var unregister = _fetchIntercept.default.register({\n request: function request(fetchId) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var p;\n\n if (typeof Request !== 'undefined' && args[0] instanceof Request) {\n var clonedText; // Request.clone() and Request.text() may throw in Safari (e.g., when\n // request body contains FormData)\n\n try {\n clonedText = args[0].clone().text();\n } catch (err) {\n // if a browser supports fetch, it supports promise\n // eslint-disable-next-line compat/compat\n clonedText = Promise.resolve(\"LogRocket fetch error: \".concat(err.message));\n }\n\n p = clonedText.then(function (body) {\n return _objectSpread(_objectSpread({}, pluckFetchFields(args[0])), {}, {\n body: body\n });\n }, function (err) {\n return _objectSpread(_objectSpread({}, pluckFetchFields(args[0])), {}, {\n body: \"LogRocket fetch error: \".concat(err.message)\n });\n });\n } else {\n // if a browser supports fetch, it supports promise\n // eslint-disable-next-line compat/compat\n p = Promise.resolve(_objectSpread(_objectSpread({}, pluckFetchFields(args[1])), {}, {\n url: \"\".concat(args[0]),\n body: (args[1] || {}).body\n }));\n }\n\n return p.then(function (req) {\n fetchMethodMap[fetchId] = req.method;\n addRequest(\"\".concat(LOGROCKET_FETCH_LABEL).concat(fetchId), req);\n return args;\n });\n },\n requestError: function requestError(fetchId, error) {\n // if a browser supports fetch, it supports promise\n // eslint-disable-next-line compat/compat\n return Promise.reject(error);\n },\n response: function response(fetchId, _response) {\n var responseClone;\n var responseTextPromise;\n\n if (isIgnored(\"\".concat(LOGROCKET_FETCH_LABEL).concat(fetchId))) {\n // Don't even try to read ignored requests\n return _response;\n }\n\n try {\n // TODO: enhance function on original response and future clones for:\n // text(), json(), blob(), formdata(), arraybuffer()\n responseClone = _response.clone();\n } catch (err) {\n // safari has a bug where cloning can fail\n var responseHash = {\n url: _response.url,\n status: _response.status,\n headers: stringifyHeaders(_response.headers),\n body: \"LogRocket fetch error: \".concat(err.message),\n method: fetchMethodMap[fetchId]\n };\n delete fetchMethodMap[fetchId];\n addResponse(\"\".concat(LOGROCKET_FETCH_LABEL).concat(fetchId), responseHash);\n return _response;\n }\n\n try {\n if (window.TextDecoder) {\n // use a reader to manually read the response body rather than calling response.text()\n // response.text() was timing out for some responses, in some cases because Apollo sends\n // an abort signal or because the stream wasn't getting terminated cleanly\n // using a reader allows us to capture what we can from response bodies before the\n // response receives an abort signal\n var reader = responseClone.body.getReader(); // response bodies always decode with UTF-8\n // https://developer.mozilla.org/en-US/docs/Web/API/Response/text\n\n var utf8Decoder = new window.TextDecoder('utf-8');\n var bodyContents = '';\n responseTextPromise = reader.read().then(function readResponseBody(_ref2) {\n var done = _ref2.done,\n value = _ref2.value;\n\n if (done) {\n return bodyContents;\n }\n\n var chunk = value ? utf8Decoder.decode(value, {\n stream: true\n }) : '';\n bodyContents += chunk;\n return reader.read().then(readResponseBody);\n });\n } else {\n // TextDecoder doesn't have support across all browsers that LR supports, so if there's\n // no TextDecoder, fall back to the old approach\n responseTextPromise = responseClone.text();\n }\n } catch (error) {\n // eslint-disable-next-line compat/compat\n responseTextPromise = Promise.resolve(\"LogRocket error reading body: \".concat(error.message));\n }\n\n responseTextPromise.catch(function (error) {\n // don't drop request & log to console when the request is aborted,\n // as it may have already completed\n // https://github.com/LogRocket/logrocket/issues/34\n if (error.name === 'AbortError' && error instanceof DOMException) {\n return;\n }\n\n return \"LogRocket error reading body: \".concat(error.message);\n }).then(function (data) {\n var responseHash = {\n url: _response.url,\n status: _response.status,\n headers: stringifyHeaders(_response.headers),\n body: data,\n method: fetchMethodMap[fetchId]\n };\n delete fetchMethodMap[fetchId];\n addResponse(\"\".concat(LOGROCKET_FETCH_LABEL).concat(fetchId), responseHash);\n });\n return _response;\n },\n responseError: function responseError(fetchId, error) {\n var response = {\n url: undefined,\n status: 0,\n headers: {},\n body: \"\".concat(error)\n };\n addResponse(\"\".concat(LOGROCKET_FETCH_LABEL).concat(fetchId), response); // if a browser supports fetch, it supports promise\n // eslint-disable-next-line compat/compat\n\n return Promise.reject(error);\n }\n });\n\n return unregister;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/network/src/registerNetworkInformation.js\":\n/*!***********************************************************************!*\\\n !*** ./packages/@logrocket/network/src/registerNetworkInformation.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = registerNetworkInformation;\nvar EFFECTIVE_TYPE_VALS = {\n 'slow-2g': 'SLOW2G',\n '2g': 'TWOG',\n '3g': 'THREEG',\n '4g': 'FOURG'\n};\n\nfunction registerNetworkInformation(logger) {\n var lastStatus = undefined;\n\n function sendNetworkInformation() {\n var newStatus = {\n online: window.navigator.onLine,\n effectiveType: 'UNKOWN'\n };\n\n if (!window.navigator.onLine) {\n newStatus.effectiveType = 'NONE';\n } else if (window.navigator.connection && window.navigator.connection.effectiveType) {\n newStatus.effectiveType = EFFECTIVE_TYPE_VALS[window.navigator.connection.effectiveType] || 'UNKNOWN';\n }\n\n if (lastStatus && newStatus.online === lastStatus.online && newStatus.effectiveType === lastStatus.effectiveType) {\n return;\n }\n\n lastStatus = newStatus;\n logger.addEvent('lr.network.NetworkStatusEvent', function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$isEnabled = _ref.isEnabled,\n isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled;\n\n if (!isEnabled) {\n return null;\n }\n\n return newStatus;\n });\n }\n\n setTimeout(sendNetworkInformation);\n\n if (window.navigator.connection && typeof window.navigator.connection.addEventListener === 'function') {\n window.navigator.connection.addEventListener('change', sendNetworkInformation);\n }\n\n window.addEventListener('online', sendNetworkInformation);\n window.addEventListener('offline', sendNetworkInformation);\n return function () {\n window.removeEventListener('offline', sendNetworkInformation);\n window.removeEventListener('online', sendNetworkInformation);\n\n if (window.navigator.connection && typeof window.navigator.connection.removeEventListener === 'function') {\n window.navigator.connection.removeEventListener('change', sendNetworkInformation);\n }\n };\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/network/src/registerXHR.js\":\n/*!********************************************************!*\\\n !*** ./packages/@logrocket/network/src/registerXHR.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setActive = setActive;\nexports.default = registerXHR;\n\nvar _mapValues = _interopRequireDefault(__webpack_require__(/*! @logrocket/utils/src/mapValues */ \"./packages/@logrocket/utils/src/mapValues.js\"));\n\nvar _enhanceFunc = _interopRequireDefault(__webpack_require__(/*! @logrocket/utils/src/enhanceFunc */ \"./packages/@logrocket/utils/src/enhanceFunc.js\"));\n\nvar _startsWith = _interopRequireDefault(__webpack_require__(/*! @logrocket/utils/src/startsWith */ \"./packages/@logrocket/utils/src/startsWith.js\"));\n\nvar _nps = __webpack_require__(/*! @logrocket/utils/src/constants/nps */ \"./packages/@logrocket/utils/src/constants/nps.js\");\n\n// eslint-disable-line no-restricted-imports\n// eslint-disable-line no-restricted-imports\n// eslint-disable-line no-restricted-imports\nvar isActive = true;\n\nfunction setActive(shouldBeActive) {\n isActive = shouldBeActive;\n}\n\nvar currentXHRId = 0;\n\nfunction registerXHR(_ref) {\n var addRequest = _ref.addRequest,\n addResponse = _ref.addResponse,\n isIgnored = _ref.isIgnored,\n logger = _ref.logger,\n _ref$shouldAugmentNPS = _ref.shouldAugmentNPS,\n shouldAugmentNPS = _ref$shouldAugmentNPS === void 0 ? true : _ref$shouldAugmentNPS,\n _ref$shouldParseXHRBl = _ref.shouldParseXHRBlob,\n shouldParseXHRBlob = _ref$shouldParseXHRBl === void 0 ? false : _ref$shouldParseXHRBl;\n var _XHR = XMLHttpRequest;\n var xhrMap = new WeakMap();\n var unsubscribedFromXhr = false;\n var LOGROCKET_XHR_LABEL = 'xhr-';\n window._lrXMLHttpRequest = XMLHttpRequest; // eslint-disable-next-line no-native-reassign\n\n XMLHttpRequest = function XMLHttpRequest(mozAnon, mozSystem) {\n var xhrObject = new _XHR(mozAnon, mozSystem);\n\n if (!isActive) {\n return xhrObject;\n }\n\n xhrMap.set(xhrObject, {\n xhrId: ++currentXHRId,\n headers: {}\n });\n var openOriginal = xhrObject.open;\n\n function openShim() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n try {\n var url = args[1];\n\n if (window.URL && typeof window.URL === 'function' && url.search(_nps.WOOTRIC_RESPONSES_REGEX) === 0) {\n var logrocketSessionURL = new window.URL(logger.recordingURL);\n logrocketSessionURL.searchParams.set('nps', 'wootric');\n var urlObj = new window.URL(url);\n var responseText = urlObj.searchParams.get('response[text]');\n var feedback = responseText ? \"\".concat(responseText, \"\\n\\n\") : '';\n urlObj.searchParams.set('response[text]', \"\".concat(feedback, \"<\").concat(logrocketSessionURL.href, \"|View LogRocket session>\"));\n args[1] = urlObj.href; // eslint-disable-line no-param-reassign\n }\n } catch (e) {\n /* do nothing */\n }\n\n return openOriginal.apply(this, args);\n }\n\n var sendOriginal = xhrObject.send;\n\n function sendShim() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n try {\n var currentXHR = xhrMap.get(xhrObject);\n\n if (window.URL && typeof window.URL === 'function' && currentXHR && currentXHR.url && currentXHR.url.search(_nps.DELIGHTED_RESPONSES_REGEX) === 0 && args.length && args[0].indexOf(_nps.DELIGHTED_FEEDBACK_PREFIX) !== -1) {\n var recordingURL = new window.URL(logger.recordingURL);\n recordingURL.searchParams.set('nps', 'delighted');\n var logrocketSessionURL = encodeURIComponent(recordingURL.href);\n var data = args[0].split('&').map(function (dataString) {\n if ((0, _startsWith.default)(dataString, _nps.DELIGHTED_FEEDBACK_PREFIX)) {\n var isEmpty = dataString === _nps.DELIGHTED_FEEDBACK_PREFIX;\n return \"\".concat(dataString).concat(isEmpty ? '' : '\\n\\n', \"<\").concat(logrocketSessionURL, \"|View LogRocket session>\");\n }\n\n return dataString;\n }).join('&');\n args[0] = data; // eslint-disable-line no-param-reassign\n }\n } catch (e) {\n /* do nothing */\n }\n\n return sendOriginal.apply(this, args);\n }\n\n if (shouldAugmentNPS) {\n xhrObject.open = openShim;\n xhrObject.send = sendShim;\n } // ..., 'open', (method, url, async, username, password) => {\n\n\n (0, _enhanceFunc.default)(xhrObject, 'open', function (method, url) {\n if (unsubscribedFromXhr) {\n return;\n }\n\n var currentXHR = xhrMap.get(xhrObject);\n currentXHR.method = method;\n currentXHR.url = url;\n });\n (0, _enhanceFunc.default)(xhrObject, 'send', function (data) {\n if (unsubscribedFromXhr) {\n return;\n }\n\n var currentXHR = xhrMap.get(xhrObject);\n\n if (!currentXHR) {\n return;\n }\n\n var request = {\n url: currentXHR.url,\n method: currentXHR.method && currentXHR.method.toUpperCase(),\n headers: (0, _mapValues.default)(currentXHR.headers || {}, function (headerValues) {\n return headerValues.join(', ');\n }),\n body: data\n };\n addRequest(\"\".concat(LOGROCKET_XHR_LABEL).concat(currentXHR.xhrId), request);\n });\n (0, _enhanceFunc.default)(xhrObject, 'setRequestHeader', function (header, value) {\n if (unsubscribedFromXhr) {\n return;\n }\n\n var currentXHR = xhrMap.get(xhrObject);\n\n if (!currentXHR) {\n return;\n }\n\n currentXHR.headers = currentXHR.headers || {};\n currentXHR.headers[header] = currentXHR.headers[header] || [];\n currentXHR.headers[header].push(value);\n });\n var xhrListeners = {\n readystatechange: function readystatechange() {\n if (unsubscribedFromXhr) {\n return;\n }\n\n if (xhrObject.readyState === 4) {\n var currentXHR = xhrMap.get(xhrObject);\n\n if (!currentXHR) {\n return;\n } // Do not read ignored requests at all.\n\n\n if (isIgnored(\"\".concat(LOGROCKET_XHR_LABEL).concat(currentXHR.xhrId))) {\n return;\n }\n\n var headerString = xhrObject.getAllResponseHeaders() || '';\n var headers = headerString.split(/[\\r\\n]+/).reduce(function (previous, current) {\n var next = previous;\n var headerParts = current.split(': ');\n\n if (headerParts.length > 0) {\n var key = headerParts.shift(); // first index of the array\n\n var value = headerParts.join(': '); // rest of the array repaired\n\n if (previous[key]) {\n next[key] += \", \".concat(value);\n } else {\n next[key] = value;\n }\n }\n\n return next;\n }, {});\n var body; // IE 11 sometimes throws when trying to access large responses\n\n try {\n switch (xhrObject.responseType) {\n case 'json':\n body = logger._shouldCloneResponse ? JSON.parse(JSON.stringify(xhrObject.response)) : xhrObject.response;\n break;\n\n case 'arraybuffer':\n case 'blob':\n {\n body = xhrObject.response;\n break;\n }\n\n case 'document':\n {\n body = xhrObject.responseXML;\n break;\n }\n\n case 'text':\n case '':\n {\n body = xhrObject.responseText;\n break;\n }\n\n default:\n {\n body = '';\n }\n }\n } catch (err) {\n body = 'LogRocket: Error accessing response.';\n }\n\n var response = {\n url: currentXHR.url,\n status: xhrObject.status,\n headers: headers,\n body: body,\n method: (currentXHR.method || '').toUpperCase()\n };\n\n if (shouldParseXHRBlob && response.body instanceof Blob) {\n var blobReader = new FileReader();\n blobReader.readAsText(response.body);\n\n blobReader.onload = function () {\n try {\n response.body = JSON.parse(blobReader.result);\n } catch (_unused) {} // eslint-disable-line no-empty\n\n\n addResponse(\"\".concat(LOGROCKET_XHR_LABEL).concat(currentXHR.xhrId), response);\n };\n } else {\n addResponse(\"\".concat(LOGROCKET_XHR_LABEL).concat(currentXHR.xhrId), response);\n }\n }\n } // // Unused Event Listeners\n // loadstart: () => {},\n // progress: () => {},\n // abort: () => {},\n // error: () => {},\n // load: () => {},\n // timeout: () => {},\n // loadend: () => {},\n\n };\n Object.keys(xhrListeners).forEach(function (key) {\n xhrObject.addEventListener(key, xhrListeners[key]);\n });\n return xhrObject;\n }; // this allows \"instanceof XMLHttpRequest\" to work\n\n\n XMLHttpRequest.prototype = _XHR.prototype; // Persist the static variables.\n\n ['UNSENT', 'OPENED', 'HEADERS_RECEIVED', 'LOADING', 'DONE'].forEach(function (variable) {\n XMLHttpRequest[variable] = _XHR[variable];\n });\n return function () {\n unsubscribedFromXhr = true; // eslint-disable-next-line no-native-reassign\n\n XMLHttpRequest = _XHR;\n };\n}\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/now/src/index.js\":\n/*!**********************************************!*\\\n !*** ./packages/@logrocket/now/src/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/* eslint-disable compat/compat */\nvar dateNow = Date.now.bind(Date);\nvar loadTime = dateNow();\n\nvar _default = typeof performance !== 'undefined' && performance.now ? performance.now.bind(performance) : function () {\n return dateNow() - loadTime;\n};\n\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/redux/src/createEnhancer.js\":\n/*!*********************************************************!*\\\n !*** ./packages/@logrocket/redux/src/createEnhancer.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createEnhancer;\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _now = _interopRequireDefault(__webpack_require__(/*! @logrocket/now */ \"./packages/@logrocket/now/src/index.js\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar storeIdCounter = 0;\n\nfunction createEnhancer(logger) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$stateSanitizer = _ref.stateSanitizer,\n stateSanitizer = _ref$stateSanitizer === void 0 ? function (f) {\n return f;\n } : _ref$stateSanitizer,\n _ref$actionSanitizer = _ref.actionSanitizer,\n actionSanitizer = _ref$actionSanitizer === void 0 ? function (f) {\n return f;\n } : _ref$actionSanitizer;\n\n // an enhancer is a function that returns a Store\n return function (createStore) {\n return function (reducer, initialState, enhancer) {\n var store = createStore(reducer, initialState, enhancer);\n var originalDispatch = store.dispatch;\n var storeId = storeIdCounter++;\n logger.addEvent('lr.redux.InitialState', function () {\n var sanitizedState;\n\n try {\n // only try catch user defined functions\n sanitizedState = stateSanitizer(store.getState());\n } catch (err) {\n console.error(err.toString());\n }\n\n return {\n state: sanitizedState,\n storeId: storeId\n };\n });\n\n var dispatch = function dispatch(action) {\n var start = (0, _now.default)();\n var err;\n var res;\n\n try {\n res = originalDispatch(action);\n } catch (_err) {\n err = _err;\n } finally {\n var duration = (0, _now.default)() - start;\n logger.addEvent('lr.redux.ReduxAction', function () {\n var sanitizedState = null;\n var sanitizedAction = null;\n\n try {\n // only try catch user defined functions\n sanitizedState = stateSanitizer(store.getState());\n sanitizedAction = actionSanitizer(action);\n } catch (err) {\n console.error(err.toString());\n }\n\n if (sanitizedState && sanitizedAction) {\n return {\n storeId: storeId,\n action: sanitizedAction,\n duration: duration,\n stateDelta: sanitizedState\n };\n }\n\n return null;\n });\n }\n\n if (err) {\n throw err;\n }\n\n return res;\n };\n\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: dispatch\n });\n };\n };\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/redux/src/createMiddleware.js\":\n/*!***********************************************************!*\\\n !*** ./packages/@logrocket/redux/src/createMiddleware.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createMiddleware;\n\nvar _now = _interopRequireDefault(__webpack_require__(/*! @logrocket/now */ \"./packages/@logrocket/now/src/index.js\"));\n\nvar storeIdCounter = 0;\n\nfunction createMiddleware(logger) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$stateSanitizer = _ref.stateSanitizer,\n stateSanitizer = _ref$stateSanitizer === void 0 ? function (f) {\n return f;\n } : _ref$stateSanitizer,\n _ref$actionSanitizer = _ref.actionSanitizer,\n actionSanitizer = _ref$actionSanitizer === void 0 ? function (f) {\n return f;\n } : _ref$actionSanitizer;\n\n return function (store) {\n var storeId = storeIdCounter++;\n logger.addEvent('lr.redux.InitialState', function () {\n var sanitizedState;\n\n try {\n // only try catch user defined functions\n sanitizedState = stateSanitizer(store.getState());\n } catch (err) {\n console.error(err.toString());\n }\n\n return {\n state: sanitizedState,\n storeId: storeId\n };\n });\n return function (next) {\n return function (action) {\n var start = (0, _now.default)();\n var err;\n var res;\n\n try {\n res = next(action);\n } catch (_err) {\n err = _err;\n } finally {\n var duration = (0, _now.default)() - start;\n logger.addEvent('lr.redux.ReduxAction', function () {\n var sanitizedState = null;\n var sanitizedAction = null;\n\n try {\n // only try catch user defined functions\n sanitizedState = stateSanitizer(store.getState());\n sanitizedAction = actionSanitizer(action);\n } catch (err) {\n console.error(err.toString());\n }\n\n if (sanitizedState && sanitizedAction) {\n return {\n storeId: storeId,\n action: sanitizedAction,\n duration: duration,\n stateDelta: sanitizedState\n };\n }\n\n return null;\n });\n }\n\n if (err) {\n throw err;\n }\n\n return res;\n };\n };\n };\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/redux/src/index.js\":\n/*!************************************************!*\\\n !*** ./packages/@logrocket/redux/src/index.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"createEnhancer\", {\n enumerable: true,\n get: function get() {\n return _createEnhancer.default;\n }\n});\nObject.defineProperty(exports, \"createMiddleware\", {\n enumerable: true,\n get: function get() {\n return _createMiddleware.default;\n }\n});\n\nvar _createEnhancer = _interopRequireDefault(__webpack_require__(/*! ./createEnhancer */ \"./packages/@logrocket/redux/src/createEnhancer.js\"));\n\nvar _createMiddleware = _interopRequireDefault(__webpack_require__(/*! ./createMiddleware */ \"./packages/@logrocket/redux/src/createMiddleware.js\"));\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/utils/src/TraceKit.js\":\n/*!***************************************************!*\\\n !*** ./packages/@logrocket/utils/src/TraceKit.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* eslint-disable */\n\n/*\n TraceKit - Cross brower stack traces - github.com/occ/TraceKit\n\n This was originally forked from github.com/occ/TraceKit, but has since been\n largely re-written and is now maintained as part of raven-js. Tests for\n this are in test/vendor.\n\n MIT license\n*/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TraceKit = {\n collectWindowErrors: true,\n debug: false\n}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\nvar _window = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; // global reference to slice\n\n\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\n\nvar ERROR_TYPES_RE = /^(?:Uncaught (?:exception: )?)?((?:Eval|Internal|Range|Reference|Syntax|Type|URI)Error): ?(.*)$/;\n\nfunction getLocationHref() {\n if (typeof document === 'undefined' || typeof document.location === 'undefined') return '';\n return document.location.href;\n}\n/**\n * TraceKit.report: cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a stackInfo object as described in the\n * TraceKit.computeStackTrace docs.\n */\n\n\nTraceKit.report = function reportModuleWrapper() {\n var handlers = [],\n lastArgs = null,\n lastException = null,\n lastExceptionStack = null;\n /**\n * Add a crash handler.\n * @param {Function} handler\n */\n\n function subscribe(handler) {\n installGlobalHandler();\n handlers.push(handler);\n }\n /**\n * Remove a crash handler.\n * @param {Function} handler\n */\n\n\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n }\n /**\n * Remove all crash handlers.\n */\n\n\n function unsubscribeAll() {\n uninstallGlobalHandler();\n handlers = [];\n }\n /**\n * Dispatch stack information to all handlers.\n * @param {Object.} stack\n */\n\n\n function notifyHandlers(stack, isWindowError) {\n var exception = null;\n\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n\n for (var i in handlers) {\n if (handlers.hasOwnProperty(i)) {\n try {\n handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} message Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error\n * occurred.\n * @param {?(number|string)} colNo The column number at which the error\n * occurred.\n * @param {?Error} ex The actual Error object.\n */\n\n\n function traceKitWindowOnError(message, url, lineNo, colNo, ex) {\n var stack = null;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);\n processLastException();\n } else if (ex) {\n // New chrome and blink send along a real error object\n // Let's just report that like a normal error.\n // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n stack = TraceKit.computeStackTrace(ex);\n notifyHandlers(stack, true);\n } else {\n var location = {\n 'url': url,\n 'line': lineNo,\n 'column': colNo\n };\n var name = undefined;\n var msg = message; // must be new var or will modify original `arguments`\n\n var groups;\n\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n\n if (groups) {\n name = groups[1];\n msg = groups[2];\n }\n }\n\n location.func = UNKNOWN_FUNCTION;\n stack = {\n 'name': name,\n 'message': msg,\n 'url': getLocationHref(),\n 'stack': [location]\n };\n notifyHandlers(stack, true);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n return;\n }\n\n _oldOnerrorHandler = _window.onerror;\n _window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n function uninstallGlobalHandler() {\n if (!_onErrorHandlerInstalled) {\n return;\n }\n\n _window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n _oldOnerrorHandler = undefined;\n }\n\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastArgs = lastArgs;\n lastArgs = null;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n }\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @param {?boolean} rethrow If false, do not re-throw the exception.\n * Only used for window.onerror to not cause an infinite loop of\n * rethrowing.\n */\n\n\n function report(ex, rethrow) {\n var args = _slice.call(arguments, 1);\n\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n\n setTimeout(function () {\n if (lastException === ex) {\n processLastException();\n }\n }, stack.incomplete ? 2000 : 0);\n\n if (rethrow !== false) {\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n report.uninstall = unsubscribeAll;\n return report;\n}();\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * Returns:\n * s.name - exception name\n * s.message - exception message\n * s.stack[i].url - JavaScript or HTML file URL\n * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n * s.stack[i].args - arguments passed to the function, if known\n * s.stack[i].line - line number, if known\n * s.stack[i].column - column number, if known\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n */\n\n\nTraceKit.computeStackTrace = function computeStackTraceWrapper() {\n /**\n * Escapes special characters, except for whitespace, in a string to be\n * used inside a regular expression as a string literal.\n * @param {string} text The string.\n * @return {string} The escaped string literal.\n */\n function escapeRegExp(text) {\n return text.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#]/g, '\\\\$&');\n }\n /**\n * Escapes special characters in a string to be used inside a regular\n * expression as a string literal. Also ensures that HTML entities will\n * be matched the same as their literal friends.\n * @param {string} body The string.\n * @return {string} The escaped string.\n */\n\n\n function escapeCodeAsRegExpForMatchingInsideHTML(body) {\n return escapeRegExp(body).replace('<', '(?:<|<)').replace('>', '(?:>|>)').replace('&', '(?:&|&)').replace('\"', '(?:\"|")').replace(/\\s+/g, '\\\\s+');\n } // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n\n\n function computeStackTraceFromStackProp(ex) {\n if (typeof ex.stack === 'undefined' || !ex.stack) return;\n var chrome = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,\n gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|resource|\\[native).*?)(?::(\\d+))?(?::(\\d+))?\\s*$/i,\n winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n lines = ex.stack.split('\\n'),\n stack = [],\n parts,\n element,\n reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if (parts = chrome.exec(lines[i])) {\n var isNative = parts[2] && parts[2].indexOf('native') !== -1;\n element = {\n 'url': !isNative ? parts[2] : null,\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': isNative ? [parts[2]] : [],\n 'line': parts[3] ? +parts[3] : null,\n 'column': parts[4] ? +parts[4] : null\n };\n } else if (parts = winjs.exec(lines[i])) {\n element = {\n 'url': parts[2],\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': [],\n 'line': +parts[3],\n 'column': parts[4] ? +parts[4] : null\n };\n } else if (parts = gecko.exec(lines[i])) {\n element = {\n 'url': parts[3],\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': parts[2] ? parts[2].split(',') : [],\n 'line': parts[4] ? +parts[4] : null,\n 'column': parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n if (!stack[0].column && typeof ex.columnNumber !== 'undefined') {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n stack[0].column = ex.columnNumber + 1;\n }\n\n return {\n 'name': ex.name,\n 'message': ex.message,\n 'url': getLocationHref(),\n 'stack': stack\n };\n }\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {Object.} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n */\n\n\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n 'url': url,\n 'line': lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = UNKNOWN_FUNCTION;\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {\n stackInfo.stack[0].line = initial.line;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n\n\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n // console.log('skipping internal function');\n continue;\n }\n\n item = {\n 'url': null,\n 'func': UNKNOWN_FUNCTION,\n 'line': null,\n 'column': null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if (parts = functionName.exec(curr.toString())) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) {}\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n } else {\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n // console.log('depth is ' + depth);\n // console.log('stack is ' + stack.length);\n stack.splice(0, depth);\n }\n\n var result = {\n 'name': ex.name,\n 'message': ex.message,\n 'url': getLocationHref(),\n 'stack': stack\n };\n augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);\n return result;\n }\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n */\n\n\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = depth == null ? 0 : +depth;\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n\n return {\n 'name': ex.name,\n 'message': ex.message,\n 'url': getLocationHref()\n };\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n return computeStackTrace;\n}();\n\nvar _default = TraceKit;\nexports.default = _default;\nmodule.exports = exports.default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/utils/src/constants/nps.js\":\n/*!********************************************************!*\\\n !*** ./packages/@logrocket/utils/src/constants/nps.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DELIGHTED_FEEDBACK_PREFIX = exports.DELIGHTED_RESPONSES_REGEX = exports.WOOTRIC_RESPONSES_REGEX = void 0;\nvar WOOTRIC_RESPONSES_REGEX = /^https:\\/\\/production.wootric.com\\/responses/;\nexports.WOOTRIC_RESPONSES_REGEX = WOOTRIC_RESPONSES_REGEX;\nvar DELIGHTED_RESPONSES_REGEX = /^https:\\/\\/web.delighted.com\\/e\\/[a-zA-Z-]*\\/c/;\nexports.DELIGHTED_RESPONSES_REGEX = DELIGHTED_RESPONSES_REGEX;\nvar DELIGHTED_FEEDBACK_PREFIX = 'comment=';\nexports.DELIGHTED_FEEDBACK_PREFIX = DELIGHTED_FEEDBACK_PREFIX;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/utils/src/enhanceFunc.js\":\n/*!******************************************************!*\\\n !*** ./packages/@logrocket/utils/src/enhanceFunc.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = enhanceFunc;\n\n/* eslint no-param-reassign: [\"error\", { \"props\": false }] */\nfunction enhanceFunc(obj, method, handler) {\n var original = obj[method];\n\n function shim() {\n var res;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (original) {\n res = original.apply(this, args);\n }\n\n handler.apply(this, args);\n return res;\n }\n\n obj[method] = shim;\n return function () {\n obj[method] = original;\n };\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/utils/src/mapValues.js\":\n/*!****************************************************!*\\\n !*** ./packages/@logrocket/utils/src/mapValues.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = mapValues;\n\nfunction mapValues(obj, f) {\n if (obj == null) {\n return {};\n }\n\n var res = {};\n Object.keys(obj).forEach(function (key) {\n res[key] = f(obj[key]);\n });\n return res;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/@logrocket/utils/src/startsWith.js\":\n/*!*****************************************************!*\\\n !*** ./packages/@logrocket/utils/src/startsWith.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startsWith;\n\nfunction startsWith(value, search) {\n var pos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n return value && search && value.substring(pos, pos + search.length) === search;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/logrocket/src/LogRocket.js\":\n/*!*********************************************!*\\\n !*** ./packages/logrocket/src/LogRocket.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.MAX_QUEUE_SIZE = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _network = _interopRequireDefault(__webpack_require__(/*! @logrocket/network */ \"./packages/@logrocket/network/src/index.js\"));\n\nvar _exceptions = __webpack_require__(/*! @logrocket/exceptions */ \"./packages/@logrocket/exceptions/src/index.js\");\n\nvar _console = _interopRequireDefault(__webpack_require__(/*! @logrocket/console */ \"./packages/@logrocket/console/src/index.js\"));\n\nvar _redux = __webpack_require__(/*! @logrocket/redux */ \"./packages/@logrocket/redux/src/index.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar MAX_QUEUE_SIZE = 1000;\nexports.MAX_QUEUE_SIZE = MAX_QUEUE_SIZE;\n\nvar considerIngestServerOption = function considerIngestServerOption() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n ingestServer = _ref.ingestServer,\n options = (0, _objectWithoutProperties2.default)(_ref, [\"ingestServer\"]);\n\n if (ingestServer) {\n return _objectSpread({\n serverURL: \"\".concat(ingestServer, \"/i\"),\n statsURL: \"\".concat(ingestServer, \"/s\")\n }, options);\n }\n\n return options;\n};\n\nvar LogRocket = /*#__PURE__*/function () {\n function LogRocket() {\n var _this = this;\n\n (0, _classCallCheck2.default)(this, LogRocket);\n this._buffer = [];\n // TODO: tests for these exposed methods.\n ['log', 'info', 'warn', 'error', 'debug'].forEach(function (method) {\n _this[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.addEvent('lr.core.LogEvent', function () {\n var consoleOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (method === 'error' && consoleOptions.shouldAggregateConsoleErrors) {\n _exceptions.Capture.captureMessage(_this, args[0], args, {}, true);\n }\n\n return {\n logLevel: method.toUpperCase(),\n args: args\n };\n }, {\n shouldCaptureStackTrace: true\n });\n };\n });\n this._isInitialized = false;\n this._installed = []; // expose a callback to get the session URL from the global context\n\n window._lr_surl_cb = this.getSessionURL.bind(this);\n }\n\n (0, _createClass2.default)(LogRocket, [{\n key: \"addEvent\",\n value: function addEvent(type, getMessage) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var time = Date.now();\n\n this._run(function (logger) {\n logger.addEvent(type, getMessage, _objectSpread(_objectSpread({}, opts), {}, {\n timeOverride: time\n }));\n });\n }\n }, {\n key: \"onLogger\",\n value: function onLogger(logger) {\n this._logger = logger;\n\n while (this._buffer.length > 0) {\n var f = this._buffer.shift();\n\n f(this._logger);\n }\n }\n }, {\n key: \"_run\",\n value: function _run(f) {\n if (this._isDisabled) {\n return;\n }\n\n if (this._logger) {\n f(this._logger);\n } else {\n if (this._buffer.length >= MAX_QUEUE_SIZE) {\n this._isDisabled = true;\n console.warn('LogRocket: script did not load. Check that you have a valid network connection.');\n this.uninstall();\n return;\n }\n\n this._buffer.push(f.bind(this));\n }\n }\n }, {\n key: \"init\",\n value: function init(appID) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this._isInitialized) {\n var _opts$shouldAugmentNP = opts.shouldAugmentNPS,\n shouldAugmentNPS = _opts$shouldAugmentNP === void 0 ? true : _opts$shouldAugmentNP,\n _opts$shouldParseXHRB = opts.shouldParseXHRBlob,\n shouldParseXHRBlob = _opts$shouldParseXHRB === void 0 ? false : _opts$shouldParseXHRB;\n\n this._installed.push((0, _exceptions.registerExceptions)(this));\n\n this._installed.push((0, _network.default)(this, {\n shouldAugmentNPS: !!shouldAugmentNPS,\n shouldParseXHRBlob: !!shouldParseXHRBlob\n }));\n\n this._installed.push((0, _console.default)(this));\n\n this._isInitialized = true;\n\n this._run(function (logger) {\n logger.init(appID, considerIngestServerOption(opts));\n });\n }\n }\n }, {\n key: \"start\",\n value: function start() {\n this._run(function (logger) {\n logger.start();\n });\n }\n }, {\n key: \"uninstall\",\n value: function uninstall() {\n this._installed.forEach(function (f) {\n return f();\n });\n\n this._buffer = [];\n\n this._run(function (logger) {\n logger.uninstall();\n });\n }\n }, {\n key: \"identify\",\n value: function identify(id, opts) {\n this._run(function (logger) {\n logger.identify(id, opts);\n });\n }\n }, {\n key: \"startNewSession\",\n value: function startNewSession() {\n this._run(function (logger) {\n logger.startNewSession();\n });\n }\n }, {\n key: \"track\",\n value: function track(customEventName, eventProperties) {\n this._run(function (logger) {\n logger.track(customEventName, eventProperties);\n });\n }\n }, {\n key: \"getSessionURL\",\n value: function getSessionURL(cb) {\n if (typeof cb !== 'function') {\n throw new Error('LogRocket: must pass callback to getSessionURL()');\n }\n\n this._run(function (logger) {\n if (logger.getSessionURL) {\n logger.getSessionURL(cb);\n } else {\n cb(logger.recordingURL);\n }\n });\n }\n }, {\n key: \"getVersion\",\n value: function getVersion(cb) {\n this._run(function (logger) {\n cb(logger.version);\n });\n }\n }, {\n key: \"captureMessage\",\n value: function captureMessage(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _exceptions.Capture.captureMessage(this, message, [message], options);\n }\n }, {\n key: \"captureException\",\n value: function captureException(exception) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _exceptions.Capture.captureException(this, exception, options);\n }\n }, {\n key: \"version\",\n get: function get() {\n return this._logger && this._logger.version;\n }\n }, {\n key: \"sessionURL\",\n get: function get() {\n return this._logger && this._logger.recordingURL;\n }\n }, {\n key: \"recordingURL\",\n get: function get() {\n return this._logger && this._logger.recordingURL;\n }\n }, {\n key: \"recordingID\",\n get: function get() {\n return this._logger && this._logger.recordingID;\n }\n }, {\n key: \"threadID\",\n get: function get() {\n return this._logger && this._logger.threadID;\n }\n }, {\n key: \"tabID\",\n get: function get() {\n return this._logger && this._logger.tabID;\n }\n }, {\n key: \"reduxEnhancer\",\n value: function reduxEnhancer() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return (0, _redux.createEnhancer)(this, options);\n }\n }, {\n key: \"reduxMiddleware\",\n value: function reduxMiddleware() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return (0, _redux.createMiddleware)(this, options);\n }\n }, {\n key: \"isDisabled\",\n get: function get() {\n return !!(this._isDisabled || this._logger && this._logger._isDisabled);\n }\n }]);\n return LogRocket;\n}();\n\nexports.default = LogRocket;\n\n/***/ }),\n\n/***/ \"./packages/logrocket/src/makeLogRocket.js\":\n/*!*************************************************!*\\\n !*** ./packages/logrocket/src/makeLogRocket.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = makeLogRocket;\n\nvar _LogRocket = _interopRequireDefault(__webpack_require__(/*! ./LogRocket */ \"./packages/logrocket/src/LogRocket.js\"));\n\nvar REACT_NATIVE_NOTICE = 'LogRocket does not yet support React Native.';\n\nvar makeNoopPolyfill = function makeNoopPolyfill() {\n return {\n init: function init() {},\n uninstall: function uninstall() {},\n log: function log() {},\n info: function info() {},\n warn: function warn() {},\n error: function error() {},\n debug: function debug() {},\n addEvent: function addEvent() {},\n identify: function identify() {},\n start: function start() {},\n\n get threadID() {\n return null;\n },\n\n get recordingID() {\n return null;\n },\n\n get recordingURL() {\n return null;\n },\n\n reduxEnhancer: function reduxEnhancer() {\n return function (store) {\n return function () {\n return store.apply(void 0, arguments);\n };\n };\n },\n reduxMiddleware: function reduxMiddleware() {\n return function () {\n return function (next) {\n return function (action) {\n return next(action);\n };\n };\n };\n },\n track: function track() {},\n getSessionURL: function getSessionURL() {},\n getVersion: function getVersion() {},\n startNewSession: function startNewSession() {},\n onLogger: function onLogger() {},\n setClock: function setClock() {},\n captureMessage: function captureMessage() {},\n captureException: function captureException() {}\n };\n};\n\nfunction makeLogRocket() {\n var getLogger = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n throw new Error(REACT_NATIVE_NOTICE);\n }\n\n if (typeof window !== 'undefined') {\n if (window._disableLogRocket) {\n return makeNoopPolyfill();\n }\n\n if (window.MutationObserver && window.WeakMap) {\n // Save window globals that we rely on.\n window._lrMutationObserver = window.MutationObserver;\n var instance = new _LogRocket.default();\n getLogger(instance);\n return instance;\n }\n }\n\n return makeNoopPolyfill();\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/logrocket/src/module-npm.js\":\n/*!**********************************************!*\\\n !*** ./packages/logrocket/src/module-npm.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _setup = _interopRequireDefault(__webpack_require__(/*! ./setup */ \"./packages/logrocket/src/setup.js\"));\n\nvar instance = (0, _setup.default)();\nvar _default = instance;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./packages/logrocket/src/setup.js\":\n/*!*****************************************!*\\\n !*** ./packages/logrocket/src/setup.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = setup;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _makeLogRocket = _interopRequireDefault(__webpack_require__(/*! ./makeLogRocket */ \"./packages/logrocket/src/makeLogRocket.js\"));\n\nvar CDN_SERVER_MAP = {\n 'cdn.logrocket.io': 'https://r.logrocket.io',\n 'cdn.lr-ingest.io': 'https://r.lr-ingest.io',\n 'cdn.lr-in.com': 'https://r.lr-in.com',\n 'cdn.lr-in-prod.com': 'https://r.lr-in-prod.com',\n 'cdn-staging.logrocket.io': 'https://staging-i.logrocket.io',\n 'cdn-staging.lr-ingest.io': 'https://staging-i.lr-ingest.io',\n 'cdn-staging.lr-in.com': 'https://staging-i.lr-in.com',\n 'cdn-staging.lr-in-prod.com': 'https://staging-i.lr-in-prod.com'\n};\n\nfunction setup() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n enterpriseServer = _ref.enterpriseServer,\n _ref$sdkVersion = _ref.sdkVersion,\n sdkVersion = _ref$sdkVersion === void 0 ? \"3.0.1\" : _ref$sdkVersion,\n opts = (0, _objectWithoutProperties2.default)(_ref, [\"enterpriseServer\", \"sdkVersion\"]);\n\n var scriptOrigin = undefined === 'staging' ? 'https://cdn-staging.logrocket.io' : 'https://cdn.logrocket.io';\n var scriptIngest;\n\n if (sdkVersion === 'script') {\n try {\n // eslint-disable-next-line compat/compat\n var scriptTag = document.currentScript;\n var matches = scriptTag.src.match(/^(https?:\\/\\/([^\\\\]+))\\/.+$/);\n var scriptHostname = matches && matches[2];\n\n if (scriptHostname && CDN_SERVER_MAP[scriptHostname]) {\n scriptOrigin = matches && matches[1];\n scriptIngest = CDN_SERVER_MAP[scriptHostname];\n }\n } catch (_) {\n /* no-op */\n }\n } else {\n // NPM\n scriptOrigin = undefined === 'staging' ? 'https://cdn-staging.lr-in-prod.com' : 'https://cdn.lr-in-prod.com';\n scriptIngest = undefined === 'staging' ? 'https://staging-i.lr-in-prod.com' : 'https://r.lr-in-prod.com';\n }\n\n var sdkServer = opts.sdkServer || enterpriseServer;\n var ingestServer = opts.ingestServer || enterpriseServer || scriptIngest;\n var instance = (0, _makeLogRocket.default)(function () {\n var script = document.createElement('script');\n\n if (ingestServer) {\n if (typeof window.__SDKCONFIG__ === 'undefined') {\n window.__SDKCONFIG__ = {};\n }\n\n window.__SDKCONFIG__.serverURL = \"\".concat(ingestServer, \"/i\");\n window.__SDKCONFIG__.statsURL = \"\".concat(ingestServer, \"/s\");\n }\n\n if (sdkServer) {\n script.src = \"\".concat(sdkServer, \"/logger.min.js\");\n } else if (window.__SDKCONFIG__ && window.__SDKCONFIG__.loggerURL) {\n script.src = window.__SDKCONFIG__.loggerURL;\n } else if (window._lrAsyncScript) {\n script.src = window._lrAsyncScript;\n } else {\n script.src = \"\".concat(scriptOrigin, \"/logger-1.min.js\");\n }\n\n script.async = true;\n document.head.appendChild(script);\n\n script.onload = function () {\n // Brave browser: Advertises its user-agent as Chrome ##.##... then\n // loads logger.min.js, but blocks the execution of the script\n // causing _LRlogger to be undefined. Let's make sure its there first.\n if (typeof window._LRLogger === 'function') {\n instance.onLogger(new window._LRLogger({\n sdkVersion: sdkVersion\n }));\n } else {\n console.warn('LogRocket: script execution has been blocked by a product or service.');\n instance.uninstall();\n }\n };\n\n script.onerror = function () {\n console.warn('LogRocket: script could not load. Check that you have a valid network connection.');\n instance.uninstall();\n };\n });\n return instance;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ 0:\n/*!****************************************************!*\\\n !*** multi ./packages/logrocket/src/module-npm.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! /root/project/packages/logrocket/src/module-npm.js */\"./packages/logrocket/src/module-npm.js\");\n\n\n/***/ })\n\n/******/ });\n});","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arPs = moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arPs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix\n ? 'jedna minuta'\n : isFuture\n ? 'jednu minutu'\n : 'jedne minute';\n }\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n standalone:\n 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n var kuKmr = moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return kuKmr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","import { EventEmitter, Component, ElementRef, Inject, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { timer } from 'rxjs';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction CircleProgressComponent__svg_svg_0__svg_linearGradient_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"linearGradient\");\n ɵngcc0.ɵɵelement(1, \"stop\", 5)(2, \"stop\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx_r1.svg.outerLinearGradient.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"stop-color\", ctx_r1.svg.outerLinearGradient.colorStop1)(\"stop-opacity\", 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"stop-color\", ctx_r1.svg.outerLinearGradient.colorStop2)(\"stop-opacity\", 1);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_radialGradient_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"radialGradient\");\n ɵngcc0.ɵɵelement(1, \"stop\", 5)(2, \"stop\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx_r2.svg.radialGradient.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"stop-color\", ctx_r2.svg.radialGradient.colorStop1)(\"stop-opacity\", 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"stop-color\", ctx_r2.svg.radialGradient.colorStop2)(\"stop-opacity\", 1);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\");\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattribute(\"cx\", ctx_r8.svg.backgroundCircle.cx)(\"cy\", ctx_r8.svg.backgroundCircle.cy)(\"r\", ctx_r8.svg.backgroundCircle.r)(\"fill\", ctx_r8.svg.backgroundCircle.fill)(\"fill-opacity\", ctx_r8.svg.backgroundCircle.fillOpacity)(\"stroke\", ctx_r8.svg.backgroundCircle.stroke)(\"stroke-width\", ctx_r8.svg.backgroundCircle.strokeWidth);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\");\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattributeInterpolate1(\"fill\", \"url(#\", ctx_r9.svg.radialGradient.id, \")\");\n ɵngcc0.ɵɵattribute(\"cx\", ctx_r9.svg.backgroundCircle.cx)(\"cy\", ctx_r9.svg.backgroundCircle.cy)(\"r\", ctx_r9.svg.backgroundCircle.r)(\"fill-opacity\", ctx_r9.svg.backgroundCircle.fillOpacity)(\"stroke\", ctx_r9.svg.backgroundCircle.stroke)(\"stroke-width\", ctx_r9.svg.backgroundCircle.strokeWidth);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_1_Template, 1, 7, \"circle\", 2);\n ɵngcc0.ɵɵtemplate(2, CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_2_Template, 1, 7, \"circle\", 2);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r3.options.backgroundGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r3.options.backgroundGradient);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_circle_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\");\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"cx\", ctx_r4.svg.circle.cx)(\"cy\", ctx_r4.svg.circle.cy)(\"r\", ctx_r4.svg.circle.r)(\"fill\", ctx_r4.svg.circle.fill)(\"stroke\", ctx_r4.svg.circle.stroke)(\"stroke-width\", ctx_r4.svg.circle.strokeWidth);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"path\");\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattribute(\"d\", ctx_r10.svg.path.d)(\"stroke\", ctx_r10.svg.path.stroke)(\"stroke-width\", ctx_r10.svg.path.strokeWidth)(\"stroke-linecap\", ctx_r10.svg.path.strokeLinecap)(\"fill\", ctx_r10.svg.path.fill);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"path\");\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattributeInterpolate1(\"stroke\", \"url(#\", ctx_r11.svg.outerLinearGradient.id, \")\");\n ɵngcc0.ɵɵattribute(\"d\", ctx_r11.svg.path.d)(\"stroke-width\", ctx_r11.svg.path.strokeWidth)(\"stroke-linecap\", ctx_r11.svg.path.strokeLinecap)(\"fill\", ctx_r11.svg.path.fill);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_1_Template, 1, 5, \"path\", 2);\n ɵngcc0.ɵɵtemplate(2, CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_2_Template, 1, 5, \"path\", 2);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r5.options.outerStrokeGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.options.outerStrokeGradient);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1__svg_tspan_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"tspan\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tspan_r16 = ctx.$implicit;\n const ctx_r15 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵattribute(\"x\", ctx_r15.svg.title.x)(\"y\", ctx_r15.svg.title.y)(\"dy\", tspan_r16.dy)(\"font-size\", ctx_r15.svg.title.fontSize)(\"font-weight\", ctx_r15.svg.title.fontWeight)(\"fill\", ctx_r15.svg.title.color);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(tspan_r16.span);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1__svg_tspan_1_Template, 2, 7, \"tspan\", 8);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r12.svg.title.tspans);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_tspan_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"tspan\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattribute(\"font-size\", ctx_r13.svg.units.fontSize)(\"font-weight\", ctx_r13.svg.units.fontWeight)(\"fill\", ctx_r13.svg.units.color);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r13.svg.units.text);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3__svg_tspan_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"tspan\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tspan_r18 = ctx.$implicit;\n const ctx_r17 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵattribute(\"x\", ctx_r17.svg.subtitle.x)(\"y\", ctx_r17.svg.subtitle.y)(\"dy\", tspan_r18.dy)(\"font-size\", ctx_r17.svg.subtitle.fontSize)(\"font-weight\", ctx_r17.svg.subtitle.fontWeight)(\"fill\", ctx_r17.svg.subtitle.color);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(tspan_r18.span);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3__svg_tspan_1_Template, 2, 7, \"tspan\", 8);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r14.svg.subtitle.tspans);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_text_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 7);\n ɵngcc0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1_Template, 2, 1, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(2, CircleProgressComponent__svg_svg_0__svg_text_7__svg_tspan_2_Template, 2, 4, \"tspan\", 2);\n ɵngcc0.ɵɵtemplate(3, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3_Template, 2, 1, \"ng-container\", 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"x\", ctx_r6.svg.circle.cx)(\"y\", ctx_r6.svg.circle.cy)(\"text-anchor\", ctx_r6.svg.title.textAnchor);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.options.showTitle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.options.showUnits);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.options.showSubtitle);\n} }\nfunction CircleProgressComponent__svg_svg_0__svg_image_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"image\", 9);\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"height\", ctx_r7.svg.image.height)(\"width\", ctx_r7.svg.image.width)(\"href\", ctx_r7.svg.image.src, null, \"xlink\")(\"x\", ctx_r7.svg.image.x)(\"y\", ctx_r7.svg.image.y);\n} }\nfunction CircleProgressComponent__svg_svg_0_Template(rf, ctx) { if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"svg\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function CircleProgressComponent__svg_svg_0_Template__svg_svg_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ctx_r19.emitClickEvent($event); });\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵtemplate(2, CircleProgressComponent__svg_svg_0__svg_linearGradient_2_Template, 3, 5, \"linearGradient\", 2);\n ɵngcc0.ɵɵtemplate(3, CircleProgressComponent__svg_svg_0__svg_radialGradient_3_Template, 3, 5, \"radialGradient\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, CircleProgressComponent__svg_svg_0__svg_ng_container_4_Template, 3, 2, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(5, CircleProgressComponent__svg_svg_0__svg_circle_5_Template, 1, 6, \"circle\", 2);\n ɵngcc0.ɵɵtemplate(6, CircleProgressComponent__svg_svg_0__svg_ng_container_6_Template, 3, 2, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(7, CircleProgressComponent__svg_svg_0__svg_text_7_Template, 4, 6, \"text\", 3);\n ɵngcc0.ɵɵtemplate(8, CircleProgressComponent__svg_svg_0__svg_image_8_Template, 1, 5, \"image\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"viewBox\", ctx_r0.svg.viewBox)(\"height\", ctx_r0.svg.height)(\"width\", ctx_r0.svg.width)(\"class\", ctx_r0.options.class);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.options.outerStrokeGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.options.backgroundGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.options.showBackground);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.options.showInnerStroke);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", +ctx_r0.options.percent !== 0 || ctx_r0.options.showZeroOuterStroke);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.options.showImage && (ctx_r0.options.showTitle || ctx_r0.options.showUnits || ctx_r0.options.showSubtitle));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.options.showImage);\n} }\nclass CircleProgressOptions {\r\n constructor() {\r\n this.class = '';\r\n this.backgroundGradient = false;\r\n this.backgroundColor = 'transparent';\r\n this.backgroundGradientStopColor = 'transparent';\r\n this.backgroundOpacity = 1;\r\n this.backgroundStroke = 'transparent';\r\n this.backgroundStrokeWidth = 0;\r\n this.backgroundPadding = 5;\r\n this.percent = 0;\r\n this.radius = 90;\r\n this.space = 4;\r\n this.toFixed = 0;\r\n this.maxPercent = 1000;\r\n this.renderOnClick = true;\r\n this.units = '%';\r\n this.unitsFontSize = '10';\r\n this.unitsFontWeight = 'normal';\r\n this.unitsColor = '#444444';\r\n this.outerStrokeGradient = false;\r\n this.outerStrokeWidth = 8;\r\n this.outerStrokeColor = '#78C000';\r\n this.outerStrokeGradientStopColor = 'transparent';\r\n this.outerStrokeLinecap = 'round';\r\n this.innerStrokeColor = '#C7E596';\r\n this.innerStrokeWidth = 4;\r\n this.titleFormat = undefined;\r\n this.title = 'auto';\r\n this.titleColor = '#444444';\r\n this.titleFontSize = '20';\r\n this.titleFontWeight = 'normal';\r\n this.subtitleFormat = undefined;\r\n this.subtitle = 'progress';\r\n this.subtitleColor = '#A9A9A9';\r\n this.subtitleFontSize = '10';\r\n this.subtitleFontWeight = 'normal';\r\n this.imageSrc = undefined;\r\n this.imageHeight = undefined;\r\n this.imageWidth = undefined;\r\n this.animation = true;\r\n this.animateTitle = true;\r\n this.animateSubtitle = false;\r\n this.animationDuration = 500;\r\n this.showTitle = true;\r\n this.showSubtitle = true;\r\n this.showUnits = true;\r\n this.showImage = false;\r\n this.showBackground = true;\r\n this.showInnerStroke = true;\r\n this.clockwise = true;\r\n this.responsive = false;\r\n this.startFromZero = true;\r\n this.showZeroOuterStroke = true;\r\n this.lazy = false;\r\n }\r\n}\r\n/** @dynamic Prevent compiling error when using type `Document` https://github.com/angular/angular/issues/20351 */\r\nclass CircleProgressComponent {\r\n constructor(defaultOptions, elRef, document) {\r\n this.elRef = elRef;\r\n this.document = document;\r\n this.onClick = new EventEmitter();\r\n // of component\r\n this.svgElement = null;\r\n // whether is in viewport\r\n this.isInViewport = false;\r\n // event for notifying viewport change caused by scrolling or resizing\r\n this.onViewportChanged = new EventEmitter;\r\n this._viewportChangedSubscriber = null;\r\n this.options = new CircleProgressOptions();\r\n this.defaultOptions = new CircleProgressOptions();\r\n this._lastPercent = 0;\r\n this._gradientUUID = null;\r\n this.render = () => {\r\n this.applyOptions();\r\n if (this.options.lazy) {\r\n // Draw svg if it doesn't exist\r\n this.svgElement === null && this.draw(this._lastPercent);\r\n // Draw it only when it's in the viewport\r\n if (this.isInViewport) {\r\n // Draw it at the latest position when I am in.\r\n if (this.options.animation && this.options.animationDuration > 0) {\r\n this.animate(this._lastPercent, this.options.percent);\r\n }\r\n else {\r\n this.draw(this.options.percent);\r\n }\r\n this._lastPercent = this.options.percent;\r\n }\r\n }\r\n else {\r\n if (this.options.animation && this.options.animationDuration > 0) {\r\n this.animate(this._lastPercent, this.options.percent);\r\n }\r\n else {\r\n this.draw(this.options.percent);\r\n }\r\n this._lastPercent = this.options.percent;\r\n }\r\n };\r\n this.polarToCartesian = (centerX, centerY, radius, angleInDegrees) => {\r\n let angleInRadius = angleInDegrees * Math.PI / 180;\r\n let x = centerX + Math.sin(angleInRadius) * radius;\r\n let y = centerY - Math.cos(angleInRadius) * radius;\r\n return { x: x, y: y };\r\n };\r\n this.draw = (percent) => {\r\n // make percent reasonable\r\n percent = (percent === undefined) ? this.options.percent : Math.abs(percent);\r\n // circle percent shouldn't be greater than 100%.\r\n let circlePercent = (percent > 100) ? 100 : percent;\r\n // determine box size\r\n let boxSize = this.options.radius * 2 + this.options.outerStrokeWidth * 2;\r\n if (this.options.showBackground) {\r\n boxSize += (this.options.backgroundStrokeWidth * 2 + this.max(0, this.options.backgroundPadding * 2));\r\n }\r\n // the centre of the circle\r\n let centre = { x: boxSize / 2, y: boxSize / 2 };\r\n // the start point of the arc\r\n let startPoint = { x: centre.x, y: centre.y - this.options.radius };\r\n // get the end point of the arc\r\n let endPoint = this.polarToCartesian(centre.x, centre.y, this.options.radius, 360 * (this.options.clockwise ?\r\n circlePercent :\r\n (100 - circlePercent)) / 100); // ####################\r\n // We'll get an end point with the same [x, y] as the start point when percent is 100%, so move x a little bit.\r\n if (circlePercent === 100) {\r\n endPoint.x = endPoint.x + (this.options.clockwise ? -0.01 : +0.01);\r\n }\r\n // largeArcFlag and sweepFlag\r\n let largeArcFlag, sweepFlag;\r\n if (circlePercent > 50) {\r\n [largeArcFlag, sweepFlag] = this.options.clockwise ? [1, 1] : [1, 0];\r\n }\r\n else {\r\n [largeArcFlag, sweepFlag] = this.options.clockwise ? [0, 1] : [0, 0];\r\n }\r\n // percent may not equal the actual percent\r\n let titlePercent = this.options.animateTitle ? percent : this.options.percent;\r\n let titleTextPercent = titlePercent > this.options.maxPercent ?\r\n `${this.options.maxPercent.toFixed(this.options.toFixed)}+` : titlePercent.toFixed(this.options.toFixed);\r\n let subtitlePercent = this.options.animateSubtitle ? percent : this.options.percent;\r\n // get title object\r\n let title = {\r\n x: centre.x,\r\n y: centre.y,\r\n textAnchor: 'middle',\r\n color: this.options.titleColor,\r\n fontSize: this.options.titleFontSize,\r\n fontWeight: this.options.titleFontWeight,\r\n texts: [],\r\n tspans: []\r\n };\r\n // from v0.9.9, both title and titleFormat(...) may be an array of string.\r\n if (this.options.titleFormat !== undefined && this.options.titleFormat.constructor.name === 'Function') {\r\n let formatted = this.options.titleFormat(titlePercent);\r\n if (formatted instanceof Array) {\r\n title.texts = [...formatted];\r\n }\r\n else {\r\n title.texts.push(formatted.toString());\r\n }\r\n }\r\n else {\r\n if (this.options.title === 'auto') {\r\n title.texts.push(titleTextPercent);\r\n }\r\n else {\r\n if (this.options.title instanceof Array) {\r\n title.texts = [...this.options.title];\r\n }\r\n else {\r\n title.texts.push(this.options.title.toString());\r\n }\r\n }\r\n }\r\n // get subtitle object\r\n let subtitle = {\r\n x: centre.x,\r\n y: centre.y,\r\n textAnchor: 'middle',\r\n color: this.options.subtitleColor,\r\n fontSize: this.options.subtitleFontSize,\r\n fontWeight: this.options.subtitleFontWeight,\r\n texts: [],\r\n tspans: []\r\n };\r\n // from v0.9.9, both subtitle and subtitleFormat(...) may be an array of string.\r\n if (this.options.subtitleFormat !== undefined && this.options.subtitleFormat.constructor.name === 'Function') {\r\n let formatted = this.options.subtitleFormat(subtitlePercent);\r\n if (formatted instanceof Array) {\r\n subtitle.texts = [...formatted];\r\n }\r\n else {\r\n subtitle.texts.push(formatted.toString());\r\n }\r\n }\r\n else {\r\n if (this.options.subtitle instanceof Array) {\r\n subtitle.texts = [...this.options.subtitle];\r\n }\r\n else {\r\n subtitle.texts.push(this.options.subtitle.toString());\r\n }\r\n }\r\n // get units object\r\n let units = {\r\n text: `${this.options.units}`,\r\n fontSize: this.options.unitsFontSize,\r\n fontWeight: this.options.unitsFontWeight,\r\n color: this.options.unitsColor\r\n };\r\n // get total count of text lines to be shown\r\n let rowCount = 0, rowNum = 1;\r\n this.options.showTitle && (rowCount += title.texts.length);\r\n this.options.showSubtitle && (rowCount += subtitle.texts.length);\r\n // calc dy for each tspan for title\r\n if (this.options.showTitle) {\r\n for (let span of title.texts) {\r\n title.tspans.push({ span: span, dy: this.getRelativeY(rowNum, rowCount) });\r\n rowNum++;\r\n }\r\n }\r\n // calc dy for each tspan for subtitle\r\n if (this.options.showSubtitle) {\r\n for (let span of subtitle.texts) {\r\n subtitle.tspans.push({ span: span, dy: this.getRelativeY(rowNum, rowCount) });\r\n rowNum++;\r\n }\r\n }\r\n // create ID for gradient element\r\n if (null === this._gradientUUID) {\r\n this._gradientUUID = this.uuid();\r\n }\r\n // Bring it all together\r\n this.svg = {\r\n viewBox: `0 0 ${boxSize} ${boxSize}`,\r\n // Set both width and height to '100%' if it's responsive\r\n width: this.options.responsive ? '100%' : boxSize,\r\n height: this.options.responsive ? '100%' : boxSize,\r\n backgroundCircle: {\r\n cx: centre.x,\r\n cy: centre.y,\r\n r: this.options.radius + this.options.outerStrokeWidth / 2 + this.options.backgroundPadding,\r\n fill: this.options.backgroundColor,\r\n fillOpacity: this.options.backgroundOpacity,\r\n stroke: this.options.backgroundStroke,\r\n strokeWidth: this.options.backgroundStrokeWidth,\r\n },\r\n path: {\r\n // A rx ry x-axis-rotation large-arc-flag sweep-flag x y (https://developer.mozilla.org/en/docs/Web/SVG/Tutorial/Paths#Arcs)\r\n d: `M ${startPoint.x} ${startPoint.y}\n A ${this.options.radius} ${this.options.radius} 0 ${largeArcFlag} ${sweepFlag} ${endPoint.x} ${endPoint.y}`,\r\n stroke: this.options.outerStrokeColor,\r\n strokeWidth: this.options.outerStrokeWidth,\r\n strokeLinecap: this.options.outerStrokeLinecap,\r\n fill: 'none'\r\n },\r\n circle: {\r\n cx: centre.x,\r\n cy: centre.y,\r\n r: this.options.radius - this.options.space - this.options.outerStrokeWidth / 2 - this.options.innerStrokeWidth / 2,\r\n fill: 'none',\r\n stroke: this.options.innerStrokeColor,\r\n strokeWidth: this.options.innerStrokeWidth,\r\n },\r\n title: title,\r\n units: units,\r\n subtitle: subtitle,\r\n image: {\r\n x: centre.x - this.options.imageWidth / 2,\r\n y: centre.y - this.options.imageHeight / 2,\r\n src: this.options.imageSrc,\r\n width: this.options.imageWidth,\r\n height: this.options.imageHeight,\r\n },\r\n outerLinearGradient: {\r\n id: 'outer-linear-' + this._gradientUUID,\r\n colorStop1: this.options.outerStrokeColor,\r\n colorStop2: this.options.outerStrokeGradientStopColor === 'transparent' ? '#FFF' : this.options.outerStrokeGradientStopColor,\r\n },\r\n radialGradient: {\r\n id: 'radial-' + this._gradientUUID,\r\n colorStop1: this.options.backgroundColor,\r\n colorStop2: this.options.backgroundGradientStopColor === 'transparent' ? '#FFF' : this.options.backgroundGradientStopColor,\r\n }\r\n };\r\n };\r\n this.getAnimationParameters = (previousPercent, currentPercent) => {\r\n const MIN_INTERVAL = 10;\r\n let times, step, interval;\r\n let fromPercent = this.options.startFromZero ? 0 : (previousPercent < 0 ? 0 : previousPercent);\r\n let toPercent = currentPercent < 0 ? 0 : this.min(currentPercent, this.options.maxPercent);\r\n let delta = Math.abs(Math.round(toPercent - fromPercent));\r\n if (delta >= 100) {\r\n // we will finish animation in 100 times\r\n times = 100;\r\n if (!this.options.animateTitle && !this.options.animateSubtitle) {\r\n step = 1;\r\n }\r\n else {\r\n // show title or subtitle animation even if the arc is full, we also need to finish it in 100 times.\r\n step = Math.round(delta / times);\r\n }\r\n }\r\n else {\r\n // we will finish in as many times as the number of percent.\r\n times = delta;\r\n step = 1;\r\n }\r\n // Get the interval of timer\r\n interval = Math.round(this.options.animationDuration / times);\r\n // Readjust all values if the interval of timer is extremely small.\r\n if (interval < MIN_INTERVAL) {\r\n interval = MIN_INTERVAL;\r\n times = this.options.animationDuration / interval;\r\n if (!this.options.animateTitle && !this.options.animateSubtitle && delta > 100) {\r\n step = Math.round(100 / times);\r\n }\r\n else {\r\n step = Math.round(delta / times);\r\n }\r\n }\r\n // step must be greater than 0.\r\n if (step < 1) {\r\n step = 1;\r\n }\r\n return { times: times, step: step, interval: interval };\r\n };\r\n this.animate = (previousPercent, currentPercent) => {\r\n if (this._timerSubscription && !this._timerSubscription.closed) {\r\n this._timerSubscription.unsubscribe();\r\n }\r\n let fromPercent = this.options.startFromZero ? 0 : previousPercent;\r\n let toPercent = currentPercent;\r\n let { step: step, interval: interval } = this.getAnimationParameters(fromPercent, toPercent);\r\n let count = fromPercent;\r\n if (fromPercent < toPercent) {\r\n this._timerSubscription = timer(0, interval).subscribe(() => {\r\n count += step;\r\n if (count <= toPercent) {\r\n if (!this.options.animateTitle && !this.options.animateSubtitle && count >= 100) {\r\n this.draw(toPercent);\r\n this._timerSubscription.unsubscribe();\r\n }\r\n else {\r\n this.draw(count);\r\n }\r\n }\r\n else {\r\n this.draw(toPercent);\r\n this._timerSubscription.unsubscribe();\r\n }\r\n });\r\n }\r\n else {\r\n this._timerSubscription = timer(0, interval).subscribe(() => {\r\n count -= step;\r\n if (count >= toPercent) {\r\n if (!this.options.animateTitle && !this.options.animateSubtitle && toPercent >= 100) {\r\n this.draw(toPercent);\r\n this._timerSubscription.unsubscribe();\r\n }\r\n else {\r\n this.draw(count);\r\n }\r\n }\r\n else {\r\n this.draw(toPercent);\r\n this._timerSubscription.unsubscribe();\r\n }\r\n });\r\n }\r\n };\r\n this.emitClickEvent = (event) => {\r\n if (this.options.renderOnClick) {\r\n this.animate(0, this.options.percent);\r\n }\r\n this.onClick.emit(event);\r\n };\r\n this.applyOptions = () => {\r\n // the options of may change already\r\n for (let name of Object.keys(this.options)) {\r\n if (this.hasOwnProperty(name) && this[name] !== undefined) {\r\n this.options[name] = this[name];\r\n }\r\n else if (this.templateOptions && this.templateOptions[name] !== undefined) {\r\n this.options[name] = this.templateOptions[name];\r\n }\r\n }\r\n // make sure key options valid\r\n this.options.radius = Math.abs(+this.options.radius);\r\n this.options.space = +this.options.space;\r\n this.options.percent = +this.options.percent > 0 ? +this.options.percent : 0;\r\n this.options.maxPercent = Math.abs(+this.options.maxPercent);\r\n this.options.animationDuration = Math.abs(this.options.animationDuration);\r\n this.options.outerStrokeWidth = Math.abs(+this.options.outerStrokeWidth);\r\n this.options.innerStrokeWidth = Math.abs(+this.options.innerStrokeWidth);\r\n this.options.backgroundPadding = +this.options.backgroundPadding;\r\n };\r\n this.getRelativeY = (rowNum, rowCount) => {\r\n // why '-0.18em'? It's a magic number when property 'alignment-baseline' equals 'baseline'. :)\r\n let initialOffset = -0.18, offset = 1;\r\n return (initialOffset + offset * (rowNum - rowCount / 2)).toFixed(2) + 'em';\r\n };\r\n this.min = (a, b) => {\r\n return a < b ? a : b;\r\n };\r\n this.max = (a, b) => {\r\n return a > b ? a : b;\r\n };\r\n this.uuid = () => {\r\n // https://www.w3resource.com/javascript-exercises/javascript-math-exercise-23.php\r\n var dt = new Date().getTime();\r\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n };\r\n this.findSvgElement = function () {\r\n if (this.svgElement === null) {\r\n let tags = this.elRef.nativeElement.getElementsByTagName('svg');\r\n if (tags.length > 0) {\r\n this.svgElement = tags[0];\r\n }\r\n }\r\n };\r\n this.checkViewport = () => {\r\n this.findSvgElement();\r\n let previousValue = this.isInViewport;\r\n this.isInViewport = this.isElementInViewport(this.svgElement);\r\n if (previousValue !== this.isInViewport) {\r\n this.onViewportChanged.emit({ oldValue: previousValue, newValue: this.isInViewport });\r\n }\r\n };\r\n this.onScroll = (event) => {\r\n this.checkViewport();\r\n };\r\n this.loadEventsForLazyMode = () => {\r\n if (this.options.lazy) {\r\n this.document.addEventListener('scroll', this.onScroll, true);\r\n this.window.addEventListener('resize', this.onScroll, true);\r\n if (this._viewportChangedSubscriber === null) {\r\n this._viewportChangedSubscriber = this.onViewportChanged.subscribe(({ oldValue, newValue }) => {\r\n newValue ? this.render() : null;\r\n });\r\n }\r\n // svgElement must be created in DOM before being checked.\r\n // Is there a better way to check the existence of svgElemnt?\r\n let _timer = timer(0, 50).subscribe(() => {\r\n this.svgElement === null ? this.checkViewport() : _timer.unsubscribe();\r\n });\r\n }\r\n };\r\n this.unloadEventsForLazyMode = () => {\r\n // Remove event listeners\r\n this.document.removeEventListener('scroll', this.onScroll, true);\r\n this.window.removeEventListener('resize', this.onScroll, true);\r\n // Unsubscribe onViewportChanged\r\n if (this._viewportChangedSubscriber !== null) {\r\n this._viewportChangedSubscriber.unsubscribe();\r\n this._viewportChangedSubscriber = null;\r\n }\r\n };\r\n this.document = document;\r\n this.window = this.document.defaultView;\r\n Object.assign(this.options, defaultOptions);\r\n Object.assign(this.defaultOptions, defaultOptions);\r\n }\r\n isDrawing() {\r\n return (this._timerSubscription && !this._timerSubscription.closed);\r\n }\r\n isElementInViewport(el) {\r\n // Return false if el has not been created in page.\r\n if (el === null || el === undefined)\r\n return false;\r\n // Check if the element is out of view due to a container scrolling\r\n let rect = el.getBoundingClientRect(), parent = el.parentNode, parentRect;\r\n do {\r\n parentRect = parent.getBoundingClientRect();\r\n if (rect.top >= parentRect.bottom)\r\n return false;\r\n if (rect.bottom <= parentRect.top)\r\n return false;\r\n if (rect.left >= parentRect.right)\r\n return false;\r\n if (rect.right <= parentRect.left)\r\n return false;\r\n parent = parent.parentNode;\r\n } while (parent != this.document.body);\r\n // Check its within the document viewport\r\n if (rect.top >= (this.window.innerHeight || this.document.documentElement.clientHeight))\r\n return false;\r\n if (rect.bottom <= 0)\r\n return false;\r\n if (rect.left >= (this.window.innerWidth || this.document.documentElement.clientWidth))\r\n return false;\r\n if (rect.right <= 0)\r\n return false;\r\n return true;\r\n }\r\n ngOnInit() {\r\n this.loadEventsForLazyMode();\r\n }\r\n ngOnDestroy() {\r\n this.unloadEventsForLazyMode();\r\n }\r\n ngOnChanges(changes) {\r\n this.render();\r\n if ('lazy' in changes) {\r\n changes.lazy.currentValue ? this.loadEventsForLazyMode() : this.unloadEventsForLazyMode();\r\n }\r\n }\r\n}\nCircleProgressComponent.ɵfac = function CircleProgressComponent_Factory(t) { return new (t || CircleProgressComponent)(ɵngcc0.ɵɵdirectiveInject(CircleProgressOptions), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nCircleProgressComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CircleProgressComponent, selectors: [[\"circle-progress\"]], inputs: { name: \"name\", class: \"class\", backgroundGradient: \"backgroundGradient\", backgroundColor: \"backgroundColor\", backgroundGradientStopColor: \"backgroundGradientStopColor\", backgroundOpacity: \"backgroundOpacity\", backgroundStroke: \"backgroundStroke\", backgroundStrokeWidth: \"backgroundStrokeWidth\", backgroundPadding: \"backgroundPadding\", radius: \"radius\", space: \"space\", percent: \"percent\", toFixed: \"toFixed\", maxPercent: \"maxPercent\", renderOnClick: \"renderOnClick\", units: \"units\", unitsFontSize: \"unitsFontSize\", unitsFontWeight: \"unitsFontWeight\", unitsColor: \"unitsColor\", outerStrokeGradient: \"outerStrokeGradient\", outerStrokeWidth: \"outerStrokeWidth\", outerStrokeColor: \"outerStrokeColor\", outerStrokeGradientStopColor: \"outerStrokeGradientStopColor\", outerStrokeLinecap: \"outerStrokeLinecap\", innerStrokeColor: \"innerStrokeColor\", innerStrokeWidth: \"innerStrokeWidth\", titleFormat: \"titleFormat\", title: \"title\", titleColor: \"titleColor\", titleFontSize: \"titleFontSize\", titleFontWeight: \"titleFontWeight\", subtitleFormat: \"subtitleFormat\", subtitle: \"subtitle\", subtitleColor: \"subtitleColor\", subtitleFontSize: \"subtitleFontSize\", subtitleFontWeight: \"subtitleFontWeight\", imageSrc: \"imageSrc\", imageHeight: \"imageHeight\", imageWidth: \"imageWidth\", animation: \"animation\", animateTitle: \"animateTitle\", animateSubtitle: \"animateSubtitle\", animationDuration: \"animationDuration\", showTitle: \"showTitle\", showSubtitle: \"showSubtitle\", showUnits: \"showUnits\", showImage: \"showImage\", showBackground: \"showBackground\", showInnerStroke: \"showInnerStroke\", clockwise: \"clockwise\", responsive: \"responsive\", startFromZero: \"startFromZero\", showZeroOuterStroke: \"showZeroOuterStroke\", lazy: \"lazy\", templateOptions: [\"options\", \"templateOptions\"] }, outputs: { onClick: \"onClick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[\"xmlns\", \"http://www.w3.org/2000/svg\", \"preserveAspectRatio\", \"xMidYMid meet\", 3, \"click\", 4, \"ngIf\"], [\"xmlns\", \"http://www.w3.org/2000/svg\", \"preserveAspectRatio\", \"xMidYMid meet\", 3, \"click\"], [4, \"ngIf\"], [\"alignment-baseline\", \"baseline\", 4, \"ngIf\"], [\"preserveAspectRatio\", \"none\", 4, \"ngIf\"], [\"offset\", \"5%\"], [\"offset\", \"95%\"], [\"alignment-baseline\", \"baseline\"], [4, \"ngFor\", \"ngForOf\"], [\"preserveAspectRatio\", \"none\"]], template: function CircleProgressComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CircleProgressComponent__svg_svg_0_Template, 9, 11, \"svg\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.svg);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf], encapsulation: 2 });\r\nCircleProgressComponent.ctorParameters = () => [\r\n { type: CircleProgressOptions },\r\n { type: ElementRef },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\r\nCircleProgressComponent.propDecorators = {\r\n onClick: [{ type: Output }],\r\n name: [{ type: Input }],\r\n class: [{ type: Input }],\r\n backgroundGradient: [{ type: Input }],\r\n backgroundColor: [{ type: Input }],\r\n backgroundGradientStopColor: [{ type: Input }],\r\n backgroundOpacity: [{ type: Input }],\r\n backgroundStroke: [{ type: Input }],\r\n backgroundStrokeWidth: [{ type: Input }],\r\n backgroundPadding: [{ type: Input }],\r\n radius: [{ type: Input }],\r\n space: [{ type: Input }],\r\n percent: [{ type: Input }],\r\n toFixed: [{ type: Input }],\r\n maxPercent: [{ type: Input }],\r\n renderOnClick: [{ type: Input }],\r\n units: [{ type: Input }],\r\n unitsFontSize: [{ type: Input }],\r\n unitsFontWeight: [{ type: Input }],\r\n unitsColor: [{ type: Input }],\r\n outerStrokeGradient: [{ type: Input }],\r\n outerStrokeWidth: [{ type: Input }],\r\n outerStrokeColor: [{ type: Input }],\r\n outerStrokeGradientStopColor: [{ type: Input }],\r\n outerStrokeLinecap: [{ type: Input }],\r\n innerStrokeColor: [{ type: Input }],\r\n innerStrokeWidth: [{ type: Input }],\r\n titleFormat: [{ type: Input }],\r\n title: [{ type: Input }],\r\n titleColor: [{ type: Input }],\r\n titleFontSize: [{ type: Input }],\r\n titleFontWeight: [{ type: Input }],\r\n subtitleFormat: [{ type: Input }],\r\n subtitle: [{ type: Input }],\r\n subtitleColor: [{ type: Input }],\r\n subtitleFontSize: [{ type: Input }],\r\n subtitleFontWeight: [{ type: Input }],\r\n imageSrc: [{ type: Input }],\r\n imageHeight: [{ type: Input }],\r\n imageWidth: [{ type: Input }],\r\n animation: [{ type: Input }],\r\n animateTitle: [{ type: Input }],\r\n animateSubtitle: [{ type: Input }],\r\n animationDuration: [{ type: Input }],\r\n showTitle: [{ type: Input }],\r\n showSubtitle: [{ type: Input }],\r\n showUnits: [{ type: Input }],\r\n showImage: [{ type: Input }],\r\n showBackground: [{ type: Input }],\r\n showInnerStroke: [{ type: Input }],\r\n clockwise: [{ type: Input }],\r\n responsive: [{ type: Input }],\r\n startFromZero: [{ type: Input }],\r\n showZeroOuterStroke: [{ type: Input }],\r\n lazy: [{ type: Input }],\r\n templateOptions: [{ type: Input, args: ['options',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircleProgressComponent, [{\n type: Component,\n args: [{\n selector: 'circle-progress',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{tspan.span}}\n \n {{svg.units.text}}\n \n {{tspan.span}}\n \n \n \n \n `\n }]\n }], function () { return [{ type: CircleProgressOptions }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { onClick: [{\n type: Output\n }], name: [{\n type: Input\n }], class: [{\n type: Input\n }], backgroundGradient: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], backgroundGradientStopColor: [{\n type: Input\n }], backgroundOpacity: [{\n type: Input\n }], backgroundStroke: [{\n type: Input\n }], backgroundStrokeWidth: [{\n type: Input\n }], backgroundPadding: [{\n type: Input\n }], radius: [{\n type: Input\n }], space: [{\n type: Input\n }], percent: [{\n type: Input\n }], toFixed: [{\n type: Input\n }], maxPercent: [{\n type: Input\n }], renderOnClick: [{\n type: Input\n }], units: [{\n type: Input\n }], unitsFontSize: [{\n type: Input\n }], unitsFontWeight: [{\n type: Input\n }], unitsColor: [{\n type: Input\n }], outerStrokeGradient: [{\n type: Input\n }], outerStrokeWidth: [{\n type: Input\n }], outerStrokeColor: [{\n type: Input\n }], outerStrokeGradientStopColor: [{\n type: Input\n }], outerStrokeLinecap: [{\n type: Input\n }], innerStrokeColor: [{\n type: Input\n }], innerStrokeWidth: [{\n type: Input\n }], titleFormat: [{\n type: Input\n }], title: [{\n type: Input\n }], titleColor: [{\n type: Input\n }], titleFontSize: [{\n type: Input\n }], titleFontWeight: [{\n type: Input\n }], subtitleFormat: [{\n type: Input\n }], subtitle: [{\n type: Input\n }], subtitleColor: [{\n type: Input\n }], subtitleFontSize: [{\n type: Input\n }], subtitleFontWeight: [{\n type: Input\n }], imageSrc: [{\n type: Input\n }], imageHeight: [{\n type: Input\n }], imageWidth: [{\n type: Input\n }], animation: [{\n type: Input\n }], animateTitle: [{\n type: Input\n }], animateSubtitle: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], showTitle: [{\n type: Input\n }], showSubtitle: [{\n type: Input\n }], showUnits: [{\n type: Input\n }], showImage: [{\n type: Input\n }], showBackground: [{\n type: Input\n }], showInnerStroke: [{\n type: Input\n }], clockwise: [{\n type: Input\n }], responsive: [{\n type: Input\n }], startFromZero: [{\n type: Input\n }], showZeroOuterStroke: [{\n type: Input\n }], lazy: [{\n type: Input\n }], templateOptions: [{\n type: Input,\n args: ['options']\n }] }); })();\n\nclass NgCircleProgressModule {\r\n static forRoot(options = {}) {\r\n return {\r\n ngModule: NgCircleProgressModule,\r\n providers: [\r\n { provide: CircleProgressOptions, useValue: options }\r\n ]\r\n };\r\n }\r\n}\nNgCircleProgressModule.ɵfac = function NgCircleProgressModule_Factory(t) { return new (t || NgCircleProgressModule)(); };\nNgCircleProgressModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgCircleProgressModule });\nNgCircleProgressModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgCircleProgressModule, [{\n type: NgModule,\n args: [{\n declarations: [CircleProgressComponent],\n imports: [\n CommonModule\n ],\n exports: [CircleProgressComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgCircleProgressModule, { declarations: function () { return [CircleProgressComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [CircleProgressComponent]; } }); })();\n\n/*\r\n * Public API Surface of ng-circle-progress\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { CircleProgressComponent, CircleProgressOptions, NgCircleProgressModule };\n\n","import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n getValue() {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n }\n next(value) {\n super.next(this._value = value);\n }\n}\n","import { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nexport class Notification {\n constructor(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n observe(observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n do(next, error, complete) {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n accept(nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n }\n toObservable() {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n static createNext(value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n static createError(err) {\n return new Notification('E', undefined, err);\n }\n static createComplete() {\n return Notification.completeNotification;\n }\n}\nNotification.completeNotification = new Notification('C');\nNotification.undefinedValueNotification = new Notification('N', undefined);\n","import { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nexport class Observable {\n constructor(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n }\n _subscribe(subscriber) {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n const { closed, destination, isStopped } = observer;\n if (closed || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n","import { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport const empty = {\n closed: true,\n next(value) { },\n error(err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete() { }\n};\n","import { Subscriber } from './Subscriber';\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error, innerSub) {\n this.destination.error(error);\n }\n notifyComplete(innerSub) {\n this.destination.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nexport class ReplaySubject extends Subject {\n constructor(bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, scheduler) {\n super();\n this.scheduler = scheduler;\n this._events = [];\n this._infiniteTimeWindow = false;\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n }\n else {\n this.next = this.nextTimeWindow;\n }\n }\n nextInfiniteTimeWindow(value) {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n nextTimeWindow(value) {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n _subscribe(subscriber) {\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n }\n _getNow() {\n return (this.scheduler || queue).now();\n }\n _trimBufferThenGetEvents() {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = this._events;\n const eventsCount = _events.length;\n let spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n }\n}\nclass ReplayEvent {\n constructor(time, value) {\n this.time = time;\n this.value = value;\n }\n}\n","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nexport class SubjectSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.destination = destination;\n }\n}\nexport class Subject extends Observable {\n constructor() {\n super();\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n next(value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n error(err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n _trySubscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return super._trySubscribe(subscriber);\n }\n }\n _subscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n error(err) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subscription } from './Subscription';\nexport class SubjectSubscription extends Subscription {\n constructor(subject, subscriber) {\n super();\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const subject = this.subject;\n const observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n const subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport class Subscriber extends Subscription {\n constructor(destinationOrNext, error, complete) {\n super();\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n [rxSubscriberSymbol]() { return this; }\n static create(next, error, complete) {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n next(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n error(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.destination.complete();\n this.unsubscribe();\n }\n _unsubscribeAndRecycle() {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(_parentSubscriber, observerOrNext, error, complete) {\n super();\n this._parentSubscriber = _parentSubscriber;\n let next;\n let context = this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n next(value) {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n error(err) {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n complete() {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n }\n __tryOrUnsub(fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n }\n __tryOrSetError(parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n _unsubscribe() {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","const UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport const UnsubscriptionError = UnsubscriptionErrorImpl;\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport class Subscription {\n constructor(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n unsubscribe() {\n let errors;\n if (this.closed) {\n return;\n }\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = this;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n add(teardown) {\n let subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n }\n remove(subscription) {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\nSubscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n}(new Subscription()));\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport const config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","import { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(parent) {\n super();\n this.parent = parent;\n }\n _next(value) {\n this.parent.notifyNext(value);\n }\n _error(error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n _error(error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\nexport class SimpleOuterSubscriber extends Subscriber {\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyError(err) {\n this.destination.error(err);\n }\n notifyComplete() {\n this.destination.complete();\n }\n}\nexport class ComplexOuterSubscriber extends Subscriber {\n notifyNext(_outerValue, innerValue, _outerIndex, _innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error) {\n this.destination.error(error);\n }\n notifyComplete(_innerSub) {\n this.destination.complete();\n }\n}\nexport function innerSubscribe(result, innerSubscriber) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber);\n }\n catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nexport class ConnectableObservable extends Observable {\n constructor(source, subjectFactory) {\n super();\n this.source = source;\n this.subjectFactory = subjectFactory;\n this._refCount = 0;\n this._isComplete = false;\n }\n _subscribe(subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n getSubject() {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n connect() {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n refCount() {\n return higherOrderRefCount()(this);\n }\n}\nexport const connectableObservableDescriptor = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _error(err) {\n this._unsubscribe();\n super._error(err);\n }\n _complete() {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nconst NONE = {};\nexport function combineLatest(...observables) {\n let resultSelector = undefined;\n let scheduler = undefined;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nexport class CombineLatestOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class CombineLatestSubscriber extends OuterSubscriber {\n constructor(destination, resultSelector) {\n super(destination);\n this.resultSelector = resultSelector;\n this.active = 0;\n this.values = [];\n this.observables = [];\n }\n _next(observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n notifyComplete(unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n }\n _tryResultSelector(values) {\n let result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat(...observables) {\n return concatAll()(of(...observables));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(subscriber => {\n let input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n }, err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n })));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator;\n sub.add(() => {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value;\n let done;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nconst toString = (() => Object.prototype.toString)();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(args => isArray(args) ? resultSelector(...args) : resultSelector(args)));\n }\n return new Observable(subscriber => {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n let unsubscribe;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = () => source.removeListener(eventName, handler);\n }\n else if (sourceObj && sourceObj.length) {\n for (let i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge(...observables) {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler = null;\n let last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of(...args) {\n let scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n","import { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n }\n else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\nfunction dispatch({ error, subscriber }) {\n subscriber.error(error);\n}\n","import { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime = 0, periodOrScheduler, scheduler) {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\nfunction dispatch(state) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nclass CatchOperator {\n constructor(selector) {\n this.selector = selector;\n }\n call(subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination, selector, caught) {\n super(destination);\n this.selector = selector;\n this.caught = caught;\n }\n error(err) {\n if (!this.isStopped) {\n let result;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { mergeMap } from './mergeMap';\nexport function concatMap(project, resultSelector) {\n return mergeMap(project, resultSelector, 1);\n}\n","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function debounceTime(dueTime, scheduler = async) {\n return (source) => source.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\nclass DebounceTimeOperator {\n constructor(dueTime, scheduler) {\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n }\n}\nclass DebounceTimeSubscriber extends Subscriber {\n constructor(destination, dueTime, scheduler) {\n super(destination);\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n this.debouncedSubscription = null;\n this.lastValue = null;\n this.hasValue = false;\n }\n _next(value) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n }\n _complete() {\n this.debouncedNext();\n this.destination.complete();\n }\n debouncedNext() {\n this.clearDebounce();\n if (this.hasValue) {\n const { lastValue } = this;\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n }\n clearDebounce() {\n const debouncedSubscription = this.debouncedSubscription;\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n }\n}\nfunction dispatchNext(subscriber) {\n subscriber.debouncedNext();\n}\n","import { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue = null) {\n return (source) => source.lift(new DefaultIfEmptyOperator(defaultValue));\n}\nclass DefaultIfEmptyOperator {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n call(subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\nclass DefaultIfEmptySubscriber extends Subscriber {\n constructor(destination, defaultValue) {\n super(destination);\n this.defaultValue = defaultValue;\n this.isEmpty = true;\n }\n _next(value) {\n this.isEmpty = false;\n this.destination.next(value);\n }\n _complete() {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return (source) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\nclass DistinctUntilChangedOperator {\n constructor(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n call(subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\nclass DistinctUntilChangedSubscriber extends Subscriber {\n constructor(destination, compare, keySelector) {\n super(destination);\n this.keySelector = keySelector;\n this.hasKey = false;\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n compare(x, y) {\n return x === y;\n }\n _next(value) {\n let key;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return (source) => source.pipe(exhaustMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return (source) => source.lift(new ExhaustMapOperator(project));\n}\nclass ExhaustMapOperator {\n constructor(project) {\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));\n }\n}\nclass ExhaustMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project) {\n super(destination);\n this.project = project;\n this.hasSubscription = false;\n this.hasCompleted = false;\n this.index = 0;\n }\n _next(value) {\n if (!this.hasSubscription) {\n this.tryNext(value);\n }\n }\n tryNext(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.hasSubscription = true;\n this._innerSub(result);\n }\n _innerSub(result) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n _complete() {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete();\n }\n this.unsubscribe();\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyError(err) {\n this.destination.error(err);\n }\n notifyComplete() {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete();\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nclass FilterOperator {\n constructor(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\nclass FilterSubscriber extends Subscriber {\n constructor(destination, predicate, thisArg) {\n super(destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n _next(value) {\n let result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexport class MapOperator {\n constructor(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\nclass MapSubscriber extends Subscriber {\n constructor(destination, project, thisArg) {\n super(destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n _next(value) {\n let result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Number.POSITIVE_INFINITY) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function mergeMap(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(mergeMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii))), concurrent));\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source) => source.lift(new MergeMapOperator(project, concurrent));\n}\nexport class MergeMapOperator {\n constructor(project, concurrent = Number.POSITIVE_INFINITY) {\n this.project = project;\n this.concurrent = concurrent;\n }\n call(observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n }\n}\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project, concurrent = Number.POSITIVE_INFINITY) {\n super(destination);\n this.project = project;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n _next(value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n }\n _tryNext(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n _innerSub(ish) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n _complete() {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyComplete() {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n }\n}\nexport const flatMap = mergeMap;\n","import { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay = 0) {\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexport class ObserveOnOperator {\n constructor(scheduler, delay = 0) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n call(subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\nexport class ObserveOnSubscriber extends Subscriber {\n constructor(destination, scheduler, delay = 0) {\n super(destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n static dispatch(arg) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n scheduleMessage(notification) {\n const destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n }\n _next(value) {\n this.scheduleMessage(Notification.createNext(value));\n }\n _error(err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n _complete() {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\nexport class ObserveOnMessage {\n constructor(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function scan(accumulator, seed) {\n let hasSeed = false;\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n return function scanOperatorFunction(source) {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\nclass ScanOperator {\n constructor(accumulator, seed, hasSeed = false) {\n this.accumulator = accumulator;\n this.seed = seed;\n this.hasSeed = hasSeed;\n }\n call(subscriber, source) {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n }\n}\nclass ScanSubscriber extends Subscriber {\n constructor(destination, accumulator, _seed, hasSeed) {\n super(destination);\n this.accumulator = accumulator;\n this._seed = _seed;\n this.hasSeed = hasSeed;\n this.index = 0;\n }\n get seed() {\n return this._seed;\n }\n set seed(value) {\n this.hasSeed = true;\n this._seed = value;\n }\n _next(value) {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n }\n else {\n return this._tryNext(value);\n }\n }\n _tryNext(value) {\n const index = this.index++;\n let result;\n try {\n result = this.accumulator(this.seed, value, index);\n }\n catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n }\n}\n","import { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n let subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n const connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nexport class MulticastOperator {\n constructor(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n call(subscriber, source) {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return (source) => refCount()(multicast(shareSubjectFactory)(source));\n}\n","import { Subscriber } from '../Subscriber';\nexport function skip(count) {\n return (source) => source.lift(new SkipOperator(count));\n}\nclass SkipOperator {\n constructor(total) {\n this.total = total;\n }\n call(subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\nclass SkipSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","import { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith(...array) {\n const scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return (source) => concat(array, source, scheduler);\n }\n else {\n return (source) => concat(array, source);\n }\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(switchMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return (source) => source.lift(new SwitchMapOperator(project));\n}\nclass SwitchMapOperator {\n constructor(project) {\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project) {\n super(destination);\n this.project = project;\n this.index = 0;\n }\n _next(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result);\n }\n _innerSub(result) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n _complete() {\n const { innerSubscription } = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n _unsubscribe() {\n this.innerSubscription = undefined;\n }\n notifyComplete() {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return (source) => {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nclass TakeOperator {\n constructor(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\nclass TakeSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(value) {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\nexport function takeUntil(notifier) {\n return (source) => source.lift(new TakeUntilOperator(notifier));\n}\nclass TakeUntilOperator {\n constructor(notifier) {\n this.notifier = notifier;\n }\n call(subscriber, source) {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n constructor(destination) {\n super(destination);\n this.seenValue = false;\n }\n notifyNext() {\n this.seenValue = true;\n this.complete();\n }\n notifyComplete() {\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nclass DoOperator {\n constructor(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n call(subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\nclass TapSubscriber extends Subscriber {\n constructor(destination, observerOrNext, error, complete) {\n super(destination);\n this._tapNext = noop;\n this._tapError = noop;\n this._tapComplete = noop;\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n _next(value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n _error(err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n _complete() {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return (source) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nclass ThrowIfEmptyOperator {\n constructor(errorFactory) {\n this.errorFactory = errorFactory;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\nclass ThrowIfEmptySubscriber extends Subscriber {\n constructor(destination, errorFactory) {\n super(destination);\n this.errorFactory = errorFactory;\n this.hasValue = false;\n }\n _next(value) {\n this.hasValue = true;\n this.destination.next(value);\n }\n _complete() {\n if (!this.hasValue) {\n let err;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n }\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","const TimeoutErrorImpl = (() => {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport const TimeoutError = TimeoutErrorImpl;\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport function timeoutWith(due, withObservable, scheduler = async) {\n return (source) => {\n let absoluteTimeout = isDate(due);\n let waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nclass TimeoutWithOperator {\n constructor(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n }\n}\nclass TimeoutWithSubscriber extends SimpleOuterSubscriber {\n constructor(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n super(destination);\n this.absoluteTimeout = absoluteTimeout;\n this.waitFor = waitFor;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n this.scheduleTimeout();\n }\n static dispatchTimeout(subscriber) {\n const { withObservable } = subscriber;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(innerSubscribe(withObservable, new SimpleInnerSubscriber(subscriber)));\n }\n scheduleTimeout() {\n const { action } = this;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n }\n _next(value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n super._next(value);\n }\n _unsubscribe() {\n this.action = undefined;\n this.scheduler = null;\n this.withObservable = null;\n }\n}\n","import { async } from '../scheduler/async';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\nexport function timeout(due, scheduler = async) {\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom(...args) {\n return (source) => {\n let project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nclass WithLatestFromOperator {\n constructor(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\nclass WithLatestFromSubscriber extends OuterSubscriber {\n constructor(destination, observables, project) {\n super(destination);\n this.observables = observables;\n this.project = project;\n this.toRespond = [];\n const len = observables.length;\n this.values = new Array(len);\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n notifyComplete() {\n }\n _next(value) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n }\n _tryProject(args) {\n let result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","import { Action } from './Action';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, delay) {\n let errored = false;\n let errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n _unsubscribe() {\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n }\n}\n","export class Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\nScheduler.now = () => Date.now();\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n });\n this.actions = [];\n this.active = false;\n this.scheduled = undefined;\n }\n schedule(work, delay = 0, state) {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return super.schedule(work, delay, state);\n }\n }\n flush(action) {\n const { actions } = this;\n if (this.active) {\n actions.push(action);\n return;\n }\n let error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport const queueScheduler = new QueueScheduler(QueueAction);\nexport const queue = queueScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { AsyncAction } from './AsyncAction';\nexport class QueueAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n schedule(state, delay = 0) {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n execute(state, delay) {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay);\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n return scheduler.flush(this);\n }\n}\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\nexport const $$iterator = iterator;\n","export const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","export const rxSubscriber = (() => typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\nexport const $$rxSubscriber = rxSubscriber;\n","const ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport const ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n","const EmptyErrorImpl = (() => {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport const EmptyError = EmptyErrorImpl;\n","const ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport const ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n","export function hostReportError(err) {\n setTimeout(() => { throw err; }, 0);\n}\n","export function identity(x) {\n return x;\n}\n","export const isArray = (() => Array.isArray || ((x) => x && typeof x.length === 'number'))();\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","export function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n","export function isFunction(x) {\n return typeof x === 'function';\n}\n","export function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n","export function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n","export function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n","export function noop() { }\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeTo = (result) => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeToObservable = (obj) => (subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n};\n","import { hostReportError } from './hostReportError';\nexport const subscribeToPromise = (promise) => (subscriber) => {\n promise.then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, hostReportError);\n return subscriber;\n};\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport const subscribeToIterable = (iterable) => (subscriber) => {\n const iterator = iterable[Symbol_iterator]();\n do {\n let item;\n try {\n item = iterator.next();\n }\n catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n};\n","export const subscribeToArray = (array) => (subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { Subscriber } from './Subscriber';\nexport class InnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n _error(error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n","var map = {\n\t\"./af\": 8685,\n\t\"./af.js\": 8685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 2614,\n\t\"./ar-kw.js\": 2614,\n\t\"./ar-ly\": 8630,\n\t\"./ar-ly.js\": 8630,\n\t\"./ar-ma\": 4342,\n\t\"./ar-ma.js\": 4342,\n\t\"./ar-ps\": 6235,\n\t\"./ar-ps.js\": 6235,\n\t\"./ar-sa\": 9032,\n\t\"./ar-sa.js\": 9032,\n\t\"./ar-tn\": 4730,\n\t\"./ar-tn.js\": 4730,\n\t\"./ar.js\": 254,\n\t\"./az\": 3052,\n\t\"./az.js\": 3052,\n\t\"./be\": 150,\n\t\"./be.js\": 150,\n\t\"./bg\": 3069,\n\t\"./bg.js\": 3069,\n\t\"./bm\": 3466,\n\t\"./bm.js\": 3466,\n\t\"./bn\": 8516,\n\t\"./bn-bd\": 557,\n\t\"./bn-bd.js\": 557,\n\t\"./bn.js\": 8516,\n\t\"./bo\": 6273,\n\t\"./bo.js\": 6273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 9815,\n\t\"./bs.js\": 9815,\n\t\"./ca\": 3331,\n\t\"./ca.js\": 3331,\n\t\"./cs\": 1320,\n\t\"./cs.js\": 1320,\n\t\"./cv\": 2219,\n\t\"./cv.js\": 2219,\n\t\"./cy\": 8266,\n\t\"./cy.js\": 8266,\n\t\"./da\": 6427,\n\t\"./da.js\": 6427,\n\t\"./de\": 7435,\n\t\"./de-at\": 2871,\n\t\"./de-at.js\": 2871,\n\t\"./de-ch\": 2994,\n\t\"./de-ch.js\": 2994,\n\t\"./de.js\": 7435,\n\t\"./dv\": 2357,\n\t\"./dv.js\": 2357,\n\t\"./el\": 5649,\n\t\"./el.js\": 5649,\n\t\"./en-au\": 9961,\n\t\"./en-au.js\": 9961,\n\t\"./en-ca\": 9878,\n\t\"./en-ca.js\": 9878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 864,\n\t\"./en-ie.js\": 864,\n\t\"./en-il\": 1579,\n\t\"./en-il.js\": 1579,\n\t\"./en-in\": 940,\n\t\"./en-in.js\": 940,\n\t\"./en-nz\": 6181,\n\t\"./en-nz.js\": 6181,\n\t\"./en-sg\": 4301,\n\t\"./en-sg.js\": 4301,\n\t\"./eo\": 5291,\n\t\"./eo.js\": 5291,\n\t\"./es\": 4529,\n\t\"./es-do\": 3764,\n\t\"./es-do.js\": 3764,\n\t\"./es-mx\": 2584,\n\t\"./es-mx.js\": 2584,\n\t\"./es-us\": 3425,\n\t\"./es-us.js\": 3425,\n\t\"./es.js\": 4529,\n\t\"./et\": 5203,\n\t\"./et.js\": 5203,\n\t\"./eu\": 678,\n\t\"./eu.js\": 678,\n\t\"./fa\": 3483,\n\t\"./fa.js\": 3483,\n\t\"./fi\": 6262,\n\t\"./fi.js\": 6262,\n\t\"./fil\": 2521,\n\t\"./fil.js\": 2521,\n\t\"./fo\": 4555,\n\t\"./fo.js\": 4555,\n\t\"./fr\": 3131,\n\t\"./fr-ca\": 9547,\n\t\"./fr-ca.js\": 9547,\n\t\"./fr-ch\": 1702,\n\t\"./fr-ch.js\": 1702,\n\t\"./fr.js\": 3131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 3821,\n\t\"./ga.js\": 3821,\n\t\"./gd\": 1753,\n\t\"./gd.js\": 1753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 2762,\n\t\"./gom-deva.js\": 2762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 2809,\n\t\"./gu.js\": 2809,\n\t\"./he\": 5402,\n\t\"./he.js\": 5402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 410,\n\t\"./hr.js\": 410,\n\t\"./hu\": 8288,\n\t\"./hu.js\": 8288,\n\t\"./hy-am\": 8999,\n\t\"./hy-am.js\": 8999,\n\t\"./id\": 1334,\n\t\"./id.js\": 1334,\n\t\"./is\": 6959,\n\t\"./is.js\": 6959,\n\t\"./it\": 4864,\n\t\"./it-ch\": 1124,\n\t\"./it-ch.js\": 1124,\n\t\"./it.js\": 4864,\n\t\"./ja\": 6141,\n\t\"./ja.js\": 6141,\n\t\"./jv\": 9187,\n\t\"./jv.js\": 9187,\n\t\"./ka\": 2136,\n\t\"./ka.js\": 2136,\n\t\"./kk\": 4332,\n\t\"./kk.js\": 4332,\n\t\"./km\": 8607,\n\t\"./km.js\": 8607,\n\t\"./kn\": 4305,\n\t\"./kn.js\": 4305,\n\t\"./ko\": 234,\n\t\"./ko.js\": 234,\n\t\"./ku\": 6003,\n\t\"./ku-kmr\": 9619,\n\t\"./ku-kmr.js\": 9619,\n\t\"./ku.js\": 6003,\n\t\"./ky\": 5061,\n\t\"./ky.js\": 5061,\n\t\"./lb\": 2786,\n\t\"./lb.js\": 2786,\n\t\"./lo\": 6183,\n\t\"./lo.js\": 6183,\n\t\"./lt\": 29,\n\t\"./lt.js\": 29,\n\t\"./lv\": 4169,\n\t\"./lv.js\": 4169,\n\t\"./me\": 8577,\n\t\"./me.js\": 8577,\n\t\"./mi\": 8177,\n\t\"./mi.js\": 8177,\n\t\"./mk\": 337,\n\t\"./mk.js\": 337,\n\t\"./ml\": 5260,\n\t\"./ml.js\": 5260,\n\t\"./mn\": 2325,\n\t\"./mn.js\": 2325,\n\t\"./mr\": 4695,\n\t\"./mr.js\": 4695,\n\t\"./ms\": 5334,\n\t\"./ms-my\": 7151,\n\t\"./ms-my.js\": 7151,\n\t\"./ms.js\": 5334,\n\t\"./mt\": 3570,\n\t\"./mt.js\": 3570,\n\t\"./my\": 7963,\n\t\"./my.js\": 7963,\n\t\"./nb\": 8028,\n\t\"./nb.js\": 8028,\n\t\"./ne\": 6638,\n\t\"./ne.js\": 6638,\n\t\"./nl\": 302,\n\t\"./nl-be\": 6782,\n\t\"./nl-be.js\": 6782,\n\t\"./nl.js\": 302,\n\t\"./nn\": 3501,\n\t\"./nn.js\": 3501,\n\t\"./oc-lnc\": 563,\n\t\"./oc-lnc.js\": 563,\n\t\"./pa-in\": 869,\n\t\"./pa-in.js\": 869,\n\t\"./pl\": 5302,\n\t\"./pl.js\": 5302,\n\t\"./pt\": 9687,\n\t\"./pt-br\": 4884,\n\t\"./pt-br.js\": 4884,\n\t\"./pt.js\": 9687,\n\t\"./ro\": 9107,\n\t\"./ro.js\": 9107,\n\t\"./ru\": 3627,\n\t\"./ru.js\": 3627,\n\t\"./sd\": 355,\n\t\"./sd.js\": 355,\n\t\"./se\": 3427,\n\t\"./se.js\": 3427,\n\t\"./si\": 1848,\n\t\"./si.js\": 1848,\n\t\"./sk\": 4590,\n\t\"./sk.js\": 4590,\n\t\"./sl\": 184,\n\t\"./sl.js\": 184,\n\t\"./sq\": 6361,\n\t\"./sq.js\": 6361,\n\t\"./sr\": 8965,\n\t\"./sr-cyrl\": 1287,\n\t\"./sr-cyrl.js\": 1287,\n\t\"./sr.js\": 8965,\n\t\"./ss\": 5456,\n\t\"./ss.js\": 5456,\n\t\"./sv\": 451,\n\t\"./sv.js\": 451,\n\t\"./sw\": 7558,\n\t\"./sw.js\": 7558,\n\t\"./ta\": 2702,\n\t\"./ta.js\": 2702,\n\t\"./te\": 3693,\n\t\"./te.js\": 3693,\n\t\"./tet\": 1243,\n\t\"./tet.js\": 1243,\n\t\"./tg\": 2500,\n\t\"./tg.js\": 2500,\n\t\"./th\": 5768,\n\t\"./th.js\": 5768,\n\t\"./tk\": 7761,\n\t\"./tk.js\": 7761,\n\t\"./tl-ph\": 5780,\n\t\"./tl-ph.js\": 5780,\n\t\"./tlh\": 9590,\n\t\"./tlh.js\": 9590,\n\t\"./tr\": 3807,\n\t\"./tr.js\": 3807,\n\t\"./tzl\": 3857,\n\t\"./tzl.js\": 3857,\n\t\"./tzm\": 654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 654,\n\t\"./ug-cn\": 845,\n\t\"./ug-cn.js\": 845,\n\t\"./uk\": 9232,\n\t\"./uk.js\": 9232,\n\t\"./ur\": 7052,\n\t\"./ur.js\": 7052,\n\t\"./uz\": 7967,\n\t\"./uz-latn\": 2233,\n\t\"./uz-latn.js\": 2233,\n\t\"./uz.js\": 7967,\n\t\"./vi\": 8615,\n\t\"./vi.js\": 8615,\n\t\"./x-pseudo\": 2320,\n\t\"./x-pseudo.js\": 2320,\n\t\"./yo\": 1313,\n\t\"./yo.js\": 1313,\n\t\"./zh-cn\": 4490,\n\t\"./zh-cn.js\": 4490,\n\t\"./zh-hk\": 5910,\n\t\"./zh-hk.js\": 5910,\n\t\"./zh-mo\": 2932,\n\t\"./zh-mo.js\": 2932,\n\t\"./zh-tw\": 4223,\n\t\"./zh-tw.js\": 4223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
    ...
    \n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
    \n *
    \n *
    \n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* Keyframes */, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
    \n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
    \n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
    \n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
    \n *\n *
    \n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n *
    \n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
    \n *

    Title

    \n *
    \n * Blah blah blah\n *
    \n *
    \n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
    \n *
    \n *
    \n * {{ item }}\n *
    \n *
    \n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* Stagger */, timings, animation };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve(null).then(cb);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n scheduleMicroTask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `AnimationPlayer`\n * @see `{@link animations/group group()}`\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n scheduleMicroTask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ɵPRE_STYLE = '!';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","import { ElementRef } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch (_a) {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser &&\n !!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass PlatformModule {\n}\nPlatformModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPlatformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule });\nPlatformModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* NEGATED */ : 2 /* INVERTED */;\n }\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document\n ? document.activeElement\n : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n","import * as i0 from '@angular/core';\nimport { NgModule, Injectable } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LayoutModule {\n}\nLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule });\nLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform) {\n this._platform = _platform;\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n }\n}\nMediaMatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nMediaMatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n}\nBreakpointObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, deps: [{ token: MediaMatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nBreakpointObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MediaMatcher }, { type: i0.NgZone }]; } });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, NgModuleRef, ComponentFactoryResolver, ɵRuntimeError, inject, ɵformatRuntimeError, InjectFlags, NgZone, Renderer2, ElementRef, Injector, PLATFORM_ID, NgModule, Host, Attribute, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, Version, ɵɵdefineInjectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }] });\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: provideLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: provideLocationStrategy }]\n }] });\nfunction provideLocationStrategy(platformLocation) {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject(PlatformLocation), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {@link APP_BASE_HREF}\n * or add a `` element to the document.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PathLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nHashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(platformStrategy, platformLocation) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n this._platformStrategy = platformStrategy;\n const browserBaseHref = this._platformStrategy.getBaseHref();\n this._platformLocation = platformLocation;\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._platformStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._platformLocation.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._platformStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._platformStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformStrategy).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }, { token: PlatformLocation }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }, { type: PlatformLocation }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy), ɵɵinject(PlatformLocation));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, \"р.\", 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RUR\": [undefined, \"р.\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formating string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' :\n value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.substr(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substr(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substr(0, pos).replace(/'/g, '');\n p.negSuf = negative.substr(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\nNgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\n }] });\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgClass, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{ selector: '[ngClass]' }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModuleFactory`: Optional module factory to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized ngModuleFactory\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._componentRef = null;\n this._moduleRef = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._viewContainerRef.clear();\n this._componentRef = null;\n if (this.ngComponentOutlet) {\n const elInjector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (this.ngComponentOutletNgModuleFactory) {\n const parentModule = elInjector.get(NgModuleRef);\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(parentModule.injector);\n }\n else {\n this._moduleRef = null;\n }\n }\n const componentFactoryResolver = this._moduleRef ? this._moduleRef.componentFactoryResolver :\n elInjector.get(ComponentFactoryResolver);\n const componentFactory = componentFactoryResolver.resolveComponentFactory(this.ngComponentOutlet);\n this._componentRef = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, elInjector, this.ngComponentOutletContent);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngComponentOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/structural-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @nodoc\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch (_a) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const viewContainer = this._viewContainer;\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nNgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgForOf, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngFor][ngForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgIf, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngIf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Assembles directive details string, useful for error messages.\nfunction imgDirectiveDetails(ngSrc, includeNgSrc = true) {\n const ngSrcInfo = includeNgSrc ? `(activated on an element with the \\`ngSrc=\"${ngSrc}\"\\`) ` : '';\n return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Converts a string that represents a URL into a URL class instance.\nfunction getUrl(src, win) {\n // Don't use a base URL is the URL is absolute.\n return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href);\n}\n// Checks whether a URL is absolute (i.e. starts with `http://` or `https://`).\nfunction isAbsoluteUrl(src) {\n return /^https?:\\/\\//.test(src);\n}\n// Given a URL, extract the hostname part.\n// If a URL is a relative one - the URL is returned as is.\nfunction extractHostname(url) {\n return isAbsoluteUrl(url) ? (new URL(url)).hostname : url;\n}\nfunction isValidPath(path) {\n const isString = typeof path === 'string';\n if (!isString || path.trim() === '') {\n return false;\n }\n // Calling new URL() will throw if the path string is malformed\n try {\n const url = new URL(path);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction normalizePath(path) {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n}\nfunction normalizeSrc(src) {\n return src.startsWith('/') ? src.slice(1) : src;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Noop image loader that does no transformation to the original src and just returns it as is.\n * This loader is used as a default one if more specific logic is not provided in an app config.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n */\nconst noopImageLoader = (config) => config.src;\n/**\n * Injection token that configures the image loader function.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n * @publicApi\n */\nconst IMAGE_LOADER = new InjectionToken('ImageLoader', {\n providedIn: 'root',\n factory: () => noopImageLoader,\n});\n/**\n * Internal helper function that makes it easier to introduce custom image loaders for the\n * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI\n * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI\n * tokens managing preconnect check functionality.\n * @param buildUrlFn a function returning a full URL based on loader's configuration\n * @param exampleUrls example of full URLs for a given loader (used in error messages)\n * @returns a set of DI providers corresponding to the configured image loader\n */\nfunction createImageLoader(buildUrlFn, exampleUrls) {\n return function provideImageLoader(path) {\n if (!isValidPath(path)) {\n throwInvalidPathError(path, exampleUrls || []);\n }\n // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in\n // the individual loader functions.\n path = normalizePath(path);\n const loaderFn = (config) => {\n if (isAbsoluteUrl(config.src)) {\n // Image loader functions expect an image file name (e.g. `my-image.png`)\n // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,\n // so the final absolute URL can be constructed.\n // When an absolute URL is provided instead - the loader can not\n // build a final URL, thus the error is thrown to indicate that.\n throwUnexpectedAbsoluteUrlError(path, config.src);\n }\n return buildUrlFn(path, Object.assign(Object.assign({}, config), { src: normalizeSrc(config.src) }));\n };\n const providers = [{ provide: IMAGE_LOADER, useValue: loaderFn }];\n return providers;\n };\n}\nfunction throwInvalidPathError(path, exampleUrls) {\n throw new ɵRuntimeError(2959 /* INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply a path using one of the following formats: ${exampleUrls.join(' or ')}`);\n}\nfunction throwUnexpectedAbsoluteUrlError(path, url) {\n throw new ɵRuntimeError(2959 /* INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected a \\`\\` tag with an invalid \\`ngSrc\\` attribute: ${url}. ` +\n `This image loader expects \\`ngSrc\\` to be a relative URL - ` +\n `however the provided value is an absolute URL. ` +\n `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +\n `configured for this loader (\\`${path}\\`).`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Name and URL tester for Cloudinary.\n */\nconst cloudinaryLoaderInfo = {\n name: 'Cloudinary',\n testUrl: isCloudinaryUrl\n};\nconst CLOUDINARY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.cloudinary\\.com\\/.+/;\n/**\n * Tests whether a URL is from Cloudinary CDN.\n */\nfunction isCloudinaryUrl(url) {\n return CLOUDINARY_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.\n *\n * @param path Base URL of your Cloudinary images\n * This URL should match one of the following formats:\n * https://res.cloudinary.com/mysite\n * https://mysite.cloudinary.com\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the Cloudinary loader.\n *\n * @publicApi\n */\nconst provideCloudinaryLoader = createImageLoader(createCloudinaryUrl, ngDevMode ?\n [\n 'https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com',\n 'https://subdomain.mysite.com'\n ] :\n undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createCloudinaryUrl(path, config) {\n // Cloudinary image URLformat:\n // https://cloudinary.com/documentation/image_transformations#transformation_url_structure\n // Example of a Cloudinary image URL:\n // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png\n let params = `f_auto,q_auto`; // sets image format and quality to \"auto\"\n if (config.width) {\n params += `,w_${config.width}`;\n }\n return `${path}/image/upload/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Name and URL tester for ImageKit.\n */\nconst imageKitLoaderInfo = {\n name: 'ImageKit',\n testUrl: isImageKitUrl\n};\nconst IMAGE_KIT_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imagekit\\.io\\/.+/;\n/**\n * Tests whether a URL is from ImageKit CDN.\n */\nfunction isImageKitUrl(url) {\n return IMAGE_KIT_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.\n *\n * @param path Base URL of your ImageKit images\n * This URL should match one of the following formats:\n * https://ik.imagekit.io/myaccount\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the ImageKit loader.\n *\n * @publicApi\n */\nconst provideImageKitLoader = createImageLoader(createImagekitUrl, ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);\nfunction createImagekitUrl(path, config) {\n // Example of an ImageKit image URL:\n // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg\n let params = `tr:q-auto`; // applies the \"auto quality\" transformation\n if (config.width) {\n params += `,w-${config.width}`;\n }\n return `${path}/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Name and URL tester for Imgix.\n */\nconst imgixLoaderInfo = {\n name: 'Imgix',\n testUrl: isImgixUrl\n};\nconst IMGIX_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imgix\\.net\\/.+/;\n/**\n * Tests whether a URL is from Imgix CDN.\n */\nfunction isImgixUrl(url) {\n return IMGIX_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.\n *\n * @param path path to the desired Imgix origin,\n * e.g. https://somepath.imgix.net or https://images.mysite.com\n * @returns Set of providers to configure the Imgix loader.\n *\n * @publicApi\n */\nconst provideImgixLoader = createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createImgixUrl(path, config) {\n const url = new URL(`${path}/${config.src}`);\n // This setting ensures the smallest allowable format is set.\n url.searchParams.set('auto', 'format');\n if (config.width) {\n url.searchParams.set('w', config.width.toString());\n }\n return url.href;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Asserts that the application is in development mode. Throws an error if the application is in\n * production mode. This assert can be used to make sure that there is no dev-mode code invoked in\n * the prod mode accidentally.\n */\nfunction assertDevMode(checkName) {\n if (!ngDevMode) {\n throw new ɵRuntimeError(2958 /* UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE */, `Unexpected invocation of the ${checkName} in the prod mode. ` +\n `Please make sure that the prod mode is enabled for production builds.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Observer that detects whether an image with `NgOptimizedImage`\n * is treated as a Largest Contentful Paint (LCP) element. If so,\n * asserts that the image has the `priority` attribute.\n *\n * Note: this is a dev-mode only class and it does not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n *\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript.\n */\nclass LCPImageObserver {\n constructor() {\n // Map of full image URLs -> original `ngSrc` values.\n this.images = new Map();\n // Keep track of images for which `console.warn` was produced.\n this.alreadyWarned = new Set();\n this.window = null;\n this.observer = null;\n assertDevMode('LCP checker');\n const win = inject(DOCUMENT).defaultView;\n if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') {\n this.window = win;\n this.observer = this.initPerformanceObserver();\n }\n }\n /**\n * Inits PerformanceObserver and subscribes to LCP events.\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript\n */\n initPerformanceObserver() {\n const observer = new PerformanceObserver((entryList) => {\n var _a, _b;\n const entries = entryList.getEntries();\n if (entries.length === 0)\n return;\n // We use the latest entry produced by the `PerformanceObserver` as the best\n // signal on which element is actually an LCP one. As an example, the first image to load on\n // a page, by virtue of being the only thing on the page so far, is often a LCP candidate\n // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.\n const lcpElement = entries[entries.length - 1];\n // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.\n // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint\n const imgSrc = (_b = (_a = lcpElement.element) === null || _a === void 0 ? void 0 : _a.src) !== null && _b !== void 0 ? _b : '';\n // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.\n if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:'))\n return;\n const imgNgSrc = this.images.get(imgSrc);\n if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) {\n this.alreadyWarned.add(imgSrc);\n logMissingPriorityWarning(imgSrc);\n }\n });\n observer.observe({ type: 'largest-contentful-paint', buffered: true });\n return observer;\n }\n registerImage(rewrittenSrc, originalNgSrc) {\n if (!this.observer)\n return;\n this.images.set(getUrl(rewrittenSrc, this.window).href, originalNgSrc);\n }\n unregisterImage(rewrittenSrc) {\n if (!this.observer)\n return;\n this.images.delete(getUrl(rewrittenSrc, this.window).href);\n }\n ngOnDestroy() {\n if (!this.observer)\n return;\n this.observer.disconnect();\n this.images.clear();\n this.alreadyWarned.clear();\n }\n}\nLCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\nfunction logMissingPriorityWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2955 /* LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element but was not marked \"priority\". This image should be marked ` +\n `\"priority\" in order to prioritize its loading. ` +\n `To fix this, add the \"priority\" attribute.`));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Set of origins that are always excluded from the preconnect checks.\nconst INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);\n/**\n * Injection token to configure which origins should be excluded\n * from the preconnect checks. It can either be a single string or an array of strings\n * to represent a group of origins, for example:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'}\n * ```\n *\n * or:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST,\n * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}\n * ```\n *\n * @publicApi\n */\nconst PRECONNECT_CHECK_BLOCKLIST = new InjectionToken('PRECONNECT_CHECK_BLOCKLIST');\n/**\n * Contains the logic to detect whether an image, marked with the \"priority\" attribute\n * has a corresponding `` tag in the `document.head`.\n *\n * Note: this is a dev-mode only class, which should not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n */\nclass PreconnectLinkChecker {\n constructor() {\n /**\n * Set of tags found on this page.\n * The `null` value indicates that there was no DOM query operation performed.\n */\n this.preconnectLinks = null;\n /*\n * Keep track of all already seen origin URLs to avoid repeating the same check.\n */\n this.alreadySeen = new Set();\n this.window = null;\n this.blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);\n this.document = inject(DOCUMENT);\n assertDevMode('preconnect link checker');\n const win = this.document.defaultView;\n if (typeof win !== 'undefined') {\n this.window = win;\n }\n const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, InjectFlags.Optional);\n if (blocklist) {\n this.populateBlocklist(blocklist);\n }\n }\n populateBlocklist(origins) {\n if (Array.isArray(origins)) {\n deepForEach(origins, origin => {\n this.blocklist.add(extractHostname(origin));\n });\n }\n else {\n this.blocklist.add(extractHostname(origins));\n }\n }\n /**\n * Checks that a preconnect resource hint exists in the head for the\n * given src.\n *\n * @param rewrittenSrc src formatted with loader\n * @param originalNgSrc ngSrc value\n */\n assertPreconnect(rewrittenSrc, originalNgSrc) {\n if (!this.window)\n return;\n const imgUrl = getUrl(rewrittenSrc, this.window);\n if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin))\n return;\n // Register this origin as seen, so we don't check it again later.\n this.alreadySeen.add(imgUrl.origin);\n if (!this.preconnectLinks) {\n // Note: we query for preconnect links only *once* and cache the results\n // for the entire lifespan of an application, since it's unlikely that the\n // list would change frequently. This allows to make sure there are no\n // performance implications of making extra DOM lookups for each image.\n this.preconnectLinks = this.queryPreconnectLinks();\n }\n if (!this.preconnectLinks.has(imgUrl.origin)) {\n console.warn(ɵformatRuntimeError(2956 /* PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +\n `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +\n `images are delivered as soon as possible. To fix this, please add the following ` +\n `element into the of the document:\\n` +\n ` `));\n }\n }\n queryPreconnectLinks() {\n const preconnectUrls = new Set();\n const selector = 'link[rel=preconnect]';\n const links = Array.from(this.document.querySelectorAll(selector));\n for (let link of links) {\n const url = getUrl(link.href, this.window);\n preconnectUrls.add(url.origin);\n }\n return preconnectUrls;\n }\n ngOnDestroy() {\n var _a;\n (_a = this.preconnectLinks) === null || _a === void 0 ? void 0 : _a.clear();\n this.alreadySeen.clear();\n }\n}\nPreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n/**\n * Invokes a callback for each element in the array. Also invokes a callback\n * recursively for each nested array.\n */\nfunction deepForEach(input, fn) {\n for (let value of input) {\n Array.isArray(value) ? deepForEach(value, fn) : fn(value);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * In SSR scenarios, a preload `` element is generated for priority images.\n * Having a large number of preload tags may negatively affect the performance,\n * so we warn developers (by throwing an error) if the number of preloaded images\n * is above a certain threshold. This const specifies this threshold.\n */\nconst DEFAULT_PRELOADED_IMAGES_LIMIT = 5;\n/**\n * Helps to keep track of priority images that already have a corresponding\n * preload tag (to avoid generating multiple preload tags with the same URL).\n *\n * This Set tracks the original src passed into the `ngSrc` input not the src after it has been\n * run through the specified `IMAGE_LOADER`.\n */\nconst PRELOADED_IMAGES = new InjectionToken('NG_OPTIMIZED_PRELOADED_IMAGES', { providedIn: 'root', factory: () => new Set() });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description Contains the logic needed to track and add preload link tags to the `` tag. It\n * will also track what images have already had preload link tags added so as to not duplicate link\n * tags.\n *\n * In dev mode this service will validate that the number of preloaded images does not exceed the\n * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}.\n */\nclass PreloadLinkCreator {\n constructor() {\n this.preloadedImages = inject(PRELOADED_IMAGES);\n this.document = inject(DOCUMENT);\n }\n /**\n * @description Add a preload `` to the `` of the `index.html` that is served from the\n * server while using Angular Universal and SSR to kick off image loads for high priority images.\n *\n * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`)\n * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset`\n * respectively, on the preload `` tag so that the correctly sized image is preloaded from\n * the CDN.\n *\n * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes}\n *\n * @param renderer The `Renderer2` passed in from the directive\n * @param src The original src of the image that is set on the `ngSrc` input.\n * @param srcset The parsed and formatted srcset created from the `ngSrcset` input\n * @param sizes The value of the `sizes` attribute passed in to the `` tag\n */\n createPreloadLinkTag(renderer, src, srcset, sizes) {\n if (ngDevMode) {\n if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) {\n throw new ɵRuntimeError(2961 /* TOO_MANY_PRELOADED_IMAGES */, ngDevMode &&\n `The \\`NgOptimizedImage\\` directive has detected that more than ` +\n `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` +\n `This might negatively affect an overall performance of the page. ` +\n `To fix this, remove the \"priority\" attribute from images with less priority.`);\n }\n }\n if (this.preloadedImages.has(src)) {\n return;\n }\n this.preloadedImages.add(src);\n const preload = renderer.createElement('link');\n renderer.setAttribute(preload, 'as', 'image');\n renderer.setAttribute(preload, 'href', src);\n renderer.setAttribute(preload, 'rel', 'preload');\n renderer.setAttribute(preload, 'fetchpriority', 'high');\n if (sizes) {\n renderer.setAttribute(preload, 'imageSizes', sizes);\n }\n if (srcset) {\n renderer.setAttribute(preload, 'imageSrcset', srcset);\n }\n renderer.appendChild(this.document.head, preload);\n }\n}\nPreloadLinkCreator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPreloadLinkCreator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,\n * an error is thrown. The image content (as a string) might be very long, thus making\n * it hard to read an error message if the entire string is included. This const defines\n * the number of characters that should be included into the error message. The rest\n * of the content is truncated.\n */\nconst BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;\n/**\n * RegExpr to determine whether a src in a srcset is using width descriptors.\n * Should match something like: \"100w, 200w\".\n */\nconst VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;\n/**\n * RegExpr to determine whether a src in a srcset is using density descriptors.\n * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".\n */\nconst VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;\n/**\n * Srcset values with a density descriptor higher than this value will actively\n * throw an error. Such densities are not permitted as they cause image sizes\n * to be unreasonably large and slow down LCP.\n */\nconst ABSOLUTE_SRCSET_DENSITY_CAP = 3;\n/**\n * Used only in error message text to communicate best practices, as we will\n * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.\n */\nconst RECOMMENDED_SRCSET_DENSITY_CAP = 2;\n/**\n * Used in generating automatic density-based srcsets\n */\nconst DENSITY_SRCSET_MULTIPLIERS = [1, 2];\n/**\n * Used to determine which breakpoints to use on full-width images\n */\nconst VIEWPORT_BREAKPOINT_CUTOFF = 640;\n/**\n * Used to determine whether two aspect ratios are similar in value.\n */\nconst ASPECT_RATIO_TOLERANCE = .1;\n/**\n * Used to determine whether the image has been requested at an overly\n * large size compared to the actual rendered image size (after taking\n * into account a typical device pixel ratio). In pixels.\n */\nconst OVERSIZED_IMAGE_TOLERANCE = 1000;\n/**\n * Used to limit automatic srcset generation of very large sources for\n * fixed-size images. In pixels.\n */\nconst FIXED_SRCSET_WIDTH_LIMIT = 1920;\nconst FIXED_SRCSET_HEIGHT_LIMIT = 1080;\n/** Info about built-in loaders we can test for. */\nconst BUILT_IN_LOADERS = [imgixLoaderInfo, imageKitLoaderInfo, cloudinaryLoaderInfo];\nconst defaultConfig = {\n breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n};\n/**\n * Injection token that configures the image optimized image functionality.\n *\n * @see `NgOptimizedImage`\n * @publicApi\n */\nconst IMAGE_CONFIG = new InjectionToken('ImageConfig', { providedIn: 'root', factory: () => defaultConfig });\n/**\n * @ngModule NgOptimizedImageModule\n *\n * @description\n *\n * Directive that improves image loading performance by enforcing best practices.\n *\n * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is\n * prioritized by:\n * - Automatically setting the `fetchpriority` attribute on the `` tag\n * - Lazy loading non-priority images by default\n * - Asserting that there is a corresponding preconnect link tag in the document head\n *\n * In addition, the directive:\n * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided\n * - Automatically generates a srcset\n * - Requires that `width` and `height` are set\n * - Warns if `width` or `height` have been set incorrectly\n * - Warns if the image will be visually distorted when rendered\n *\n * @usageNotes\n *\n * Follow the steps below to enable and use the directive:\n * 1. Import it into the necessary NgModule Component.\n * 2. Optionally provide an `ImageLoader` if you use an image hosting service.\n * 3. Update the necessary `` tags in templates and replace `src` attributes with `ngSrc`.\n * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image\n * download.\n *\n * Step 1: import the `NgOptimizedImage` directive.\n *\n * ```typescript\n * import { NgOptimizedImageModule } from '@angular/common';\n *\n * // Include it into the necessary NgModule\n * @NgModule({\n * imports: [NgOptimizedImageModule],\n * })\n * class AppModule {}\n *\n *\n * Step 2: configure a loader.\n *\n * To use the **default loader**: no additional code changes are necessary. The URL returned by the\n * generic loader will always match the value of \"src\". In other words, this loader applies no\n * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.\n *\n * To use an existing loader for a **third-party image service**: add the provider factory for your\n * chosen service to the `providers` array. In the example below, the Imgix loader is used:\n *\n * ```typescript\n * import {provideImgixLoader} from '@angular/common';\n *\n * // Call the function and add the result to the `providers` array:\n * providers: [\n * provideImgixLoader(\"https://my.base.url/\"),\n * ],\n * ```\n *\n * The `NgOptimizedImage` directive provides the following functions:\n * - `provideCloudflareLoader`\n * - `provideCloudinaryLoader`\n * - `provideImageKitLoader`\n * - `provideImgixLoader`\n *\n * If you use a different image provider, you can create a custom loader function as described\n * below.\n *\n * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI\n * token.\n *\n * ```typescript\n * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';\n *\n * // Configure the loader using the `IMAGE_LOADER` token.\n * providers: [\n * {\n * provide: IMAGE_LOADER,\n * useValue: (config: ImageLoaderConfig) => {\n * return `https://example.com/${config.src}-${config.width}.jpg}`;\n * }\n * },\n * ],\n * ```\n *\n * Step 3: update `` tags in templates to use `ngSrc` instead of `src`.\n *\n * ```\n * \n * ```\n *\n * @publicApi\n */\nclass NgOptimizedImage {\n constructor(imageLoader, config, renderer, elementRef, injector, platformId, preloadLinkChecker) {\n this.imageLoader = imageLoader;\n this.config = config;\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.injector = injector;\n this.platformId = platformId;\n this.preloadLinkChecker = preloadLinkChecker;\n /**\n * Calculate the rewritten `src` once and store it.\n * This is needed to avoid repetitive calculations and make sure the directive cleanup in the\n * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other\n * instance that might be already destroyed).\n */\n this._renderedSrc = null;\n this._priority = false;\n this._disableOptimizedSrcset = false;\n this._fill = false;\n this.config = processConfig(this.config);\n this.imgElement = this.elementRef.nativeElement;\n this.lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;\n }\n /**\n * For responsive images: the intrinsic width of the image in pixels.\n * For fixed size images: the desired rendered width of the image in pixels.\n */\n set width(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'width');\n this._width = inputToInteger(value);\n }\n get width() {\n return this._width;\n }\n /**\n * For responsive images: the intrinsic height of the image in pixels.\n * For fixed size images: the desired rendered height of the image in pixels.* The intrinsic\n * height of the image in pixels.\n */\n set height(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'height');\n this._height = inputToInteger(value);\n }\n get height() {\n return this._height;\n }\n /**\n * Indicates whether this image should have a high priority.\n */\n set priority(value) {\n this._priority = inputToBoolean(value);\n }\n get priority() {\n return this._priority;\n }\n /**\n * Disables automatic srcset generation for this image.\n */\n set disableOptimizedSrcset(value) {\n this._disableOptimizedSrcset = inputToBoolean(value);\n }\n get disableOptimizedSrcset() {\n return this._disableOptimizedSrcset;\n }\n /**\n * Sets the image to \"fill mode\", which eliminates the height/width requirement and adds\n * styles such that the image fills its containing element.\n */\n set fill(value) {\n this._fill = inputToBoolean(value);\n }\n get fill() {\n return this._fill;\n }\n /** @nodoc */\n ngOnInit() {\n if (ngDevMode) {\n assertNonEmptyInput(this, 'ngSrc', this.ngSrc);\n assertValidNgSrcset(this, this.ngSrcset);\n assertNoConflictingSrc(this);\n if (this.ngSrcset) {\n assertNoConflictingSrcset(this);\n }\n assertNotBase64Image(this);\n assertNotBlobUrl(this);\n if (this.fill) {\n assertEmptyWidthAndHeight(this);\n assertNonZeroRenderedHeight(this, this.imgElement, this.renderer);\n }\n else {\n assertNonEmptyWidthAndHeight(this);\n // Only check for distorted images when not in fill mode, where\n // images may be intentionally stretched, cropped or letterboxed.\n assertNoImageDistortion(this, this.imgElement, this.renderer);\n }\n assertValidLoadingInput(this);\n if (!this.ngSrcset) {\n assertNoComplexSizes(this);\n }\n assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader);\n assertNoNgSrcsetWithoutLoader(this, this.imageLoader);\n assertNoLoaderParamsWithoutLoader(this, this.imageLoader);\n if (this.priority) {\n const checker = this.injector.get(PreconnectLinkChecker);\n checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);\n }\n else {\n // Monitor whether an image is an LCP element only in case\n // the `priority` attribute is missing. Otherwise, an image\n // has the necessary settings and no extra checks are required.\n if (this.lcpObserver !== null) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc);\n });\n }\n }\n }\n this.setHostAttributes();\n }\n setHostAttributes() {\n // Must set width/height explicitly in case they are bound (in which case they will\n // only be reflected and not found by the browser)\n if (this.fill) {\n if (!this.sizes) {\n this.sizes = '100vw';\n }\n this.renderer.setStyle(this.imgElement, 'position', 'absolute');\n this.renderer.setStyle(this.imgElement, 'width', '100%');\n this.renderer.setStyle(this.imgElement, 'height', '100%');\n this.renderer.setStyle(this.imgElement, 'inset', '0px');\n }\n else {\n this.setHostAttribute('width', this.width.toString());\n this.setHostAttribute('height', this.height.toString());\n }\n this.setHostAttribute('loading', this.getLoadingBehavior());\n this.setHostAttribute('fetchpriority', this.getFetchPriority());\n // The `data-ng-img` attribute flags an image as using the directive, to allow\n // for analysis of the directive's performance.\n this.setHostAttribute('ng-img', 'true');\n // The `src` and `srcset` attributes should be set last since other attributes\n // could affect the image's loading behavior.\n const rewrittenSrc = this.getRewrittenSrc();\n this.setHostAttribute('src', rewrittenSrc);\n let rewrittenSrcset = undefined;\n if (this.sizes) {\n this.setHostAttribute('sizes', this.sizes);\n }\n if (this.ngSrcset) {\n rewrittenSrcset = this.getRewrittenSrcset();\n }\n else if (this.shouldGenerateAutomaticSrcset()) {\n rewrittenSrcset = this.getAutomaticSrcset();\n }\n if (rewrittenSrcset) {\n this.setHostAttribute('srcset', rewrittenSrcset);\n }\n if (isPlatformServer(this.platformId) && this.priority) {\n this.preloadLinkChecker.createPreloadLinkTag(this.renderer, rewrittenSrc, rewrittenSrcset, this.sizes);\n }\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (ngDevMode) {\n assertNoPostInitInputChange(this, changes, [\n 'ngSrc',\n 'ngSrcset',\n 'width',\n 'height',\n 'priority',\n 'fill',\n 'loading',\n 'sizes',\n 'loaderParams',\n 'disableOptimizedSrcset',\n ]);\n }\n }\n callImageLoader(configWithoutCustomParams) {\n let augmentedConfig = configWithoutCustomParams;\n if (this.loaderParams) {\n augmentedConfig.loaderParams = this.loaderParams;\n }\n return this.imageLoader(augmentedConfig);\n }\n getLoadingBehavior() {\n if (!this.priority && this.loading !== undefined) {\n return this.loading;\n }\n return this.priority ? 'eager' : 'lazy';\n }\n getFetchPriority() {\n return this.priority ? 'high' : 'auto';\n }\n getRewrittenSrc() {\n // ImageLoaderConfig supports setting a width property. However, we're not setting width here\n // because if the developer uses rendered width instead of intrinsic width in the HTML width\n // attribute, the image requested may be too small for 2x+ screens.\n if (!this._renderedSrc) {\n const imgConfig = { src: this.ngSrc };\n // Cache calculated image src to reuse it later in the code.\n this._renderedSrc = this.callImageLoader(imgConfig);\n }\n return this._renderedSrc;\n }\n getRewrittenSrcset() {\n const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);\n const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {\n srcStr = srcStr.trim();\n const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width;\n return `${this.callImageLoader({ src: this.ngSrc, width })} ${srcStr}`;\n });\n return finalSrcs.join(', ');\n }\n getAutomaticSrcset() {\n if (this.sizes) {\n return this.getResponsiveSrcset();\n }\n else {\n return this.getFixedSrcset();\n }\n }\n getResponsiveSrcset() {\n var _a;\n const { breakpoints } = this.config;\n let filteredBreakpoints = breakpoints;\n if (((_a = this.sizes) === null || _a === void 0 ? void 0 : _a.trim()) === '100vw') {\n // Since this is a full-screen-width image, our srcset only needs to include\n // breakpoints with full viewport widths.\n filteredBreakpoints = breakpoints.filter(bp => bp >= VIEWPORT_BREAKPOINT_CUTOFF);\n }\n const finalSrcs = filteredBreakpoints.map(bp => `${this.callImageLoader({ src: this.ngSrc, width: bp })} ${bp}w`);\n return finalSrcs.join(', ');\n }\n getFixedSrcset() {\n const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map(multiplier => {\n const imgUrl = this.callImageLoader({ src: this.ngSrc, width: this.width * multiplier });\n return `${imgUrl} ${multiplier}x`;\n });\n return finalSrcs.join(', ');\n }\n shouldGenerateAutomaticSrcset() {\n return !this._disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader &&\n !(this.width > FIXED_SRCSET_WIDTH_LIMIT || this.height > FIXED_SRCSET_HEIGHT_LIMIT);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (ngDevMode) {\n if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {\n this.lcpObserver.unregisterImage(this._renderedSrc);\n }\n }\n }\n setHostAttribute(name, value) {\n this.renderer.setAttribute(this.imgElement, name, value);\n }\n}\nNgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImage, deps: [{ token: IMAGE_LOADER }, { token: IMAGE_CONFIG }, { token: Renderer2 }, { token: ElementRef }, { token: Injector }, { token: PLATFORM_ID }, { token: PreloadLinkCreator }], target: i0.ɵɵFactoryTarget.Directive });\nNgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgOptimizedImage, selector: \"img[ngSrc]\", inputs: { ngSrc: \"ngSrc\", ngSrcset: \"ngSrcset\", sizes: \"sizes\", width: \"width\", height: \"height\", loading: \"loading\", priority: \"priority\", loaderParams: \"loaderParams\", disableOptimizedSrcset: \"disableOptimizedSrcset\", fill: \"fill\", src: \"src\", srcset: \"srcset\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImage, decorators: [{\n type: Directive,\n args: [{ selector: 'img[ngSrc]' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [IMAGE_LOADER]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [IMAGE_CONFIG]\n }] }, { type: i0.Renderer2, decorators: [{\n type: Inject,\n args: [Renderer2]\n }] }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [ElementRef]\n }] }, { type: i0.Injector, decorators: [{\n type: Inject,\n args: [Injector]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: PreloadLinkCreator, decorators: [{\n type: Inject,\n args: [PreloadLinkCreator]\n }] }];\n }, propDecorators: { ngSrc: [{\n type: Input\n }], ngSrcset: [{\n type: Input\n }], sizes: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], loading: [{\n type: Input\n }], priority: [{\n type: Input\n }], loaderParams: [{\n type: Input\n }], disableOptimizedSrcset: [{\n type: Input\n }], fill: [{\n type: Input\n }], src: [{\n type: Input\n }], srcset: [{\n type: Input\n }] } });\n/***** Helpers *****/\n/**\n * Convert input value to integer.\n */\nfunction inputToInteger(value) {\n return typeof value === 'string' ? parseInt(value, 10) : value;\n}\n/**\n * Convert input value to boolean.\n */\nfunction inputToBoolean(value) {\n return value != null && `${value}` !== 'false';\n}\n/**\n * Sorts provided config breakpoints and uses defaults.\n */\nfunction processConfig(config) {\n let sortedBreakpoints = {};\n if (config.breakpoints) {\n sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b);\n }\n return Object.assign({}, defaultConfig, config, sortedBreakpoints);\n}\n/***** Assert functions *****/\n/**\n * Verifies that there is no `src` set on a host element.\n */\nfunction assertNoConflictingSrc(dir) {\n if (dir.src) {\n throw new ɵRuntimeError(2950 /* UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +\n `To fix this, please remove the \\`src\\` attribute.`);\n }\n}\n/**\n * Verifies that there is no `srcset` set on a host element.\n */\nfunction assertNoConflictingSrcset(dir) {\n if (dir.srcset) {\n throw new ɵRuntimeError(2951 /* UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +\n `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Base64-encoded image.\n */\nfunction assertNotBase64Image(dir) {\n let ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('data:')) {\n if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {\n ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';\n }\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +\n `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the 'sizes' only includes responsive values.\n */\nfunction assertNoComplexSizes(dir) {\n let sizes = dir.sizes;\n if (sizes === null || sizes === void 0 ? void 0 : sizes.match(/((\\)|,)\\s|^)\\d+px/)) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`sizes\\` was set to a string including ` +\n `pixel values. For automatic \\`srcset\\` generation, \\`sizes\\` must only include responsive ` +\n `values, such as \\`sizes=\"50vw\"\\` or \\`sizes=\"(min-width: 768px) 50vw, 100vw\"\\`. ` +\n `To fix this, modify the \\`sizes\\` attribute, or provide your own \\`ngSrcset\\` value directly.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Blob URL.\n */\nfunction assertNotBlobUrl(dir) {\n const ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('blob:')) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +\n `Blob URLs are not supported by the NgOptimizedImage directive. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the input is set to a non-empty string.\n */\nfunction assertNonEmptyInput(dir, name, value) {\n const isString = typeof value === 'string';\n const isEmptyString = isString && value.trim() === '';\n if (!isString || isEmptyString) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +\n `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);\n }\n}\n/**\n * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".\n */\nfunction assertValidNgSrcset(dir, value) {\n if (value == null)\n return;\n assertNonEmptyInput(dir, 'ngSrcset', value);\n const stringVal = value;\n const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);\n const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);\n if (isValidDensityDescriptor) {\n assertUnderDensityCap(dir, stringVal);\n }\n const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;\n if (!isValidSrcset) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +\n `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +\n `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);\n }\n}\nfunction assertUnderDensityCap(dir, value) {\n const underDensityCap = value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);\n if (!underDensityCap) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +\n `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +\n `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +\n `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);\n }\n}\n/**\n * Creates a `RuntimeError` instance to represent a situation when an input is set after\n * the directive has initialized.\n */\nfunction postInitInputChangeError(dir, inputName) {\n let reason;\n if (inputName === 'width' || inputName === 'height') {\n reason = `Changing \\`${inputName}\\` may result in different attribute value ` +\n `applied to the underlying image element and cause layout shifts on a page.`;\n }\n else {\n reason = `Changing the \\`${inputName}\\` would have no effect on the underlying ` +\n `image element, because the resource loading has already occurred.`;\n }\n return new ɵRuntimeError(2953 /* UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +\n `The NgOptimizedImage directive will not react to this input change. ${reason} ` +\n `To fix this, either switch \\`${inputName}\\` to a static value ` +\n `or wrap the image element in an *ngIf that is gated on the necessary value.`);\n}\n/**\n * Verify that none of the listed inputs has changed.\n */\nfunction assertNoPostInitInputChange(dir, changes, inputs) {\n inputs.forEach(input => {\n const isUpdated = changes.hasOwnProperty(input);\n if (isUpdated && !changes[input].isFirstChange()) {\n if (input === 'ngSrc') {\n // When the `ngSrc` input changes, we detect that only in the\n // `ngOnChanges` hook, thus the `ngSrc` is already set. We use\n // `ngSrc` in the error message, so we use a previous value, but\n // not the updated one in it.\n dir = { ngSrc: changes[input].previousValue };\n }\n throw postInitInputChangeError(dir, input);\n }\n });\n}\n/**\n * Verifies that a specified input is a number greater than 0.\n */\nfunction assertGreaterThanZero(dir, inputValue, inputName) {\n const validNumber = typeof inputValue === 'number' && inputValue > 0;\n const validString = typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;\n if (!validNumber && !validString) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value ` +\n `(\\`${inputValue}\\`). To fix this, provide \\`${inputName}\\` ` +\n `as a number greater than 0.`);\n }\n}\n/**\n * Verifies that the rendered image is not visually distorted. Effectively this is checking:\n * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.\n * - Whether image styling is \"correct\" (see below for a longer explanation).\n */\nfunction assertNoImageDistortion(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const renderedWidth = img.clientWidth;\n const renderedHeight = img.clientHeight;\n const renderedAspectRatio = renderedWidth / renderedHeight;\n const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;\n const intrinsicWidth = img.naturalWidth;\n const intrinsicHeight = img.naturalHeight;\n const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;\n const suppliedWidth = dir.width;\n const suppliedHeight = dir.height;\n const suppliedAspectRatio = suppliedWidth / suppliedHeight;\n // Tolerance is used to account for the impact of subpixel rendering.\n // Due to subpixel rendering, the rendered, intrinsic, and supplied\n // aspect ratios of a correctly configured image may not exactly match.\n // For example, a `width=4030 height=3020` image might have a rendered\n // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)\n const inaccurateDimensions = Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;\n const stylingDistortion = nonZeroRenderedDimensions &&\n Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;\n if (inaccurateDimensions) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +\n `the aspect ratio indicated by the width and height attributes. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${intrinsicAspectRatio}). \\nSupplied width and height attributes: ` +\n `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${suppliedAspectRatio}). ` +\n `\\nTo fix this, update the width and height attributes.`));\n }\n else if (stylingDistortion) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +\n `does not match the image's intrinsic aspect ratio. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${intrinsicAspectRatio}). \\nRendered image size: ` +\n `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +\n `${renderedAspectRatio}). \\nThis issue can occur if \"width\" and \"height\" ` +\n `attributes are added to an image without updating the corresponding ` +\n `image styling. To fix this, adjust image styling. In most cases, ` +\n `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +\n `this issue.`));\n }\n else if (!dir.ngSrcset && nonZeroRenderedDimensions) {\n // If `ngSrcset` hasn't been set, sanity check the intrinsic size.\n const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;\n const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;\n const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;\n const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;\n if (oversizedWidth || oversizedHeight) {\n console.warn(ɵformatRuntimeError(2960 /* OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +\n `larger than necessary. ` +\n `\\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +\n `\\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` +\n `\\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +\n `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));\n }\n }\n });\n}\n/**\n * Verifies that a specified input is set.\n */\nfunction assertNonEmptyWidthAndHeight(dir) {\n let missingAttributes = [];\n if (dir.width === undefined)\n missingAttributes.push('width');\n if (dir.height === undefined)\n missingAttributes.push('height');\n if (missingAttributes.length > 0) {\n throw new ɵRuntimeError(2954 /* REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +\n `are missing: ${missingAttributes.map(attr => `\"${attr}\"`).join(', ')}. ` +\n `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +\n `To fix this, include \"width\" and \"height\" attributes on the image tag or turn on ` +\n `\"fill\" mode with the \\`fill\\` attribute.`);\n }\n}\n/**\n * Verifies that width and height are not set. Used in fill mode, where those attributes don't make\n * sense.\n */\nfunction assertEmptyWidthAndHeight(dir) {\n if (dir.width || dir.height) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the attributes \\`height\\` and/or \\`width\\` are present ` +\n `along with the \\`fill\\` attribute. Because \\`fill\\` mode causes an image to fill its containing ` +\n `element, the size attributes have no effect and should be removed.`);\n }\n}\n/**\n * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides\n * guidance that this can be caused by the containing element's CSS position property.\n */\nfunction assertNonZeroRenderedHeight(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const renderedHeight = img.clientHeight;\n if (dir.fill && renderedHeight === 0) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` +\n `This is likely because the containing element does not have the CSS 'position' ` +\n `property set to one of the following: \"relative\", \"fixed\", or \"absolute\". ` +\n `To fix this problem, make sure the container element has the CSS 'position' ` +\n `property defined and the height of the element is not zero.`));\n }\n });\n}\n/**\n * Verifies that the `loading` attribute is set to a valid input &\n * is not used on priority images.\n */\nfunction assertValidLoadingInput(dir) {\n if (dir.loading && dir.priority) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `was used on an image that was marked \"priority\". ` +\n `Setting \\`loading\\` on priority images is not allowed ` +\n `because these images will always be eagerly loaded. ` +\n `To fix this, remove the “loading” attribute from the priority image.`);\n }\n const validInputs = ['auto', 'eager', 'lazy'];\n if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `has an invalid value (\\`${dir.loading}\\`). ` +\n `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);\n }\n}\n/**\n * Warns if NOT using a loader (falling back to the generic loader) and\n * the image appears to be hosted on one of the image CDNs for which\n * we do have a built-in image loader. Suggests switching to the\n * built-in loader.\n *\n * @param ngSrc Value of the ngSrc attribute\n * @param imageLoader ImageLoader provided\n */\nfunction assertNotMissingBuiltInLoader(ngSrc, imageLoader) {\n if (imageLoader === noopImageLoader) {\n let builtInLoaderName = '';\n for (const loader of BUILT_IN_LOADERS) {\n if (loader.testUrl(ngSrc)) {\n builtInLoaderName = loader.name;\n break;\n }\n }\n if (builtInLoaderName) {\n console.warn(ɵformatRuntimeError(2962 /* MISSING_BUILTIN_LOADER */, `NgOptimizedImage: It looks like your images may be hosted on the ` +\n `${builtInLoaderName} CDN, but your app is not using Angular's ` +\n `built-in loader for that CDN. We recommend switching to use ` +\n `the built-in by calling \\`provide${builtInLoaderName}Loader()\\` ` +\n `in your \\`providers\\` and passing it your instance's base URL. ` +\n `If you don't want to use the built-in loader, define a custom ` +\n `loader function using IMAGE_LOADER to silence this warning.`));\n }\n }\n}\n/**\n * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used).\n */\nfunction assertNoNgSrcsetWithoutLoader(dir, imageLoader) {\n if (dir.ngSrcset && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which would result in the same image being used for all configured sizes. ` +\n `To fix this, provide a loader or remove the \\`ngSrcset\\` attribute from the image.`));\n }\n}\n/**\n * Warns if loaderParams is present and no loader is configured (i.e. the default one is being\n * used).\n */\nfunction assertNoLoaderParamsWithoutLoader(dir, imageLoader) {\n if (dir.loaderParams && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loaderParams\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which means that the loaderParams data will not be consumed and will not affect the URL. ` +\n `To fix this, provide a custom loader or remove the \\`loaderParams\\` attribute from the image.`));\n }\n}\n/**\n * This NgModule exports the `NgOptimizedImage` directive.\n * Import this module to enable the optimized image directive in your application.\n *\n * @publicApi\n * @deprecated In Angular v15, this NgModule is removed in favor of the NgOptimizedImage directive,\n * which is annotated as standalone.\n */\nclass NgOptimizedImageModule {\n}\nNgOptimizedImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgOptimizedImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, declarations: [NgOptimizedImage], exports: [NgOptimizedImage] });\nNgOptimizedImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgOptimizedImage],\n exports: [NgOptimizedImage],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgSwitch, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitch]' }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n }, propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgSwitchDefault, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* PARENT_NG_SWITCH_NOT_FOUND */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgPlural, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPlural]' }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgPluralCase, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgStyle, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{ selector: '[ngStyle]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngTemplateOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'` :\n '';\n return new ɵRuntimeError(2100 /* INVALID_PIPE_ARGUMENT */, errorMessage);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n onDestroy(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n onDestroy(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(_ref) {\n this._ref = _ref;\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AsyncPipe, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'async', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LowerCasePipe, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'lowercase' }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: TitleCasePipe, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'titlecase' }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: UpperCasePipe, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'uppercase' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_TIMEZONE`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n var _a;\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, (_a = timezone !== null && timezone !== void 0 ? timezone : this.defaultTimezone) !== null && _a !== void 0 ? _a : undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DatePipe, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nPluralPipe, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nPlural', pure: true }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nSelectPipe, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nSelect', pure: true }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: JsonPipe, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'json', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: KeyValuePipe, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'keyvalue', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DecimalPipe, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PercentPipe, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\nCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CurrencyPipe, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }];\n } });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SlicePipe, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'slice', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule, declarations: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });\nCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('13.4.0');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n //\n // @see https://html.spec.whatwg.org/#get-the-focusable-area\n // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n // @see https://html.spec.whatwg.org/#focusable-area\n elSelected.focus();\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch (_a) {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch (_a) {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Function that generates an ImageLoader for [Cloudflare Image\n * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular\n * provider. Note: Cloudflare has multiple image products - this provider is specifically for\n * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.\n *\n * @param path Your domain name, e.g. https://mysite.com\n * @returns Provider that provides an ImageLoader function\n *\n * @publicApi\n */\nconst provideCloudflareLoader = createImageLoader(createCloudflareUrl, ngDevMode ? ['https:///cdn-cgi/image//'] : undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createCloudflareUrl(path, config) {\n let params = `format=auto`;\n if (config.width) {\n params += `,width=${config.width}`;\n }\n // Cloudflare image URLs format:\n // https://developers.cloudflare.com/images/image-resizing/url-format/\n return `${path}/cdn-cgi/image/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, IMAGE_CONFIG, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgOptimizedImageModule, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => { var _a; return (_a = STANDARD_ENCODING_REPLACEMENTS[t]) !== null && _a !== void 0 ? _a : s; });\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n this.map.set(key, Array.isArray(value) ? value : [value]);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n var _a;\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = (_a = update.context) !== null && _a !== void 0 ? _a : this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n/**\n * When a pending